c_src : Regenerated c_src to prevent use of String contructors
authorLucas Bajolet <r4pass@hotmail.com>
Thu, 29 Aug 2013 19:58:08 +0000 (15:58 -0400)
committerLucas Bajolet <r4pass@hotmail.com>
Thu, 29 Aug 2013 21:23:39 +0000 (17:23 -0400)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

108 files changed:
c_src/abstracttool._sep.c
c_src/analysis___allocate_iregister_slots._sep.c
c_src/analysis___icode_dump._sep.c
c_src/analysis___inline_methods._sep.c
c_src/c_tools._sep.c
c_src/clib/gc_chooser.c [new file with mode: 0644]
c_src/clib/gc_chooser.h [new file with mode: 0644]
c_src/compiling._sep.c
c_src/compiling___compiling_base._sep.c
c_src/compiling___compiling_global._sep.c
c_src/compiling___compiling_icode._sep.c
c_src/compiling___icode_generator._sep.c
c_src/compiling___table_computation._sep.c
c_src/compiling_writer._sep.c
c_src/ffi._sep.c
c_src/ffi._sep.h
c_src/ffi___c._sep.c
c_src/ffi___ffi_base._sep.c
c_src/file._nitni.c
c_src/file._nitni.h
c_src/file_nit.c
c_src/global._sep.c
c_src/global___dead_method_removal._sep.c
c_src/global___inline_get_and_set._sep.c
c_src/global___instantiated_type_analysis._sep.c
c_src/global___reachable_as_init._sep.c
c_src/global___reachable_from_init_method_analysis._sep.c
c_src/global___reachable_method_analysis._sep.c
c_src/global___remove_out_of_init_get_test._sep.c
c_src/global___rta_analysis._sep.c
c_src/icode___icode_base._sep.c
c_src/icode___icode_builder._sep.c
c_src/icode___icode_tools._sep.c
c_src/location._sep.c
c_src/metamodel___abstractmetamodel._sep.c
c_src/metamodel___genericity._sep.c
c_src/metamodel___inheritance._sep.c
c_src/metamodel___partial_order._sep.c
c_src/metamodel___static_type._sep.c
c_src/metamodel___vararg._sep.c
c_src/mmloader._sep.c
c_src/native_interface._sep.c
c_src/native_interface___frontier._sep.c
c_src/native_interface___ni_metamodel._sep.c
c_src/native_interface___ni_tools._sep.c
c_src/nit_version._sep.c
c_src/nitc._build.sh
c_src/nitc._sep.c
c_src/nitc._tables.c
c_src/opts._sep.c
c_src/parser._sep.c
c_src/parser___lexer._sep.c
c_src/parser___parser_nodes._sep.c
c_src/parser___parser_nodes._sep.h
c_src/parser___parser_prod._sep.c
c_src/parser___parser_prod._sep.h
c_src/primitive_info._sep.c
c_src/program._sep.c
c_src/separate_options._sep.c
c_src/standard._sep.h
c_src/standard___collection._sep.c
c_src/standard___collection___abstract_collection._sep.c
c_src/standard___collection___abstract_collection._sep.h
c_src/standard___collection___array._sep.c
c_src/standard___collection___hash_collection._sep.c
c_src/standard___collection___list._sep.c
c_src/standard___collection___range._sep.c
c_src/standard___collection___sorter._sep.c
c_src/standard___environ._sep.c
c_src/standard___environ._sep.h
c_src/standard___exec._sep.c
c_src/standard___file._ffi.c [new file with mode: 0644]
c_src/standard___file._ffi.h [new file with mode: 0644]
c_src/standard___file._sep.c
c_src/standard___file._sep.h
c_src/standard___hash._sep.c
c_src/standard___kernel._sep.c
c_src/standard___kernel._sep.h
c_src/standard___math._sep.c
c_src/standard___stream._sep.c
c_src/standard___string._ffi.c
c_src/standard___string._sep.c
c_src/standard___string._sep.h
c_src/standard___string_search._sep.c
c_src/standard___string_search._sep.h
c_src/standard___time._ffi.c [new file with mode: 0644]
c_src/standard___time._ffi.h [new file with mode: 0644]
c_src/standard___time._sep.c
c_src/standard___time._sep.h
c_src/string._nitni.c
c_src/string._nitni.h
c_src/string_nit.c
c_src/string_nit.h
c_src/symbol._sep.h
c_src/syntax._sep.c
c_src/syntax___extern_inline._sep.c
c_src/syntax___extern_type_inheritance._sep.c
c_src/syntax___flow._sep.c
c_src/syntax___icode_generation._sep.c
c_src/syntax___mmbuilder._sep.c
c_src/syntax___mmbuilder._sep.h
c_src/syntax___scope._sep.c
c_src/syntax___syntax_base._sep.c
c_src/syntax___typing._sep.c
c_src/time._nitni.c
c_src/time._nitni.h
c_src/toolcontext._sep.c
c_src/utils._sep.c

index 1096734..121a5e4 100644 (file)
@@ -96,7 +96,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -107,7 +107,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString(" version ");
       REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -118,7 +118,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -140,7 +140,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("usage: ");
       REGB0 = TAG_Int(7);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_4 = fra.me.REG[2];
       register_static_object(&once_value_4);
     } else fra.me.REG[2] = once_value_4;
@@ -151,7 +151,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString(" [options] file...");
       REGB0 = TAG_Int(18);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
@@ -181,7 +181,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* abstracttool.nit:55 */
     REGB2 = REGB1;
@@ -193,7 +193,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_6) {
       fra.me.REG[2] = BOX_NativeString("usage: ");
       REGB2 = TAG_Int(7);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_6 = fra.me.REG[2];
       register_static_object(&once_value_6);
     } else fra.me.REG[2] = once_value_6;
@@ -204,7 +204,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     if (!once_value_7) {
       fra.me.REG[2] = BOX_NativeString(" [options] file...");
       REGB2 = TAG_Int(18);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_7 = fra.me.REG[2];
       register_static_object(&once_value_7);
     } else fra.me.REG[2] = once_value_7;
@@ -228,7 +228,7 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
   if (!once_value_8) {
     fra.me.REG[3] = BOX_NativeString("Syntax analysis");
     REGB2 = TAG_Int(15);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
     once_value_8 = fra.me.REG[3];
     register_static_object(&once_value_8);
   } else fra.me.REG[3] = once_value_8;
@@ -244,36 +244,36 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB0)) {
       /* abstracttool.nit:64 */
       REGB0 = REGB2;
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[3] = fra.me.REG[1];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -281,40 +281,40 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label9;
       label9: while(0);
       /* abstracttool.nit:65 */
       fra.me.REG[3] = CALL_mmloader___ToolContext___get_module_from_filename(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
       /* abstracttool.nit:66 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = REGB0;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label10;
     }
   }
@@ -407,7 +407,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("-");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -419,7 +419,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -430,7 +430,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -440,7 +440,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString(".full_class_hierarchy.new.dot");
     REGB0 = TAG_Int(29);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -460,7 +460,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -471,7 +471,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -481,7 +481,7 @@ void abstracttool___AbstractCompiler___dump_context_info(val_t p0){
   if (!once_value_8) {
     fra.me.REG[2] = BOX_NativeString(".module_hierarchy.new.dot");
     REGB0 = TAG_Int(25);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_8 = fra.me.REG[2];
     register_static_object(&once_value_8);
   } else fra.me.REG[2] = once_value_8;
@@ -554,7 +554,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -564,7 +564,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -576,7 +576,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -589,7 +589,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -599,7 +599,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString(".class_hierarchy.new.dot");
     REGB0 = TAG_Int(24);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -619,7 +619,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -629,7 +629,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString(".properties.log");
     REGB0 = TAG_Int(15);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
   } else fra.me.REG[2] = once_value_7;
@@ -670,7 +670,7 @@ void abstracttool___MMModule___dump_module_info(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[0] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_9 = fra.me.REG[0];
       register_static_object(&once_value_9);
     } else fra.me.REG[0] = once_value_9;
@@ -711,7 +711,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("class ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -722,7 +722,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -737,7 +737,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* abstracttool.nit:119 */
     REGB2 = REGB1;
@@ -761,7 +761,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("\tclass not visible in this module\n");
       REGB2 = TAG_Int(34);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -777,7 +777,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* abstracttool.nit:121 */
       REGB0 = REGB1;
@@ -787,7 +787,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString("\tclass is defined later in the hierarchy\n");
         REGB0 = TAG_Int(41);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
@@ -805,7 +805,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
   if (!once_value_9) {
     fra.me.REG[2] = BOX_NativeString("end # ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_9 = fra.me.REG[2];
     register_static_object(&once_value_9);
   } else fra.me.REG[2] = once_value_9;
@@ -816,7 +816,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
   if (!once_value_10) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_10 = fra.me.REG[0];
     register_static_object(&once_value_10);
   } else fra.me.REG[0] = once_value_10;
@@ -857,7 +857,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
         if (!once_value_6) {
           fra.me.REG[2] = BOX_NativeString("\t");
           REGB0 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_6 = fra.me.REG[2];
           register_static_object(&once_value_6);
         } else fra.me.REG[2] = once_value_6;
@@ -868,7 +868,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
         if (!once_value_7) {
           fra.me.REG[2] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_7 = fra.me.REG[2];
           register_static_object(&once_value_7);
         } else fra.me.REG[2] = once_value_7;
@@ -881,7 +881,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
         if (!once_value_8) {
           fra.me.REG[2] = BOX_NativeString("\n");
           REGB0 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_8 = fra.me.REG[2];
           register_static_object(&once_value_8);
         } else fra.me.REG[2] = once_value_8;
@@ -892,7 +892,7 @@ void abstracttool___MMLocalClass___dump_properties(val_t p0, val_t p1){
         stack_frame_head = fra.me.prev;
         return;
       }
-static const char LOCATE_abstracttool___AAnnotations___visit_all[] = "abstracttool::AAnnotations::(parser_prod::ANode::visit_all)";
+static const char LOCATE_abstracttool___AAnnotations___visit_all[] = "abstracttool::AAnnotations::(parser_nodes::ANode::visit_all)";
 void abstracttool___AAnnotations___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
index f632e09..b16b028 100644 (file)
@@ -117,7 +117,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* analysis/allocate_iregister_slots.nit:53 */
     REGB2 = REGB1;
@@ -135,7 +135,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
     REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* analysis/allocate_iregister_slots.nit:57 */
       REGB1 = REGB2;
@@ -199,7 +199,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* analysis/allocate_iregister_slots.nit:65 */
     REGB2 = REGB1;
@@ -250,7 +250,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
     REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* analysis/allocate_iregister_slots.nit:72 */
       REGB1 = REGB2;
@@ -349,7 +349,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___defe
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
       /* analysis/allocate_iregister_slots.nit:102 */
       if (UNTAG_Bool(REGB1)) {
@@ -403,7 +403,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* analysis/allocate_iregister_slots.nit:112 */
     REGB2 = REGB1;
@@ -425,7 +425,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
     /* analysis/allocate_iregister_slots.nit:114 */
     REGB1 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
     /* analysis/allocate_iregister_slots.nit:114 */
     ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]) = REGB0;
@@ -482,7 +482,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* analysis/allocate_iregister_slots.nit:126 */
     REGB2 = REGB1;
@@ -498,7 +498,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
     /* analysis/allocate_iregister_slots.nit:128 */
     REGB1 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]);
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
     /* analysis/allocate_iregister_slots.nit:128 */
     ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[2]) = REGB0;
@@ -563,7 +563,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visi
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* analysis/allocate_iregister_slots.nit:145 */
     REGB2 = REGB1;
@@ -777,7 +777,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___regi
       REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
       /* analysis/allocate_iregister_slots.nit:191 */
       REGB0 = REGB1;
@@ -873,7 +873,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free
       REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
       /* analysis/allocate_iregister_slots.nit:208 */
       REGB0 = REGB1;
@@ -900,7 +900,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* analysis/allocate_iregister_slots.nit:209 */
   if (UNTAG_Bool(REGB1)) {
@@ -1099,7 +1099,7 @@ void analysis___allocate_iregister_slots___SlotGroup___register(val_t p0, val_t
     /* analysis/allocate_iregister_slots.nit:253 */
     REGB0 = ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* analysis/allocate_iregister_slots.nit:253 */
     ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB1;
index 15046a5..f569343 100644 (file)
@@ -46,7 +46,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("Parameters: ");
       REGB0 = TAG_Int(12);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -55,7 +55,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -65,7 +65,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -97,7 +97,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("Result: ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
@@ -108,7 +108,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -125,7 +125,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* analysis/icode_dump.nit:38 */
   if (UNTAG_Bool(REGB1)) {
@@ -135,7 +135,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("StdSlots: ");
       REGB1 = TAG_Int(10);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_7 = fra.me.REG[3];
       register_static_object(&once_value_7);
     } else fra.me.REG[3] = once_value_7;
@@ -147,7 +147,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_8 = fra.me.REG[3];
       register_static_object(&once_value_8);
     } else fra.me.REG[3] = once_value_8;
@@ -164,7 +164,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
   /* analysis/icode_dump.nit:41 */
   if (UNTAG_Bool(REGB0)) {
@@ -174,7 +174,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[3] = BOX_NativeString("TagSlots: ");
       REGB0 = TAG_Int(10);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_9 = fra.me.REG[3];
       register_static_object(&once_value_9);
     } else fra.me.REG[3] = once_value_9;
@@ -186,7 +186,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
     if (!once_value_10) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_10 = fra.me.REG[3];
       register_static_object(&once_value_10);
     } else fra.me.REG[3] = once_value_10;
@@ -295,7 +295,7 @@ void analysis___icode_dump___IClosureDecl___dump(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("Closure: ");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -306,7 +306,7 @@ void analysis___icode_dump___IClosureDecl___dump(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -483,7 +483,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
         REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((fra.me.REG[3])==(NIT_NULL));
         /* analysis/icode_dump.nit:86 */
         REGB0 = REGB1;
@@ -493,7 +493,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
       /* analysis/icode_dump.nit:87 */
       REGB0 = ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]);
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* analysis/icode_dump.nit:87 */
       ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB1;
@@ -503,7 +503,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("r");
         REGB1 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -520,7 +520,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -542,7 +542,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
       /* analysis/icode_dump.nit:92 */
       REGB1 = ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]);
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
       /* analysis/icode_dump.nit:92 */
       ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB0;
@@ -555,7 +555,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("BREG");
           REGB0 = TAG_Int(4);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
         } else fra.me.REG[5] = once_value_4;
@@ -566,7 +566,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("(r");
           REGB0 = TAG_Int(2);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -583,7 +583,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString(")");
           REGB0 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_6 = fra.me.REG[5];
           register_static_object(&once_value_6);
         } else fra.me.REG[5] = once_value_6;
@@ -600,7 +600,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
           if (!once_value_7) {
             fra.me.REG[6] = BOX_NativeString("LREG");
             REGB0 = TAG_Int(4);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_7 = fra.me.REG[6];
             register_static_object(&once_value_7);
           } else fra.me.REG[6] = once_value_7;
@@ -611,7 +611,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
           if (!once_value_8) {
             fra.me.REG[6] = BOX_NativeString("(r");
             REGB0 = TAG_Int(2);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_8 = fra.me.REG[6];
             register_static_object(&once_value_8);
           } else fra.me.REG[6] = once_value_8;
@@ -628,7 +628,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
           if (!once_value_9) {
             fra.me.REG[6] = BOX_NativeString(")");
             REGB0 = TAG_Int(1);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_9 = fra.me.REG[6];
             register_static_object(&once_value_9);
           } else fra.me.REG[6] = once_value_9;
@@ -643,7 +643,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
           if (!once_value_10) {
             fra.me.REG[6] = BOX_NativeString("REG");
             REGB0 = TAG_Int(3);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_10 = fra.me.REG[6];
             register_static_object(&once_value_10);
           } else fra.me.REG[6] = once_value_10;
@@ -654,7 +654,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
           if (!once_value_11) {
             fra.me.REG[3] = BOX_NativeString("(r");
             REGB0 = TAG_Int(2);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_11 = fra.me.REG[3];
             register_static_object(&once_value_11);
           } else fra.me.REG[3] = once_value_11;
@@ -671,7 +671,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
           if (!once_value_12) {
             fra.me.REG[3] = BOX_NativeString(")");
             REGB0 = TAG_Int(1);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_12 = fra.me.REG[3];
             register_static_object(&once_value_12);
           } else fra.me.REG[3] = once_value_12;
@@ -736,7 +736,7 @@ val_t analysis___icode_dump___ICodeDumper___register_all(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -755,7 +755,7 @@ val_t analysis___icode_dump___ICodeDumper___register_all(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -833,7 +833,7 @@ val_t analysis___icode_dump___ICodeDumper___closdecl(val_t p0, val_t p1){
     /* analysis/icode_dump.nit:127 */
     REGB0 = ATTR_analysis___icode_dump___ICodeDumper____last_clos(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* analysis/icode_dump.nit:127 */
     ATTR_analysis___icode_dump___ICodeDumper____last_clos(fra.me.REG[0]) = REGB1;
@@ -843,7 +843,7 @@ val_t analysis___icode_dump___ICodeDumper___closdecl(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("clos");
       REGB1 = TAG_Int(4);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -860,7 +860,7 @@ val_t analysis___icode_dump___ICodeDumper___closdecl(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -927,7 +927,7 @@ val_t analysis___icode_dump___ICodeDumper___lab(val_t p0, val_t p1){
     /* analysis/icode_dump.nit:142 */
     REGB0 = ATTR_analysis___icode_dump___ICodeDumper____last_label(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* analysis/icode_dump.nit:142 */
     ATTR_analysis___icode_dump___ICodeDumper____last_label(fra.me.REG[0]) = REGB1;
@@ -937,7 +937,7 @@ val_t analysis___icode_dump___ICodeDumper___lab(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("[l");
       REGB1 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -954,7 +954,7 @@ val_t analysis___icode_dump___ICodeDumper___lab(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("]");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -1021,7 +1021,7 @@ val_t analysis___icode_dump___ICodeDumper___line(val_t p0, val_t p1){
     /* analysis/icode_dump.nit:156 */
     REGB0 = ATTR_analysis___icode_dump___ICodeDumper____last_line(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* analysis/icode_dump.nit:156 */
     ATTR_analysis___icode_dump___ICodeDumper____last_line(fra.me.REG[0]) = REGB1;
@@ -1031,7 +1031,7 @@ val_t analysis___icode_dump___ICodeDumper___line(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -1048,7 +1048,7 @@ val_t analysis___icode_dump___ICodeDumper___line(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -1129,16 +1129,16 @@ void analysis___icode_dump___ICodeDumper___write(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_indent_level", LOCATE_analysis___icode_dump, 172);
   }
   REGB1 = ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* analysis/icode_dump.nit:173 */
       REGB2 = TAG_Int(0);
@@ -1146,21 +1146,21 @@ void analysis___icode_dump___ICodeDumper___write(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[3] = BOX_NativeString("    ");
         REGB2 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
         once_value_1 = fra.me.REG[3];
         register_static_object(&once_value_1);
       } else fra.me.REG[3] = once_value_1;
       fra.me.REG[3] = fra.me.REG[3];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
       CALL_standard___file___Object___printn(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -1212,7 +1212,7 @@ void analysis___icode_dump___ICodeDumper___indent(val_t p0){
   /* analysis/icode_dump.nit:181 */
   REGB0 = ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* analysis/icode_dump.nit:181 */
   ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB1;
@@ -1237,7 +1237,7 @@ void analysis___icode_dump___ICodeDumper___unindent(val_t p0){
   /* analysis/icode_dump.nit:184 */
   REGB0 = ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* analysis/icode_dump.nit:184 */
   ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB1;
@@ -1288,7 +1288,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1297,7 +1297,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -1331,7 +1331,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[7] = BOX_NativeString("        ... ");
       REGB0 = TAG_Int(12);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_3 = fra.me.REG[7];
       register_static_object(&once_value_3);
     } else fra.me.REG[7] = once_value_3;
@@ -1342,7 +1342,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_4 = fra.me.REG[5];
       register_static_object(&once_value_4);
     } else fra.me.REG[5] = once_value_4;
@@ -1360,7 +1360,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_5 = fra.me.REG[5];
       register_static_object(&once_value_5);
     } else fra.me.REG[5] = once_value_5;
@@ -1371,7 +1371,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[5] = BOX_NativeString(": ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_6 = fra.me.REG[5];
       register_static_object(&once_value_6);
     } else fra.me.REG[5] = once_value_6;
@@ -1400,7 +1400,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_7 = fra.me.REG[5];
       register_static_object(&once_value_7);
     } else fra.me.REG[5] = once_value_7;
@@ -1410,7 +1410,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_8 = fra.me.REG[5];
       register_static_object(&once_value_8);
     } else fra.me.REG[5] = once_value_8;
@@ -1421,7 +1421,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_9 = fra.me.REG[5];
       register_static_object(&once_value_9);
     } else fra.me.REG[5] = once_value_9;
@@ -1431,7 +1431,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_10) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_10 = fra.me.REG[5];
       register_static_object(&once_value_10);
     } else fra.me.REG[5] = once_value_10;
@@ -1446,7 +1446,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_11) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_11 = fra.me.REG[5];
       register_static_object(&once_value_11);
     } else fra.me.REG[5] = once_value_11;
@@ -1456,7 +1456,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_12) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_12 = fra.me.REG[4];
       register_static_object(&once_value_12);
     } else fra.me.REG[4] = once_value_12;
@@ -1467,7 +1467,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_13) {
       fra.me.REG[2] = BOX_NativeString(" := ");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_13 = fra.me.REG[2];
       register_static_object(&once_value_13);
     } else fra.me.REG[2] = once_value_13;
@@ -1478,7 +1478,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_14) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_14 = fra.me.REG[0];
       register_static_object(&once_value_14);
     } else fra.me.REG[0] = once_value_14;
@@ -1488,7 +1488,7 @@ void analysis___icode_dump___ICode___dump(val_t p0, val_t p1){
     if (!once_value_15) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_15 = fra.me.REG[3];
       register_static_object(&once_value_15);
     } else fra.me.REG[3] = once_value_15;
@@ -1521,7 +1521,7 @@ val_t analysis___icode_dump___ICode___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("???");
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -1621,7 +1621,7 @@ void analysis___icode_dump___ICodeN___dump(val_t p0, val_t p1){
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("CLOSURE = NULL");
           REGB0 = TAG_Int(14);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_2 = fra.me.REG[1];
           register_static_object(&once_value_2);
         } else fra.me.REG[1] = once_value_2;
@@ -1632,7 +1632,7 @@ void analysis___icode_dump___ICodeN___dump(val_t p0, val_t p1){
         if (!once_value_3) {
           fra.me.REG[1] = BOX_NativeString("CLOSURE");
           REGB0 = TAG_Int(7);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_3 = fra.me.REG[1];
           register_static_object(&once_value_3);
         } else fra.me.REG[1] = once_value_3;
@@ -1704,7 +1704,7 @@ void analysis___icode_dump___ISeq___dump(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -1715,7 +1715,7 @@ void analysis___icode_dump___ISeq___dump(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString(":");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -1776,7 +1776,7 @@ void analysis___icode_dump___IIf___dump(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("IF(");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1788,7 +1788,7 @@ void analysis___icode_dump___IIf___dump(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(") {");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -1807,7 +1807,7 @@ void analysis___icode_dump___IIf___dump(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("} ELSE {");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -1824,7 +1824,7 @@ void analysis___icode_dump___IIf___dump(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -1860,7 +1860,7 @@ void analysis___icode_dump___ILoop___dump(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("LOOP {");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -1877,7 +1877,7 @@ void analysis___icode_dump___ILoop___dump(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -1911,7 +1911,7 @@ void analysis___icode_dump___ILoop___dump(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -1922,7 +1922,7 @@ void analysis___icode_dump___ILoop___dump(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[0] = BOX_NativeString(":");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_5 = fra.me.REG[0];
       register_static_object(&once_value_5);
     } else fra.me.REG[0] = once_value_5;
@@ -1981,7 +1981,7 @@ val_t analysis___icode_dump___IEscape___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("ESCAPE ");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1993,7 +1993,7 @@ val_t analysis___icode_dump___IEscape___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2031,7 +2031,7 @@ val_t analysis___icode_dump___IAbort___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("ABORT (\"");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2041,7 +2041,7 @@ val_t analysis___icode_dump___IAbort___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("\", \"");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2051,7 +2051,7 @@ val_t analysis___icode_dump___IAbort___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\")");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -2090,7 +2090,7 @@ val_t analysis___icode_dump___ICall___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CALL ");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2102,7 +2102,7 @@ val_t analysis___icode_dump___ICall___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2114,7 +2114,7 @@ val_t analysis___icode_dump___ICall___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2154,7 +2154,7 @@ val_t analysis___icode_dump___INew___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("NEW ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2166,7 +2166,7 @@ val_t analysis___icode_dump___INew___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(".");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2178,7 +2178,7 @@ val_t analysis___icode_dump___INew___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -2190,7 +2190,7 @@ val_t analysis___icode_dump___INew___dump_intern(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -2229,7 +2229,7 @@ val_t analysis___icode_dump___ISuper___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("SUPER ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2241,7 +2241,7 @@ val_t analysis___icode_dump___ISuper___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2253,7 +2253,7 @@ val_t analysis___icode_dump___ISuper___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2292,7 +2292,7 @@ val_t analysis___icode_dump___IStaticCall___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("STATIC_CALL ");
     REGB0 = TAG_Int(12);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2304,7 +2304,7 @@ val_t analysis___icode_dump___IStaticCall___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2316,7 +2316,7 @@ val_t analysis___icode_dump___IStaticCall___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2353,7 +2353,7 @@ val_t analysis___icode_dump___IAllocateInstance___dump_intern(val_t p0, val_t p1
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("ALLOCATE NEW_");
     REGB0 = TAG_Int(13);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2365,7 +2365,7 @@ val_t analysis___icode_dump___IAllocateInstance___dump_intern(val_t p0, val_t p1
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2404,7 +2404,7 @@ val_t analysis___icode_dump___ICheckInstance___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CHECK_INSTANCE CHECKNEW_");
     REGB0 = TAG_Int(24);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2416,7 +2416,7 @@ val_t analysis___icode_dump___ICheckInstance___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2428,7 +2428,7 @@ val_t analysis___icode_dump___ICheckInstance___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2467,7 +2467,7 @@ val_t analysis___icode_dump___IInitAttributes___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("INIT_ATTRIBUTES INIT_ATTRIBUTES_");
     REGB0 = TAG_Int(32);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2479,7 +2479,7 @@ val_t analysis___icode_dump___IInitAttributes___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2491,7 +2491,7 @@ val_t analysis___icode_dump___IInitAttributes___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2530,7 +2530,7 @@ val_t analysis___icode_dump___IClosCall___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CLOS_CALL ");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2542,7 +2542,7 @@ val_t analysis___icode_dump___IClosCall___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2554,7 +2554,7 @@ val_t analysis___icode_dump___IClosCall___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2593,7 +2593,7 @@ val_t analysis___icode_dump___IAttrRead___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("ATTR_READ ");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2605,7 +2605,7 @@ val_t analysis___icode_dump___IAttrRead___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2617,7 +2617,7 @@ val_t analysis___icode_dump___IAttrRead___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2657,7 +2657,7 @@ val_t analysis___icode_dump___IAttrWrite___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("ATTR_WRITE ");
     REGB0 = TAG_Int(11);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2669,7 +2669,7 @@ val_t analysis___icode_dump___IAttrWrite___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2681,7 +2681,7 @@ val_t analysis___icode_dump___IAttrWrite___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(") := ");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -2693,7 +2693,7 @@ val_t analysis___icode_dump___IAttrWrite___dump_intern(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -2732,7 +2732,7 @@ val_t analysis___icode_dump___IAttrIsset___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("ATTR_ISSET ");
     REGB0 = TAG_Int(11);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2744,7 +2744,7 @@ val_t analysis___icode_dump___IAttrIsset___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2756,7 +2756,7 @@ val_t analysis___icode_dump___IAttrIsset___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2795,7 +2795,7 @@ val_t analysis___icode_dump___ITypeCheck___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CHECKTYPE ");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2807,7 +2807,7 @@ val_t analysis___icode_dump___ITypeCheck___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(" isa ");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2819,7 +2819,7 @@ val_t analysis___icode_dump___ITypeCheck___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2858,7 +2858,7 @@ val_t analysis___icode_dump___INative___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("NATIVE \"");
     REGB0 = TAG_Int(8);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2870,7 +2870,7 @@ val_t analysis___icode_dump___INative___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("\"(");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2882,7 +2882,7 @@ val_t analysis___icode_dump___INative___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2919,7 +2919,7 @@ val_t analysis___icode_dump___IIntValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("INTVALUE ");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2930,7 +2930,7 @@ val_t analysis___icode_dump___IIntValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2967,7 +2967,7 @@ val_t analysis___icode_dump___IBoolValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOOLVALUE ");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2979,7 +2979,7 @@ val_t analysis___icode_dump___IBoolValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3016,7 +3016,7 @@ val_t analysis___icode_dump___IStringValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("STRINGVALUE ");
     REGB0 = TAG_Int(12);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3027,7 +3027,7 @@ val_t analysis___icode_dump___IStringValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3064,7 +3064,7 @@ val_t analysis___icode_dump___ICharValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("CHARVALUE ");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3075,7 +3075,7 @@ val_t analysis___icode_dump___ICharValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3112,7 +3112,7 @@ val_t analysis___icode_dump___IFloatValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("FLOATVALUE ");
     REGB0 = TAG_Int(11);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3123,7 +3123,7 @@ val_t analysis___icode_dump___IFloatValue___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3161,7 +3161,7 @@ val_t analysis___icode_dump___IMove___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3173,7 +3173,7 @@ val_t analysis___icode_dump___IMove___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3212,7 +3212,7 @@ val_t analysis___icode_dump___IIs___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3224,7 +3224,7 @@ val_t analysis___icode_dump___IIs___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(" is ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -3236,7 +3236,7 @@ val_t analysis___icode_dump___IIs___dump_intern(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -3274,7 +3274,7 @@ val_t analysis___icode_dump___INot___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("NOT ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3286,7 +3286,7 @@ val_t analysis___icode_dump___INot___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3328,7 +3328,7 @@ void analysis___icode_dump___IOnce___dump(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -3345,7 +3345,7 @@ void analysis___icode_dump___IOnce___dump(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(" := ONCE {");
     REGB0 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -3364,7 +3364,7 @@ void analysis___icode_dump___IOnce___dump(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -3399,7 +3399,7 @@ val_t analysis___icode_dump___IHasClos___dump_intern(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("HASCLOS ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3411,7 +3411,7 @@ val_t analysis___icode_dump___IHasClos___dump_intern(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
index 07484ae..060668a 100644 (file)
@@ -319,7 +319,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
       if (!once_value_2) {
         fra.me.REG[3] = BOX_NativeString("Object");
         REGB0 = TAG_Int(6);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
       } else fra.me.REG[3] = once_value_2;
@@ -348,7 +348,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString("Int");
         REGB1 = TAG_Int(3);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
@@ -369,7 +369,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
         if (!once_value_6) {
           fra.me.REG[3] = BOX_NativeString("enumerate_to");
           REGB1 = TAG_Int(12);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
           once_value_6 = fra.me.REG[3];
           register_static_object(&once_value_6);
         } else fra.me.REG[3] = once_value_6;
@@ -392,7 +392,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
           if (!once_value_8) {
             fra.me.REG[3] = BOX_NativeString("enumerate_before");
             REGB2 = TAG_Int(16);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
             once_value_8 = fra.me.REG[3];
             register_static_object(&once_value_8);
           } else fra.me.REG[3] = once_value_8;
@@ -425,7 +425,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
       if (!once_value_10) {
         fra.me.REG[3] = BOX_NativeString("Array");
         REGB1 = TAG_Int(5);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_10 = fra.me.REG[3];
         register_static_object(&once_value_10);
       } else fra.me.REG[3] = once_value_10;
@@ -446,7 +446,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
         if (!once_value_12) {
           fra.me.REG[3] = BOX_NativeString("length");
           REGB1 = TAG_Int(6);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
           once_value_12 = fra.me.REG[3];
           register_static_object(&once_value_12);
         } else fra.me.REG[3] = once_value_12;
@@ -469,7 +469,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
           if (!once_value_14) {
             fra.me.REG[3] = BOX_NativeString("[]");
             REGB2 = TAG_Int(2);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
             once_value_14 = fra.me.REG[3];
             register_static_object(&once_value_14);
           } else fra.me.REG[3] = once_value_14;
@@ -494,7 +494,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
           if (!once_value_16) {
             fra.me.REG[3] = BOX_NativeString("iterate");
             REGB2 = TAG_Int(7);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
             once_value_16 = fra.me.REG[3];
             register_static_object(&once_value_16);
           } else fra.me.REG[3] = once_value_16;
@@ -527,7 +527,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
       if (!once_value_18) {
         fra.me.REG[3] = BOX_NativeString("AbstractArrayRead");
         REGB1 = TAG_Int(17);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_18 = fra.me.REG[3];
         register_static_object(&once_value_18);
       } else fra.me.REG[3] = once_value_18;
@@ -548,7 +548,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
         if (!once_value_20) {
           fra.me.REG[3] = BOX_NativeString("length");
           REGB1 = TAG_Int(6);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
           once_value_20 = fra.me.REG[3];
           register_static_object(&once_value_20);
         } else fra.me.REG[3] = once_value_20;
@@ -571,7 +571,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
           if (!once_value_22) {
             fra.me.REG[3] = BOX_NativeString("[]");
             REGB2 = TAG_Int(2);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
             once_value_22 = fra.me.REG[3];
             register_static_object(&once_value_22);
           } else fra.me.REG[3] = once_value_22;
@@ -608,7 +608,7 @@ val_t analysis___inline_methods___ICall___is_inlinable(val_t p0){
       if (!once_value_24) {
         fra.me.REG[3] = BOX_NativeString("Inline__");
         REGB1 = TAG_Int(8);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_24 = fra.me.REG[3];
         register_static_object(&once_value_24);
       } else fra.me.REG[3] = once_value_24;
index d1fc1e7..5032892 100644 (file)
@@ -337,7 +337,7 @@ void c_tools___CCompilationUnit___add_local_function(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -348,7 +348,7 @@ void c_tools___CCompilationUnit___add_local_function(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -361,7 +361,7 @@ void c_tools___CCompilationUnit___add_local_function(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -403,7 +403,7 @@ void c_tools___CCompilationUnit___add_exported_function(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -414,7 +414,7 @@ void c_tools___CCompilationUnit___add_exported_function(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -427,7 +427,7 @@ void c_tools___CCompilationUnit___add_exported_function(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -677,7 +677,7 @@ val_t c_tools___CFunction___to_writer(val_t p0){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -688,7 +688,7 @@ val_t c_tools___CFunction___to_writer(val_t p0){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("\n{\n");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -703,7 +703,7 @@ val_t c_tools___CFunction___to_writer(val_t p0){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -716,7 +716,7 @@ val_t c_tools___CFunction___to_writer(val_t p0){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("}\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
diff --git a/c_src/clib/gc_chooser.c b/c_src/clib/gc_chooser.c
new file mode 100644 (file)
index 0000000..5a8cffe
--- /dev/null
@@ -0,0 +1,123 @@
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+ *
+ * Copyright 2006-2009 Jean Privat <jean@pryen.org>
+ *
+ * This file is free software, which comes along with NIT.  This software is
+ * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without  even  the implied warranty of  MERCHANTABILITY or  FITNESS FOR A
+ * PARTICULAR PURPOSE.  You can modify it is you want,  provided this header
+ * is kept unaltered, and a notification of the changes is added.
+ * You  are  allowed  to  redistribute it and sell it, alone or is a part of
+ * another product.
+ */
+
+#include "gc_chooser.h"
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef ANDROID
+       #include <android/log.h>
+       #define PRINT_ERROR(...) ((void)__android_log_print(ANDROID_LOG_WARN, "nit", __VA_ARGS__))
+#else
+       #define PRINT_ERROR(...) ((void)fprintf(stderr, __VA_ARGS__))
+#endif
+
+enum gc_option { gc_opt_large, gc_opt_malloc, gc_opt_boehm } gc_option;
+
+#ifdef WITH_LIBGC
+#define GC_DEBUG
+#include <gc/gc.h>
+#endif
+
+void *nit_raw_alloc(size_t s0)
+{
+       switch (gc_option) {
+       case gc_opt_malloc: return malloc(s0);
+#ifdef WITH_LIBGC
+       case gc_opt_boehm: return GC_MALLOC_ATOMIC(s0);
+#endif
+
+       default: return nit_alloc(s0);
+       }
+}
+
+static void *large_alloc(size_t s0)
+{
+       static char * alloc_pos = NULL;
+       static size_t alloc_size = 0;
+       void * res;
+       size_t s = ((s0+3)/4)*4;
+       if(alloc_size < s) {
+               alloc_size = s + 1024*1024;
+               alloc_pos = (char *)calloc(alloc_size, 1);
+       }
+       res = alloc_pos;
+       alloc_size -= s;
+       alloc_pos += s;
+       return res;
+}
+
+void nit_gcollect(void) {
+       switch (gc_option) {
+#ifdef WITH_LIBGC
+       case gc_opt_boehm: GC_gcollect(); break;
+#endif
+       }
+}
+
+void *nit_alloc(size_t s0)
+{
+       switch (gc_option) {
+#ifdef WITH_LIBGC
+       case gc_opt_boehm: return GC_MALLOC(s0);
+#endif
+       case gc_opt_malloc: return calloc(1, s0);
+       case gc_opt_large:
+       default: return large_alloc(s0);
+       }
+}
+
+void initialize_gc_option(void) {
+       /* GC default */
+       char *def;
+#ifdef WITH_LIBGC
+       gc_option = gc_opt_boehm;
+       def = "boehm";
+#else
+       gc_option = gc_opt_malloc;
+       def = "malloc";
+#endif
+
+       /* Process GC runtime selection */
+       if (getenv("NIT_GC_OPTION") != NULL) {
+               char *opt=getenv("NIT_GC_OPTION");
+               if (strcmp(opt, "boehm")==0) {
+#ifdef WITH_LIBGC
+                       gc_option = gc_opt_boehm;
+#else
+               PRINT_ERROR( "Compiled without Boehm GC support. Using default '%s'.\n", def);
+#endif
+               } else if (strcmp(opt, "malloc")==0) {
+                       gc_option = gc_opt_malloc;
+               } else if (strcmp(opt, "large")==0) {
+                       gc_option = gc_opt_large;
+               } else if (strcmp(opt, "help")==0) {
+                       PRINT_ERROR( "NIT_GC_OPTION accepts 'malloc', 'large'"
+#ifdef WITH_LIBGC
+                                       ", 'boehm'"
+#endif
+                                       ". Default is '%s'.\n", def);
+                       exit(1);
+               } else {
+                       PRINT_ERROR( "Invalid GC option in NIT_GC_OPTION environment variable. Using default '%s'.\n", def);
+               }
+       }
+
+       /* Initialize GC (if needed) */
+       switch(gc_option) {
+#ifdef WITH_LIBGC
+               case gc_opt_boehm: GC_INIT(); break;
+#endif
+               default: break; /* Nothing */
+       }
+}
diff --git a/c_src/clib/gc_chooser.h b/c_src/clib/gc_chooser.h
new file mode 100644 (file)
index 0000000..4d1d03a
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef NIT_GC_CHOOSER_H
+#define NIT_GC_CHOOSER_H
+
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+ *
+ * This file is free software, which comes along with NIT.  This software is
+ * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without  even  the implied warranty of  MERCHANTABILITY or  FITNESS FOR A
+ * PARTICULAR PURPOSE.  You can modify it is you want,  provided this header
+ * is kept unaltered, and a notification of the changes is added.
+ * You  are  allowed  to  redistribute it and sell it, alone or is a part of
+ * another product.
+ */
+
+#include <stdio.h>
+
+/* GC and memory management */
+void *nit_alloc(size_t); /* allocate memory to store an object with an object header */
+void *nit_raw_alloc(size_t); /* allocate raw memory to store a raw stram of byte */
+void nit_gcollect(void); /* force a garbage collection */
+void initialize_gc_option(void); /* Select the wanted GC using envvar `NIT_GC_OPTION` */
+
+#endif
index c939fdc..33c35ad 100644 (file)
@@ -69,7 +69,7 @@ void compiling___Program___compile_prog(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("none");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -88,7 +88,7 @@ void compiling___Program___compile_prog(val_t p0){
     if (!once_value_3) {
       fra.me.REG[1] = BOX_NativeString("C");
       REGB0 = TAG_Int(1);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_3 = fra.me.REG[1];
       register_static_object(&once_value_3);
     } else fra.me.REG[1] = once_value_3;
@@ -108,7 +108,7 @@ void compiling___Program___compile_prog(val_t p0){
       if (!once_value_4) {
         fra.me.REG[2] = BOX_NativeString("icode");
         REGB0 = TAG_Int(5);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_4 = fra.me.REG[2];
         register_static_object(&once_value_4);
       } else fra.me.REG[2] = once_value_4;
@@ -179,7 +179,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("$CLIBDIR/nit_main.c");
     REGB0 = TAG_Int(19);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -190,7 +190,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("$CLIBDIR/gc.c");
     REGB0 = TAG_Int(13);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -201,7 +201,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("$CLIBDIR/gc_static_objects_list.c");
     REGB0 = TAG_Int(33);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -212,7 +212,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("Generating C code");
     REGB0 = TAG_Int(17);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -233,7 +233,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("Generating main, tables and makefile ...");
     REGB0 = TAG_Int(40);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_6 = fra.me.REG[3];
     register_static_object(&once_value_6);
   } else fra.me.REG[3] = once_value_6;
@@ -307,7 +307,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("#include <nit_common.h>");
     REGB0 = TAG_Int(23);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -323,7 +323,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -334,7 +334,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -346,7 +346,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[4] = BOX_NativeString("._tables.c");
     REGB0 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_4 = fra.me.REG[4];
     register_static_object(&once_value_4);
   } else fra.me.REG[4] = once_value_4;
@@ -364,7 +364,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   if (!once_value_5) {
     fra.me.REG[5] = BOX_NativeString("/* This C file is generated by NIT to compile program ");
     REGB0 = TAG_Int(54);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_5 = fra.me.REG[5];
     register_static_object(&once_value_5);
   } else fra.me.REG[5] = once_value_5;
@@ -376,7 +376,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   if (!once_value_6) {
     fra.me.REG[5] = BOX_NativeString(". */\n");
     REGB0 = TAG_Int(5);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_6 = fra.me.REG[5];
     register_static_object(&once_value_6);
   } else fra.me.REG[5] = once_value_6;
@@ -431,7 +431,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[2] = BOX_NativeString("#include \"");
       REGB0 = TAG_Int(10);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_8 = fra.me.REG[2];
       register_static_object(&once_value_8);
     } else fra.me.REG[2] = once_value_8;
@@ -442,7 +442,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[0] = BOX_NativeString("\"\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_9 = fra.me.REG[0];
       register_static_object(&once_value_9);
     } else fra.me.REG[0] = once_value_9;
@@ -536,7 +536,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("Generating C code for module: ");
     REGB0 = TAG_Int(30);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -548,7 +548,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -563,7 +563,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("#include <nit_common.h>");
     REGB0 = TAG_Int(23);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -578,7 +578,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -590,7 +590,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString("._nitni.h");
       REGB0 = TAG_Int(9);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -603,7 +603,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[5] = BOX_NativeString("#include \"");
       REGB0 = TAG_Int(10);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_6 = fra.me.REG[5];
       register_static_object(&once_value_6);
     } else fra.me.REG[5] = once_value_6;
@@ -613,7 +613,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[2] = BOX_NativeString("\"");
       REGB0 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_7 = fra.me.REG[2];
       register_static_object(&once_value_7);
     } else fra.me.REG[2] = once_value_7;
@@ -627,7 +627,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_8 = fra.me.REG[2];
       register_static_object(&once_value_8);
     } else fra.me.REG[2] = once_value_8;
@@ -639,7 +639,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[2] = BOX_NativeString("._nitni.c");
       REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_9 = fra.me.REG[2];
       register_static_object(&once_value_9);
     } else fra.me.REG[2] = once_value_9;
@@ -653,7 +653,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_10) {
       fra.me.REG[6] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_10 = fra.me.REG[6];
       register_static_object(&once_value_10);
     } else fra.me.REG[6] = once_value_10;
@@ -664,7 +664,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_11) {
       fra.me.REG[6] = BOX_NativeString("/");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_11 = fra.me.REG[6];
       register_static_object(&once_value_11);
     } else fra.me.REG[6] = once_value_11;
@@ -674,7 +674,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_12) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_12 = fra.me.REG[4];
       register_static_object(&once_value_12);
     } else fra.me.REG[4] = once_value_12;
@@ -693,7 +693,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_13) {
       fra.me.REG[2] = BOX_NativeString(".nit");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_13 = fra.me.REG[2];
       register_static_object(&once_value_13);
     } else fra.me.REG[2] = once_value_13;
@@ -703,7 +703,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     if (!once_value_14) {
       fra.me.REG[5] = BOX_NativeString(".nit.c");
       REGB0 = TAG_Int(6);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_14 = fra.me.REG[5];
       register_static_object(&once_value_14);
     } else fra.me.REG[5] = once_value_14;
@@ -720,7 +720,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_15) {
         fra.me.REG[4] = BOX_NativeString("_nit.c");
         REGB0 = TAG_Int(6);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_15 = fra.me.REG[4];
         register_static_object(&once_value_15);
       } else fra.me.REG[4] = once_value_15;
@@ -743,7 +743,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_16) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_16 = fra.me.REG[4];
         register_static_object(&once_value_16);
       } else fra.me.REG[4] = once_value_16;
@@ -754,7 +754,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_17) {
         fra.me.REG[4] = BOX_NativeString("._ffi.h");
         REGB0 = TAG_Int(7);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_17 = fra.me.REG[4];
         register_static_object(&once_value_17);
       } else fra.me.REG[4] = once_value_17;
@@ -767,7 +767,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_18) {
         fra.me.REG[2] = BOX_NativeString("#include \"");
         REGB0 = TAG_Int(10);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_18 = fra.me.REG[2];
         register_static_object(&once_value_18);
       } else fra.me.REG[2] = once_value_18;
@@ -777,7 +777,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_19) {
         fra.me.REG[5] = BOX_NativeString("\"");
         REGB0 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_19 = fra.me.REG[5];
         register_static_object(&once_value_19);
       } else fra.me.REG[5] = once_value_19;
@@ -791,7 +791,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_20) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_20 = fra.me.REG[5];
         register_static_object(&once_value_20);
       } else fra.me.REG[5] = once_value_20;
@@ -802,7 +802,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_21) {
         fra.me.REG[5] = BOX_NativeString("._ffi.c");
         REGB0 = TAG_Int(7);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_21 = fra.me.REG[5];
         register_static_object(&once_value_21);
       } else fra.me.REG[5] = once_value_21;
@@ -816,7 +816,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_22) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_22 = fra.me.REG[6];
         register_static_object(&once_value_22);
       } else fra.me.REG[6] = once_value_22;
@@ -827,7 +827,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_23) {
         fra.me.REG[6] = BOX_NativeString("/");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_23 = fra.me.REG[6];
         register_static_object(&once_value_23);
       } else fra.me.REG[6] = once_value_23;
@@ -837,7 +837,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_24) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_24 = fra.me.REG[4];
         register_static_object(&once_value_24);
       } else fra.me.REG[4] = once_value_24;
@@ -859,7 +859,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_25) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_25 = fra.me.REG[4];
     register_static_object(&once_value_25);
   } else fra.me.REG[4] = once_value_25;
@@ -870,7 +870,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_26) {
     fra.me.REG[4] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_26 = fra.me.REG[4];
     register_static_object(&once_value_26);
   } else fra.me.REG[4] = once_value_26;
@@ -880,7 +880,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_27) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_27 = fra.me.REG[4];
     register_static_object(&once_value_27);
   } else fra.me.REG[4] = once_value_27;
@@ -894,7 +894,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_28) {
     fra.me.REG[6] = BOX_NativeString("/* This C header file is generated by NIT to compile modules and programs that requires ");
     REGB0 = TAG_Int(88);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_28 = fra.me.REG[6];
     register_static_object(&once_value_28);
   } else fra.me.REG[6] = once_value_28;
@@ -906,7 +906,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_29) {
     fra.me.REG[6] = BOX_NativeString(". */\n");
     REGB0 = TAG_Int(5);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_29 = fra.me.REG[6];
     register_static_object(&once_value_29);
   } else fra.me.REG[6] = once_value_29;
@@ -920,7 +920,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_30) {
     fra.me.REG[6] = BOX_NativeString("#ifndef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_30 = fra.me.REG[6];
     register_static_object(&once_value_30);
   } else fra.me.REG[6] = once_value_30;
@@ -931,7 +931,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_31) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_31 = fra.me.REG[6];
     register_static_object(&once_value_31);
   } else fra.me.REG[6] = once_value_31;
@@ -942,7 +942,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_32) {
     fra.me.REG[6] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_32 = fra.me.REG[6];
     register_static_object(&once_value_32);
   } else fra.me.REG[6] = once_value_32;
@@ -956,7 +956,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_33) {
     fra.me.REG[6] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_33 = fra.me.REG[6];
     register_static_object(&once_value_33);
   } else fra.me.REG[6] = once_value_33;
@@ -967,7 +967,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_34) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_34 = fra.me.REG[6];
     register_static_object(&once_value_34);
   } else fra.me.REG[6] = once_value_34;
@@ -978,7 +978,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_35) {
     fra.me.REG[6] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_35 = fra.me.REG[6];
     register_static_object(&once_value_35);
   } else fra.me.REG[6] = once_value_35;
@@ -993,18 +993,18 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     nit_abort("Reciever is null", NULL, LOCATE_compiling, 134);
   }
   fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1018,16 +1018,16 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
       /* compiling/compiling.nit:134 */
       REGB1 = TAG_Int(3);
@@ -1035,7 +1035,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_36) {
         fra.me.REG[9] = BOX_NativeString("#include \"");
         REGB1 = TAG_Int(10);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+        fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
         once_value_36 = fra.me.REG[9];
         register_static_object(&once_value_36);
       } else fra.me.REG[9] = once_value_36;
@@ -1046,7 +1046,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       if (!once_value_37) {
         fra.me.REG[7] = BOX_NativeString("\"\n");
         REGB1 = TAG_Int(2);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
         once_value_37 = fra.me.REG[7];
         register_static_object(&once_value_37);
       } else fra.me.REG[7] = once_value_37;
@@ -1054,14 +1054,14 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
       fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
       CALL_standard___stream___OStream___write(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label38;
     }
   }
@@ -1073,7 +1073,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_39) {
     fra.me.REG[6] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_39 = fra.me.REG[6];
     register_static_object(&once_value_39);
   } else fra.me.REG[6] = once_value_39;
@@ -1087,7 +1087,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_40) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_40 = fra.me.REG[4];
     register_static_object(&once_value_40);
   } else fra.me.REG[4] = once_value_40;
@@ -1098,7 +1098,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_41) {
     fra.me.REG[4] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_41 = fra.me.REG[4];
     register_static_object(&once_value_41);
   } else fra.me.REG[4] = once_value_41;
@@ -1109,7 +1109,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_42) {
     fra.me.REG[4] = BOX_NativeString(".");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_42 = fra.me.REG[4];
     register_static_object(&once_value_42);
   } else fra.me.REG[4] = once_value_42;
@@ -1120,7 +1120,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_43) {
     fra.me.REG[4] = BOX_NativeString(".c");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_43 = fra.me.REG[4];
     register_static_object(&once_value_43);
   } else fra.me.REG[4] = once_value_43;
@@ -1136,7 +1136,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_44) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_44 = fra.me.REG[4];
     register_static_object(&once_value_44);
   } else fra.me.REG[4] = once_value_44;
@@ -1146,7 +1146,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_45) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_45 = fra.me.REG[6];
     register_static_object(&once_value_45);
   } else fra.me.REG[6] = once_value_45;
@@ -1161,7 +1161,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_46) {
     fra.me.REG[6] = BOX_NativeString("/* This C file is generated by NIT to compile module ");
     REGB0 = TAG_Int(53);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_46 = fra.me.REG[6];
     register_static_object(&once_value_46);
   } else fra.me.REG[6] = once_value_46;
@@ -1172,7 +1172,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_47) {
     fra.me.REG[0] = BOX_NativeString(". */\n");
     REGB0 = TAG_Int(5);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_47 = fra.me.REG[0];
     register_static_object(&once_value_47);
   } else fra.me.REG[0] = once_value_47;
@@ -1186,7 +1186,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_48) {
     fra.me.REG[0] = BOX_NativeString("#include \"");
     REGB0 = TAG_Int(10);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_48 = fra.me.REG[0];
     register_static_object(&once_value_48);
   } else fra.me.REG[0] = once_value_48;
@@ -1196,7 +1196,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   if (!once_value_49) {
     fra.me.REG[2] = BOX_NativeString("\"\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_49 = fra.me.REG[2];
     register_static_object(&once_value_49);
   } else fra.me.REG[2] = once_value_49;
index 5871c76..f7eba5a 100644 (file)
@@ -501,7 +501,7 @@ void compiling___compiling_base___CProgram___init(val_t p0, val_t p1, int* init_
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -512,7 +512,7 @@ void compiling___compiling_base___CProgram___init(val_t p0, val_t p1, int* init_
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -525,7 +525,7 @@ void compiling___compiling_base___CProgram___init(val_t p0, val_t p1, int* init_
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("._build.sh");
     REGB0 = TAG_Int(10);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -704,7 +704,7 @@ val_t compiling___compiling_base___CProgram___module_header_name(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -715,7 +715,7 @@ val_t compiling___compiling_base___CProgram___module_header_name(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString(".");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -726,7 +726,7 @@ val_t compiling___compiling_base___CProgram___module_header_name(val_t p0, val_t
   if (!once_value_4) {
     fra.me.REG[4] = BOX_NativeString(".h");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_4 = fra.me.REG[4];
     register_static_object(&once_value_4);
   } else fra.me.REG[4] = once_value_4;
@@ -773,7 +773,7 @@ val_t compiling___compiling_base___CProgram___get_file_ending(val_t p0){
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString("_glob");
       REGB0 = TAG_Int(5);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_1 = fra.me.REG[0];
       register_static_object(&once_value_1);
     } else fra.me.REG[0] = once_value_1;
@@ -782,7 +782,7 @@ val_t compiling___compiling_base___CProgram___get_file_ending(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("_sep");
       REGB0 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -865,7 +865,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -879,7 +879,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* compiling/compiling_base.nit:89 */
     REGB2 = REGB1;
@@ -889,7 +889,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("-v");
       REGB2 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -904,7 +904,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
     /* compiling/compiling_base.nit:91 */
     if (UNTAG_Bool(REGB1)) {
@@ -912,7 +912,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("-vv");
         REGB1 = TAG_Int(3);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -927,7 +927,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_4) {
     fra.me.REG[7] = BOX_NativeString("-I ");
     REGB1 = TAG_Int(3);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
     once_value_4 = fra.me.REG[7];
     register_static_object(&once_value_4);
   } else fra.me.REG[7] = once_value_4;
@@ -938,7 +938,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_5) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
     once_value_5 = fra.me.REG[7];
     register_static_object(&once_value_5);
   } else fra.me.REG[7] = once_value_5;
@@ -950,7 +950,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_6) {
     fra.me.REG[6] = BOX_NativeString("#!/bin/sh\n");
     REGB1 = TAG_Int(10);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
     once_value_6 = fra.me.REG[6];
     register_static_object(&once_value_6);
   } else fra.me.REG[6] = once_value_6;
@@ -962,7 +962,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_7) {
     fra.me.REG[5] = BOX_NativeString("# This shell script is generated by NIT to compile the program ");
     REGB1 = TAG_Int(63);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_7 = fra.me.REG[5];
     register_static_object(&once_value_7);
   } else fra.me.REG[5] = once_value_7;
@@ -976,7 +976,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_8) {
     fra.me.REG[5] = BOX_NativeString(".\n");
     REGB1 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_8 = fra.me.REG[5];
     register_static_object(&once_value_8);
   } else fra.me.REG[5] = once_value_8;
@@ -990,7 +990,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_9) {
     fra.me.REG[5] = BOX_NativeString("CLIBDIR=\"");
     REGB1 = TAG_Int(9);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_9 = fra.me.REG[5];
     register_static_object(&once_value_9);
   } else fra.me.REG[5] = once_value_9;
@@ -1006,7 +1006,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_10) {
     fra.me.REG[5] = BOX_NativeString("\"\n");
     REGB1 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_10 = fra.me.REG[5];
     register_static_object(&once_value_10);
   } else fra.me.REG[5] = once_value_10;
@@ -1020,7 +1020,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_11) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_11 = fra.me.REG[5];
     register_static_object(&once_value_11);
   } else fra.me.REG[5] = once_value_11;
@@ -1036,7 +1036,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_12) {
     fra.me.REG[5] = BOX_NativeString("/gccx ");
     REGB1 = TAG_Int(6);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_12 = fra.me.REG[5];
     register_static_object(&once_value_12);
   } else fra.me.REG[5] = once_value_12;
@@ -1046,7 +1046,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_13) {
     fra.me.REG[3] = BOX_NativeString(" -d ");
     REGB1 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_13 = fra.me.REG[3];
     register_static_object(&once_value_13);
   } else fra.me.REG[3] = once_value_13;
@@ -1057,7 +1057,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_14) {
     fra.me.REG[3] = BOX_NativeString(" -I $CLIBDIR ");
     REGB1 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_14 = fra.me.REG[3];
     register_static_object(&once_value_14);
   } else fra.me.REG[3] = once_value_14;
@@ -1067,7 +1067,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_15) {
     fra.me.REG[5] = BOX_NativeString(" ");
     REGB1 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_15 = fra.me.REG[5];
     register_static_object(&once_value_15);
   } else fra.me.REG[5] = once_value_15;
@@ -1077,7 +1077,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_16) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_16 = fra.me.REG[5];
     register_static_object(&once_value_16);
   } else fra.me.REG[5] = once_value_16;
@@ -1107,7 +1107,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     if (!once_value_17) {
       fra.me.REG[5] = BOX_NativeString(" -o ");
       REGB1 = TAG_Int(4);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
       once_value_17 = fra.me.REG[5];
       register_static_object(&once_value_17);
     } else fra.me.REG[5] = once_value_17;
@@ -1123,7 +1123,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     if (!once_value_18) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
       once_value_18 = fra.me.REG[5];
       register_static_object(&once_value_18);
     } else fra.me.REG[5] = once_value_18;
@@ -1142,7 +1142,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_19) {
         fra.me.REG[5] = BOX_NativeString(" -o ");
         REGB1 = TAG_Int(4);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_19 = fra.me.REG[5];
         register_static_object(&once_value_19);
       } else fra.me.REG[5] = once_value_19;
@@ -1156,7 +1156,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_20) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_20 = fra.me.REG[5];
         register_static_object(&once_value_20);
       } else fra.me.REG[5] = once_value_20;
@@ -1171,7 +1171,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_21) {
         fra.me.REG[5] = BOX_NativeString(" -o ");
         REGB1 = TAG_Int(4);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_21 = fra.me.REG[5];
         register_static_object(&once_value_21);
       } else fra.me.REG[5] = once_value_21;
@@ -1185,7 +1185,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_22) {
         fra.me.REG[5] = BOX_NativeString("_");
         REGB1 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_22 = fra.me.REG[5];
         register_static_object(&once_value_22);
       } else fra.me.REG[5] = once_value_22;
@@ -1196,7 +1196,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_23) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_23 = fra.me.REG[5];
         register_static_object(&once_value_23);
       } else fra.me.REG[5] = once_value_23;
@@ -1212,7 +1212,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     if (!once_value_24) {
       fra.me.REG[6] = BOX_NativeString(" -O");
       REGB1 = TAG_Int(3);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
       once_value_24 = fra.me.REG[6];
       register_static_object(&once_value_24);
     } else fra.me.REG[6] = once_value_24;
@@ -1226,7 +1226,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     if (!once_value_25) {
       fra.me.REG[6] = BOX_NativeString(" -x \"-c\"");
       REGB1 = TAG_Int(8);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
       once_value_25 = fra.me.REG[6];
       register_static_object(&once_value_25);
     } else fra.me.REG[6] = once_value_25;
@@ -1235,18 +1235,18 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   }
   /* compiling/compiling_base.nit:113 */
   fra.me.REG[6] = CALL_compiling___compiling_base___ToolContext___cc_libs(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
@@ -1260,16 +1260,16 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
       /* compiling/compiling_base.nit:113 */
       REGB2 = TAG_Int(3);
@@ -1277,7 +1277,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_26) {
         fra.me.REG[7] = BOX_NativeString(" -l ");
         REGB2 = TAG_Int(4);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_26 = fra.me.REG[7];
         register_static_object(&once_value_26);
       } else fra.me.REG[7] = once_value_26;
@@ -1287,7 +1287,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_27) {
         fra.me.REG[0] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
         once_value_27 = fra.me.REG[0];
         register_static_object(&once_value_27);
       } else fra.me.REG[0] = once_value_27;
@@ -1295,32 +1295,32 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label28;
     }
   }
   label28: while(0);
   /* compiling/compiling_base.nit:114 */
   fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___cc_lib_paths(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -1334,16 +1334,16 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
       /* compiling/compiling_base.nit:114 */
       REGB2 = TAG_Int(3);
@@ -1351,7 +1351,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_29) {
         fra.me.REG[7] = BOX_NativeString(" -x \"-L ");
         REGB2 = TAG_Int(8);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_29 = fra.me.REG[7];
         register_static_object(&once_value_29);
       } else fra.me.REG[7] = once_value_29;
@@ -1361,7 +1361,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_30) {
         fra.me.REG[3] = BOX_NativeString("\"");
         REGB2 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
         once_value_30 = fra.me.REG[3];
         register_static_object(&once_value_30);
       } else fra.me.REG[3] = once_value_30;
@@ -1369,32 +1369,32 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
       fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label31;
     }
   }
   label31: while(0);
   /* compiling/compiling_base.nit:115 */
   fra.me.REG[4] = CALL_compiling___compiling_base___ToolContext___cc_include_paths(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1408,16 +1408,16 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
       /* compiling/compiling_base.nit:115 */
       REGB2 = TAG_Int(3);
@@ -1425,7 +1425,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_32) {
         fra.me.REG[3] = BOX_NativeString(" -x \"-I ");
         REGB2 = TAG_Int(8);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
         once_value_32 = fra.me.REG[3];
         register_static_object(&once_value_32);
       } else fra.me.REG[3] = once_value_32;
@@ -1435,7 +1435,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       if (!once_value_33) {
         fra.me.REG[5] = BOX_NativeString("\"");
         REGB2 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
         once_value_33 = fra.me.REG[5];
         register_static_object(&once_value_33);
       } else fra.me.REG[5] = once_value_33;
@@ -1443,14 +1443,14 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
       fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label34;
     }
   }
@@ -1461,7 +1461,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_35) {
     fra.me.REG[4] = BOX_NativeString(" \"$@\" \\\n  ");
     REGB1 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_35 = fra.me.REG[4];
     register_static_object(&once_value_35);
   } else fra.me.REG[4] = once_value_35;
@@ -1471,7 +1471,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_36) {
     fra.me.REG[4] = BOX_NativeString("\\\n  ");
     REGB1 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_36 = fra.me.REG[4];
     register_static_object(&once_value_36);
   } else fra.me.REG[4] = once_value_36;
@@ -1481,7 +1481,7 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (!once_value_37) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB1 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_37 = fra.me.REG[4];
     register_static_object(&once_value_37);
   } else fra.me.REG[4] = once_value_37;
@@ -1520,7 +1520,7 @@ void compiling___compiling_base___CProgram___run_c_compiler(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Building");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -1534,7 +1534,7 @@ void compiling___compiling_base___CProgram___run_c_compiler(val_t p0){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("sh ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -1550,7 +1550,7 @@ void compiling___compiling_base___CProgram___run_c_compiler(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -1651,7 +1651,7 @@ void compiling___compiling_base___CompilerVisitor___add_indent(val_t p0, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* compiling/compiling_base.nit:147 */
   if (UNTAG_Bool(REGB1)) {
@@ -1659,7 +1659,7 @@ void compiling___compiling_base___CompilerVisitor___add_indent(val_t p0, val_t p
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("\t\t");
       REGB1 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -1674,35 +1674,35 @@ void compiling___compiling_base___CompilerVisitor___add_indent(val_t p0, val_t p
       nit_abort("Uninitialized attribute %s", "_indent_level", LOCATE_compiling___compiling_base, 150);
     }
     REGB0 = ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* compiling/compiling_base.nit:151 */
         if (!once_value_2) {
           fra.me.REG[0] = BOX_NativeString("  ");
           REGB2 = TAG_Int(2);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
           once_value_2 = fra.me.REG[0];
           register_static_object(&once_value_2);
         } else fra.me.REG[0] = once_value_2;
         fra.me.REG[0] = fra.me.REG[0];
         CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB1 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label3;
       }
     }
@@ -1738,7 +1738,7 @@ void compiling___compiling_base___CompilerVisitor___add_line_to(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -1793,7 +1793,7 @@ void compiling___compiling_base___CompilerVisitor___add_assignment(val_t p0, val
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_1 = fra.me.REG[1];
       register_static_object(&once_value_1);
     } else fra.me.REG[1] = once_value_1;
@@ -1805,7 +1805,7 @@ void compiling___compiling_base___CompilerVisitor___add_assignment(val_t p0, val
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -1839,7 +1839,7 @@ val_t compiling___compiling_base___CompilerVisitor___new_number(val_t p0){
   REGB0 = ATTR_compiling___compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0]);
   /* compiling/compiling_base.nit:180 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* compiling/compiling_base.nit:180 */
   ATTR_compiling___compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0]) = REGB1;
@@ -1867,7 +1867,7 @@ void compiling___compiling_base___CompilerVisitor___indent(val_t p0){
   /* compiling/compiling_base.nit:188 */
   REGB0 = ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* compiling/compiling_base.nit:188 */
   ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]) = REGB1;
@@ -1893,7 +1893,7 @@ void compiling___compiling_base___CompilerVisitor___unindent(val_t p0){
   /* compiling/compiling_base.nit:193 */
   REGB0 = ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* compiling/compiling_base.nit:193 */
   ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]) = REGB1;
@@ -1910,7 +1910,7 @@ void compiling___compiling_base___CompilerVisitor___unindent(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   /* compiling/compiling_base.nit:194 */
   if (UNTAG_Bool(REGB0)) {
@@ -2326,7 +2326,7 @@ val_t compiling___compiling_base___MMGlobalProperty___meth_call(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("CALL_");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2338,7 +2338,7 @@ val_t compiling___compiling_base___MMGlobalProperty___meth_call(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2374,7 +2374,7 @@ val_t compiling___compiling_base___MMGlobalProperty___attr_access(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("ATTR_");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2386,7 +2386,7 @@ val_t compiling___compiling_base___MMGlobalProperty___attr_access(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2422,7 +2422,7 @@ val_t compiling___compiling_base___MMGlobalProperty___vt_class_color(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("VTCOLOR_");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2434,7 +2434,7 @@ val_t compiling___compiling_base___MMGlobalProperty___vt_class_color(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2470,7 +2470,7 @@ val_t compiling___compiling_base___MMGlobalProperty___vt_class_id(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("VTID_");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2482,7 +2482,7 @@ val_t compiling___compiling_base___MMGlobalProperty___vt_class_id(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2537,7 +2537,7 @@ val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("___");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -2584,7 +2584,7 @@ val_t compiling___compiling_base___MMGlobalClass___id_id(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("ID_");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2595,7 +2595,7 @@ val_t compiling___compiling_base___MMGlobalClass___id_id(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2631,7 +2631,7 @@ val_t compiling___compiling_base___MMGlobalClass___color_id(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("COLOR_");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2642,7 +2642,7 @@ val_t compiling___compiling_base___MMGlobalClass___color_id(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2678,7 +2678,7 @@ val_t compiling___compiling_base___MMGlobalClass___init_table_pos_id(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("INIT_TABLE_POS_");
     REGB0 = TAG_Int(15);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2689,7 +2689,7 @@ val_t compiling___compiling_base___MMGlobalClass___init_table_pos_id(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2858,7 +2858,7 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("___");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -2937,7 +2937,7 @@ val_t compiling___compiling_base___MMLocalProperty___cname(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("___");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -2986,7 +2986,7 @@ val_t compiling___compiling_base___MMLocalProperty___super_meth_call(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("CALL_SUPER_");
     REGB0 = TAG_Int(11);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2997,7 +2997,7 @@ val_t compiling___compiling_base___MMLocalProperty___super_meth_call(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
index 06ef833..a611688 100644 (file)
@@ -46,7 +46,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("classtable_t TAG2VFT[4] = {NULL");
     REGB0 = TAG_Int(31);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -58,7 +58,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString("Int");
     REGB0 = TAG_Int(3);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -67,7 +67,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("Char");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -76,24 +76,24 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("Bool");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -107,16 +107,16 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* compiling/compiling_global.nit:38 */
       fra.me.REG[6] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
@@ -133,7 +133,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
         if (!once_value_8) {
           fra.me.REG[6] = BOX_NativeString(", (const classtable_t)VFT_");
           REGB1 = TAG_Int(26);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
           once_value_8 = fra.me.REG[6];
           register_static_object(&once_value_8);
         } else fra.me.REG[6] = once_value_8;
@@ -144,7 +144,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
         if (!once_value_9) {
           fra.me.REG[5] = BOX_NativeString("");
           REGB1 = TAG_Int(0);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
           once_value_9 = fra.me.REG[5];
           register_static_object(&once_value_9);
         } else fra.me.REG[5] = once_value_9;
@@ -157,21 +157,21 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
         if (!once_value_10) {
           fra.me.REG[7] = BOX_NativeString(", NULL");
           REGB1 = TAG_Int(6);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
           once_value_10 = fra.me.REG[7];
           register_static_object(&once_value_10);
         } else fra.me.REG[7] = once_value_10;
         fra.me.REG[7] = fra.me.REG[7];
         CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label11;
     }
   }
@@ -180,7 +180,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   if (!once_value_12) {
     fra.me.REG[0] = BOX_NativeString("};");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_12 = fra.me.REG[0];
     register_static_object(&once_value_12);
   } else fra.me.REG[0] = once_value_12;
@@ -282,7 +282,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("int main(int argc, char **argv) {");
     REGB0 = TAG_Int(33);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -294,7 +294,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("prepare_signals();");
     REGB0 = TAG_Int(18);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -304,7 +304,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("glob_argc = argc; glob_argv = argv;");
     REGB0 = TAG_Int(35);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -330,7 +330,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("No main");
       REGB0 = TAG_Int(7);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_4 = fra.me.REG[2];
       register_static_object(&once_value_4);
     } else fra.me.REG[2] = once_value_4;
@@ -346,7 +346,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
     if (!once_value_5) {
       fra.me.REG[3] = BOX_NativeString("G_sys = NEW_");
       REGB0 = TAG_Int(12);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
     } else fra.me.REG[3] = once_value_5;
@@ -361,7 +361,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
     if (!once_value_6) {
       fra.me.REG[2] = BOX_NativeString("();");
       REGB0 = TAG_Int(3);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_6 = fra.me.REG[2];
       register_static_object(&once_value_6);
     } else fra.me.REG[2] = once_value_6;
@@ -373,7 +373,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
     if (!once_value_7) {
       fra.me.REG[0] = BOX_NativeString("register_static_object(&G_sys);");
       REGB0 = TAG_Int(31);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_7 = fra.me.REG[0];
       register_static_object(&once_value_7);
     } else fra.me.REG[0] = once_value_7;
@@ -385,7 +385,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
     if (!once_value_8) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_8 = fra.me.REG[2];
       register_static_object(&once_value_8);
     } else fra.me.REG[2] = once_value_8;
@@ -402,7 +402,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
     if (!once_value_9) {
       fra.me.REG[2] = BOX_NativeString("(G_sys);");
       REGB0 = TAG_Int(8);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_9 = fra.me.REG[2];
       register_static_object(&once_value_9);
     } else fra.me.REG[2] = once_value_9;
@@ -415,7 +415,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
   if (!once_value_10) {
     fra.me.REG[0] = BOX_NativeString("return 0;");
     REGB0 = TAG_Int(9);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_10 = fra.me.REG[0];
     register_static_object(&once_value_10);
   } else fra.me.REG[0] = once_value_10;
@@ -427,7 +427,7 @@ void compiling___compiling_global___Program___compile_main_part(val_t p0, val_t
   if (!once_value_11) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_11 = fra.me.REG[0];
     register_static_object(&once_value_11);
   } else fra.me.REG[0] = once_value_11;
@@ -533,7 +533,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("extern const char LOCATE_");
     REGB0 = TAG_Int(25);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -544,7 +544,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("[];");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -564,7 +564,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("extern const int SFT_");
       REGB0 = TAG_Int(21);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -575,7 +575,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString("[];");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -588,18 +588,18 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
   REGB0 = TAG_Int(0);
   /* compiling/compiling_global.nit:89 */
   fra.me.REG[2] = CALL_compiling___table_computation___MMModule___local_table(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -613,16 +613,16 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
       /* compiling/compiling_global.nit:91 */
       fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
@@ -635,7 +635,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_5) {
           fra.me.REG[6] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_5 = fra.me.REG[6];
           register_static_object(&once_value_5);
         } else fra.me.REG[6] = once_value_5;
@@ -647,7 +647,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_6) {
           fra.me.REG[6] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_6 = fra.me.REG[6];
           register_static_object(&once_value_6);
         } else fra.me.REG[6] = once_value_6;
@@ -661,7 +661,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_7) {
           fra.me.REG[7] = BOX_NativeString("SFT_");
           REGB2 = TAG_Int(4);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_7 = fra.me.REG[7];
           register_static_object(&once_value_7);
         } else fra.me.REG[7] = once_value_7;
@@ -672,7 +672,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_8) {
           fra.me.REG[7] = BOX_NativeString("[");
           REGB2 = TAG_Int(1);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_8 = fra.me.REG[7];
           register_static_object(&once_value_8);
         } else fra.me.REG[7] = once_value_8;
@@ -683,7 +683,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_9) {
           fra.me.REG[7] = BOX_NativeString("]");
           REGB2 = TAG_Int(1);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_9 = fra.me.REG[7];
           register_static_object(&once_value_9);
         } else fra.me.REG[7] = once_value_9;
@@ -693,21 +693,21 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         fra.me.REG[5] = fra.me.REG[6];
         /* compiling/compiling_global.nit:95 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
         /* compiling/compiling_global.nit:95 */
         REGB0 = REGB2;
       }
       /* compiling/compiling_global.nit:97 */
       CALL_compiling___compiling_global___AbsTableElt___compile_macros(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label10;
     }
   }
@@ -812,16 +812,16 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
           nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 109);
         }
         REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB2)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB2)) {
             /* compiling/compiling_global.nit:109 */
             REGB2 = REGB0;
@@ -831,7 +831,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
             if (!once_value_14) {
               fra.me.REG[3] = BOX_NativeString("val_t p");
               REGB3 = TAG_Int(7);
-              fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
+              fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB3);
               once_value_14 = fra.me.REG[3];
               register_static_object(&once_value_14);
             } else fra.me.REG[3] = once_value_14;
@@ -842,7 +842,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
             if (!once_value_15) {
               fra.me.REG[3] = BOX_NativeString("");
               REGB2 = TAG_Int(0);
-              fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+              fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
               once_value_15 = fra.me.REG[3];
               register_static_object(&once_value_15);
             } else fra.me.REG[3] = once_value_15;
@@ -850,14 +850,14 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
             fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB2 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB0 = REGB2;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label16;
           }
         }
@@ -868,7 +868,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_17) {
           fra.me.REG[3] = BOX_NativeString("val_t NEW_");
           REGB0 = TAG_Int(10);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_17 = fra.me.REG[3];
           register_static_object(&once_value_17);
         } else fra.me.REG[3] = once_value_17;
@@ -879,7 +879,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_18) {
           fra.me.REG[3] = BOX_NativeString("_");
           REGB0 = TAG_Int(1);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_18 = fra.me.REG[3];
           register_static_object(&once_value_18);
         } else fra.me.REG[3] = once_value_18;
@@ -892,7 +892,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_19) {
           fra.me.REG[1] = BOX_NativeString("(");
           REGB0 = TAG_Int(1);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_19 = fra.me.REG[1];
           register_static_object(&once_value_19);
         } else fra.me.REG[1] = once_value_19;
@@ -901,7 +901,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_20) {
           fra.me.REG[1] = BOX_NativeString(", ");
           REGB0 = TAG_Int(2);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_20 = fra.me.REG[1];
           register_static_object(&once_value_20);
         } else fra.me.REG[1] = once_value_20;
@@ -911,7 +911,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         if (!once_value_21) {
           fra.me.REG[1] = BOX_NativeString(");");
           REGB0 = TAG_Int(2);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_21 = fra.me.REG[1];
           register_static_object(&once_value_21);
         } else fra.me.REG[1] = once_value_21;
@@ -958,7 +958,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("const char LOCATE_");
     REGB0 = TAG_Int(18);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -969,7 +969,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("[] = \"");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -986,7 +986,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("\";");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -1015,7 +1015,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString("const int SFT_");
     REGB0 = TAG_Int(14);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -1026,7 +1026,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("[");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_6 = fra.me.REG[3];
     register_static_object(&once_value_6);
   } else fra.me.REG[3] = once_value_6;
@@ -1046,7 +1046,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_7) {
     fra.me.REG[3] = BOX_NativeString("] = {");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_7 = fra.me.REG[3];
     register_static_object(&once_value_7);
   } else fra.me.REG[3] = once_value_7;
@@ -1058,18 +1058,18 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
   /* compiling/compiling_global.nit:129 */
   fra.me.REG[0] = CALL_compiling___table_computation___MMModule___local_table(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1083,16 +1083,16 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* compiling/compiling_global.nit:130 */
       fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
@@ -1100,21 +1100,21 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
       if (!once_value_8) {
         fra.me.REG[3] = BOX_NativeString(",");
         REGB1 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_8 = fra.me.REG[3];
         register_static_object(&once_value_8);
       } else fra.me.REG[3] = once_value_8;
       fra.me.REG[3] = fra.me.REG[3];
       fra.me.REG[3] = CALL_standard___string___String_____plus(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label9;
     }
   }
@@ -1125,7 +1125,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString("};");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
@@ -1209,7 +1209,7 @@ val_t compiling___compiling_global___ModuleTableEltGroup___value(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1224,7 +1224,7 @@ val_t compiling___compiling_global___ModuleTableEltGroup___value(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(" /* Group of ? */");
     REGB0 = TAG_Int(17);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -1268,18 +1268,18 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
   REGB0 = TAG_Int(0);
   /* compiling/compiling_global.nit:159 */
   fra.me.REG[0] = CALL_compiling___table_computation___ModuleTableEltGroup___elements(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1293,16 +1293,16 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
       /* compiling/compiling_global.nit:160 */
       REGB2 = TAG_Int(5);
@@ -1310,7 +1310,7 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
       if (!once_value_1) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_1 = fra.me.REG[6];
         register_static_object(&once_value_1);
       } else fra.me.REG[6] = once_value_1;
@@ -1320,7 +1320,7 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
       if (!once_value_2) {
         fra.me.REG[6] = BOX_NativeString(" + ");
         REGB2 = TAG_Int(3);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_2 = fra.me.REG[6];
         register_static_object(&once_value_2);
       } else fra.me.REG[6] = once_value_2;
@@ -1331,7 +1331,7 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
       if (!once_value_3) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_3 = fra.me.REG[6];
         register_static_object(&once_value_3);
       } else fra.me.REG[6] = once_value_3;
@@ -1341,18 +1341,18 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
       CALL_compiling___compiling_global___AbsTableElt___compile_macros(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5]);
       /* compiling/compiling_global.nit:161 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* compiling/compiling_global.nit:161 */
       REGB0 = REGB2;
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label4;
     }
   }
@@ -1393,7 +1393,7 @@ void compiling___compiling_global___TableEltMeth___compile_macros(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1404,7 +1404,7 @@ void compiling___compiling_global___TableEltMeth___compile_macros(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("(recv) ((");
     REGB0 = TAG_Int(9);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -1416,7 +1416,7 @@ void compiling___compiling_global___TableEltMeth___compile_macros(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("_t)CALL((recv), (");
     REGB0 = TAG_Int(17);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -1426,7 +1426,7 @@ void compiling___compiling_global___TableEltMeth___compile_macros(val_t p0, val_
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(")))");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -1497,7 +1497,7 @@ void compiling___compiling_global___TableEltSuper___compile_macros(val_t p0, val
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1508,7 +1508,7 @@ void compiling___compiling_global___TableEltSuper___compile_macros(val_t p0, val
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("(recv) ((");
     REGB0 = TAG_Int(9);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -1519,7 +1519,7 @@ void compiling___compiling_global___TableEltSuper___compile_macros(val_t p0, val
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("_t)CALL((recv), (");
     REGB0 = TAG_Int(17);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -1529,7 +1529,7 @@ void compiling___compiling_global___TableEltSuper___compile_macros(val_t p0, val
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(")))");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -1576,18 +1576,18 @@ val_t compiling___compiling_global___TableEltSuper___compile_to_c(val_t p0, val_
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[3])(fra.me.REG[3]);
   /* compiling/compiling_global.nit:192 */
   REGB0 = TAG_Bool(0);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1601,16 +1601,16 @@ val_t compiling___compiling_global___TableEltSuper___compile_to_c(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
       /* compiling/compiling_global.nit:195 */
       REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[1]));
@@ -1643,14 +1643,14 @@ val_t compiling___compiling_global___TableEltSuper___compile_to_c(val_t p0, val_
           }
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1693,7 +1693,7 @@ void compiling___compiling_global___TableEltVTClassColor___compile_macros(val_t
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1704,7 +1704,7 @@ void compiling___compiling_global___TableEltVTClassColor___compile_macros(val_t
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("(recv) (VAL2VFT(recv)[");
     REGB0 = TAG_Int(22);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -1714,7 +1714,7 @@ void compiling___compiling_global___TableEltVTClassColor___compile_macros(val_t
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("].i)");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -1786,7 +1786,7 @@ val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p
   if (!once_value_1) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_1 = fra.me.REG[7];
     register_static_object(&once_value_1);
   } else fra.me.REG[7] = once_value_1;
@@ -1799,7 +1799,7 @@ val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p
   if (!once_value_2) {
     fra.me.REG[6] = BOX_NativeString(" /* ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
   } else fra.me.REG[6] = once_value_2;
@@ -1812,7 +1812,7 @@ val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(": VT ");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -1823,7 +1823,7 @@ val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("::");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -1834,7 +1834,7 @@ val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString(" : color of ");
     REGB0 = TAG_Int(12);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -1845,7 +1845,7 @@ val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p
   if (!once_value_6) {
     fra.me.REG[5] = BOX_NativeString(" */");
     REGB0 = TAG_Int(3);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_6 = fra.me.REG[5];
     register_static_object(&once_value_6);
   } else fra.me.REG[5] = once_value_6;
@@ -1889,7 +1889,7 @@ void compiling___compiling_global___TableEltVTClassId___compile_macros(val_t p0,
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1900,7 +1900,7 @@ void compiling___compiling_global___TableEltVTClassId___compile_macros(val_t p0,
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("(recv) (VAL2VFT(recv)[");
     REGB0 = TAG_Int(22);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -1910,7 +1910,7 @@ void compiling___compiling_global___TableEltVTClassId___compile_macros(val_t p0,
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("].i)");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -1971,7 +1971,7 @@ val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0,
   if (!once_value_1) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
   } else fra.me.REG[6] = once_value_1;
@@ -1989,7 +1989,7 @@ val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0,
   if (!once_value_2) {
     fra.me.REG[6] = BOX_NativeString(" /* ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
   } else fra.me.REG[6] = once_value_2;
@@ -2002,7 +2002,7 @@ val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0,
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(": VT ");
     REGB0 = TAG_Int(5);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2013,7 +2013,7 @@ val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0,
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("::");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -2024,7 +2024,7 @@ val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0,
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString(" : id of ");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -2035,7 +2035,7 @@ val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0,
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString(" */");
     REGB0 = TAG_Int(3);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -2079,7 +2079,7 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -2090,7 +2090,7 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("(recv) ATTR(recv, (");
     REGB0 = TAG_Int(19);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2100,7 +2100,7 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -2148,7 +2148,7 @@ val_t compiling___compiling_global___TableEltAttr___compile_to_c(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("/* ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -2161,7 +2161,7 @@ val_t compiling___compiling_global___TableEltAttr___compile_to_c(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(": Attribute ");
     REGB0 = TAG_Int(12);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2172,7 +2172,7 @@ val_t compiling___compiling_global___TableEltAttr___compile_to_c(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("::");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -2183,7 +2183,7 @@ val_t compiling___compiling_global___TableEltAttr___compile_to_c(val_t p0, val_t
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString(" */");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -2240,7 +2240,7 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -2251,7 +2251,7 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(" (");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -2261,7 +2261,7 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -2321,7 +2321,7 @@ val_t compiling___compiling_global___TableEltClassId___value(val_t p0, val_t p1)
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2341,7 +2341,7 @@ val_t compiling___compiling_global___TableEltClassId___value(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(" /* Id of ");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2353,7 +2353,7 @@ val_t compiling___compiling_global___TableEltClassId___value(val_t p0, val_t p1)
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(" */");
     REGB0 = TAG_Int(3);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2431,24 +2431,24 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   REGB0 = TAG_Int(0);
   /* compiling/compiling_global.nit:285 */
   while(1) {
-    /* ../lib/standard/collection/array.nit:278 */
+    /* ../lib/standard/collection/array.nit:279 */
     fra.me.REG[5] = fra.me.REG[3];
     REGB1 = REGB0;
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Int(0);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -2456,26 +2456,26 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Bool(0);
       REGB2 = REGB3;
     }
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
     REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label1;
     label1: while(0);
     /* compiling/compiling_global.nit:285 */
@@ -2496,7 +2496,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
     if (UNTAG_Bool(REGB1)) {
       /* compiling/compiling_global.nit:286 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* compiling/compiling_global.nit:286 */
       REGB0 = REGB1;
@@ -2512,7 +2512,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   if (!once_value_3) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
     once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
   } else fra.me.REG[6] = once_value_3;
@@ -2523,7 +2523,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   if (!once_value_4) {
     fra.me.REG[6] = BOX_NativeString(" /* ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_4 = fra.me.REG[6];
     register_static_object(&once_value_4);
   } else fra.me.REG[6] = once_value_4;
@@ -2536,7 +2536,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(": ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -2547,7 +2547,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString(" < ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -2559,7 +2559,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString(": superclass init_table position */");
     REGB0 = TAG_Int(35);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -2620,7 +2620,7 @@ val_t compiling___compiling_global___TableEltClassColor___value(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2633,7 +2633,7 @@ val_t compiling___compiling_global___TableEltClassColor___value(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString(" /* Color of ");
     REGB0 = TAG_Int(13);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -2645,7 +2645,7 @@ val_t compiling___compiling_global___TableEltClassColor___value(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(" */");
     REGB0 = TAG_Int(3);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2696,7 +2696,7 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(val_t p0,
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -2708,7 +2708,7 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(val_t p0,
   if (!once_value_2) {
     fra.me.REG[5] = BOX_NativeString(" /* ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
   } else fra.me.REG[5] = once_value_2;
@@ -2721,7 +2721,7 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(val_t p0,
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(": ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2732,7 +2732,7 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(val_t p0,
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(" < ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -2744,7 +2744,7 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(val_t p0,
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString(": superclass typecheck marker */");
     REGB0 = TAG_Int(32);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -2809,7 +2809,7 @@ val_t compiling___compiling_global___TableEltClassSelfId___compile_to_c(val_t p0
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -2828,7 +2828,7 @@ val_t compiling___compiling_global___TableEltClassSelfId___compile_to_c(val_t p0
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" /* ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2841,7 +2841,7 @@ val_t compiling___compiling_global___TableEltClassSelfId___compile_to_c(val_t p0
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(": Identity */");
     REGB0 = TAG_Int(13);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2884,7 +2884,7 @@ val_t compiling___compiling_global___TableEltClassSelfName___compile_to_c(val_t
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("\"");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -2897,7 +2897,7 @@ val_t compiling___compiling_global___TableEltClassSelfName___compile_to_c(val_t
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("\" /* ");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2910,7 +2910,7 @@ val_t compiling___compiling_global___TableEltClassSelfName___compile_to_c(val_t
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(": Class Name */");
     REGB0 = TAG_Int(15);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2958,7 +2958,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("NativeArray");
     REGB1 = TAG_Int(11);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -2973,7 +2973,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   if (UNTAG_Bool(REGB1)) {
     /* compiling/compiling_global.nit:334 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
     /* compiling/compiling_global.nit:334 */
     REGB0 = REGB1;
@@ -2984,18 +2984,18 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
     /* compiling/compiling_global.nit:337 */
     fra.me.REG[2] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[2])(fra.me.REG[2]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB1 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB1 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -3009,31 +3009,31 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
         /* compiling/compiling_global.nit:339 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
         /* compiling/compiling_global.nit:339 */
         REGB0 = REGB2;
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = REGB2;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label2;
       }
     }
@@ -3045,7 +3045,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -3056,7 +3056,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(" /* ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -3069,7 +3069,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(": Object size (-1 if a NativeArray)*/");
     REGB0 = TAG_Int(37);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -3110,7 +3110,7 @@ val_t compiling___compiling_global___TableEltObjectId___compile_to_c(val_t p0, v
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("/* ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3123,7 +3123,7 @@ val_t compiling___compiling_global___TableEltObjectId___compile_to_c(val_t p0, v
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(": Object_id */");
     REGB0 = TAG_Int(14);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3164,7 +3164,7 @@ val_t compiling___compiling_global___TableEltVftPointer___compile_to_c(val_t p0,
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("/* ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3177,7 +3177,7 @@ val_t compiling___compiling_global___TableEltVftPointer___compile_to_c(val_t p0,
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(": Pointer to the classtable */");
     REGB0 = TAG_Int(30);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3228,7 +3228,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3242,7 +3242,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("extern const classtable_elt_t VFT_");
     REGB0 = TAG_Int(34);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -3253,7 +3253,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("[];");
     REGB0 = TAG_Int(3);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -3299,7 +3299,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("struct TBOX_");
       REGB0 = TAG_Int(12);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -3311,7 +3311,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -3324,7 +3324,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_6) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_6 = fra.me.REG[5];
       register_static_object(&once_value_6);
     } else fra.me.REG[5] = once_value_6;
@@ -3334,7 +3334,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_7) {
       fra.me.REG[5] = BOX_NativeString(" { const classtable_elt_t * vft; bigint object_id; ");
       REGB0 = TAG_Int(51);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_7 = fra.me.REG[5];
       register_static_object(&once_value_7);
     } else fra.me.REG[5] = once_value_7;
@@ -3344,7 +3344,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_8) {
       fra.me.REG[5] = BOX_NativeString(" val;};");
       REGB0 = TAG_Int(7);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_8 = fra.me.REG[5];
       register_static_object(&once_value_8);
     } else fra.me.REG[5] = once_value_8;
@@ -3358,7 +3358,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_9) {
       fra.me.REG[5] = BOX_NativeString("val_t BOX_");
       REGB0 = TAG_Int(10);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_9 = fra.me.REG[5];
       register_static_object(&once_value_9);
     } else fra.me.REG[5] = once_value_9;
@@ -3370,7 +3370,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_10) {
       fra.me.REG[5] = BOX_NativeString("(");
       REGB0 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_10 = fra.me.REG[5];
       register_static_object(&once_value_10);
     } else fra.me.REG[5] = once_value_10;
@@ -3380,7 +3380,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_11) {
       fra.me.REG[2] = BOX_NativeString(" val);");
       REGB0 = TAG_Int(6);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_11 = fra.me.REG[2];
       register_static_object(&once_value_11);
     } else fra.me.REG[2] = once_value_11;
@@ -3394,7 +3394,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_12) {
       fra.me.REG[2] = BOX_NativeString("#define UNBOX_");
       REGB0 = TAG_Int(14);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_12 = fra.me.REG[2];
       register_static_object(&once_value_12);
     } else fra.me.REG[2] = once_value_12;
@@ -3406,7 +3406,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_13) {
       fra.me.REG[0] = BOX_NativeString("(x) (((");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_13 = fra.me.REG[0];
       register_static_object(&once_value_13);
     } else fra.me.REG[0] = once_value_13;
@@ -3416,7 +3416,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     if (!once_value_14) {
       fra.me.REG[3] = BOX_NativeString(" *)(VAL2OBJ(x)))->val)");
       REGB0 = TAG_Int(22);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_14 = fra.me.REG[3];
       register_static_object(&once_value_14);
     } else fra.me.REG[3] = once_value_14;
@@ -3551,7 +3551,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* compiling/compiling_global.nit:386 */
   if (UNTAG_Bool(REGB2)) {
@@ -3567,7 +3567,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   if (!once_value_1) {
     fra.me.REG[6] = BOX_NativeString("const classtable_elt_t VFT_");
     REGB2 = TAG_Int(27);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
     once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
   } else fra.me.REG[6] = once_value_1;
@@ -3578,7 +3578,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   if (!once_value_2) {
     fra.me.REG[6] = BOX_NativeString("[");
     REGB2 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
     once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
   } else fra.me.REG[6] = once_value_2;
@@ -3589,7 +3589,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   if (!once_value_3) {
     fra.me.REG[6] = BOX_NativeString("] = {");
     REGB2 = TAG_Int(5);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
     once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
   } else fra.me.REG[6] = once_value_3;
@@ -3599,20 +3599,20 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* compiling/compiling_global.nit:391 */
   CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[5] = fra.me.REG[3];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB2 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB2 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -3626,16 +3626,16 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
       /* compiling/compiling_global.nit:393 */
       REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
@@ -3655,7 +3655,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_4) {
           fra.me.REG[8] = BOX_NativeString("{0} /* Class Hole :( */,");
           REGB1 = TAG_Int(24);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
           once_value_4 = fra.me.REG[8];
           register_static_object(&once_value_4);
         } else fra.me.REG[8] = once_value_4;
@@ -3668,7 +3668,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_5) {
           fra.me.REG[9] = BOX_NativeString("{(bigint) ");
           REGB1 = TAG_Int(10);
-          fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+          fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
           once_value_5 = fra.me.REG[9];
           register_static_object(&once_value_5);
         } else fra.me.REG[9] = once_value_5;
@@ -3683,7 +3683,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_6) {
           fra.me.REG[7] = BOX_NativeString("},");
           REGB1 = TAG_Int(2);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
           once_value_6 = fra.me.REG[7];
           register_static_object(&once_value_6);
         } else fra.me.REG[7] = once_value_6;
@@ -3692,14 +3692,14 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
         CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label7;
     }
   }
@@ -3716,7 +3716,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
   /* compiling/compiling_global.nit:399 */
   if (UNTAG_Bool(REGB2)) {
@@ -3724,7 +3724,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_8) {
       fra.me.REG[6] = BOX_NativeString("{0},");
       REGB2 = TAG_Int(4);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
       once_value_8 = fra.me.REG[6];
       register_static_object(&once_value_8);
     } else fra.me.REG[6] = once_value_8;
@@ -3736,7 +3736,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
     /* compiling/compiling_global.nit:400 */
     fra.me.REG[6] = CALL_standard___string___String_____star(fra.me.REG[6])(fra.me.REG[6], REGB2);
@@ -3748,7 +3748,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   if (!once_value_9) {
     fra.me.REG[6] = BOX_NativeString("};");
     REGB2 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
     once_value_9 = fra.me.REG[6];
     register_static_object(&once_value_9);
   } else fra.me.REG[6] = once_value_9;
@@ -3756,20 +3756,20 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   /* compiling/compiling_global.nit:404 */
   fra.me.REG[4] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[6] = fra.me.REG[4];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB2 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB2 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
@@ -3783,16 +3783,16 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
       /* compiling/compiling_global.nit:406 */
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
@@ -3812,7 +3812,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_10) {
           fra.me.REG[8] = BOX_NativeString("/* Instance Hole :( */");
           REGB0 = TAG_Int(22);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_10 = fra.me.REG[8];
           register_static_object(&once_value_10);
         } else fra.me.REG[8] = once_value_10;
@@ -3827,14 +3827,14 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         fra.me.REG[5] = CALL_compiling___compiling_global___TableElt___compile_to_c(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[2]);
         CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = REGB0;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label11;
     }
   }
@@ -3846,7 +3846,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   if (!once_value_12) {
     fra.me.REG[5] = BOX_NativeString("NativeArray");
     REGB2 = TAG_Int(11);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
     once_value_12 = fra.me.REG[5];
     register_static_object(&once_value_12);
   } else fra.me.REG[5] = once_value_12;
@@ -3863,7 +3863,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_13) {
       fra.me.REG[5] = BOX_NativeString("val_t NEW_NativeArray(size_t length, size_t size) {");
       REGB2 = TAG_Int(51);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_13 = fra.me.REG[5];
       register_static_object(&once_value_13);
     } else fra.me.REG[5] = once_value_13;
@@ -3875,7 +3875,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_14) {
       fra.me.REG[5] = BOX_NativeString("Nit_NativeArray array;");
       REGB2 = TAG_Int(22);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_14 = fra.me.REG[5];
       register_static_object(&once_value_14);
     } else fra.me.REG[5] = once_value_14;
@@ -3885,7 +3885,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_15) {
       fra.me.REG[5] = BOX_NativeString("array = (Nit_NativeArray)alloc(sizeof(struct Nit_NativeArray) + ((length - 1) * size));");
       REGB2 = TAG_Int(87);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_15 = fra.me.REG[5];
       register_static_object(&once_value_15);
     } else fra.me.REG[5] = once_value_15;
@@ -3897,7 +3897,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_16) {
       fra.me.REG[6] = BOX_NativeString("array->vft = (classtable_elt_t*)VFT_");
       REGB2 = TAG_Int(36);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
       once_value_16 = fra.me.REG[6];
       register_static_object(&once_value_16);
     } else fra.me.REG[6] = once_value_16;
@@ -3908,7 +3908,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_17) {
       fra.me.REG[6] = BOX_NativeString(";");
       REGB2 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
       once_value_17 = fra.me.REG[6];
       register_static_object(&once_value_17);
     } else fra.me.REG[6] = once_value_17;
@@ -3920,7 +3920,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_18) {
       fra.me.REG[5] = BOX_NativeString("array->object_id = object_id_counter;");
       REGB2 = TAG_Int(37);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_18 = fra.me.REG[5];
       register_static_object(&once_value_18);
     } else fra.me.REG[5] = once_value_18;
@@ -3930,7 +3930,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_19) {
       fra.me.REG[5] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
       REGB2 = TAG_Int(42);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_19 = fra.me.REG[5];
       register_static_object(&once_value_19);
     } else fra.me.REG[5] = once_value_19;
@@ -3940,7 +3940,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_20) {
       fra.me.REG[5] = BOX_NativeString("array->size = length;");
       REGB2 = TAG_Int(21);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_20 = fra.me.REG[5];
       register_static_object(&once_value_20);
     } else fra.me.REG[5] = once_value_20;
@@ -3950,7 +3950,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_21) {
       fra.me.REG[5] = BOX_NativeString("return OBJ2VAL(array);");
       REGB2 = TAG_Int(22);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_21 = fra.me.REG[5];
       register_static_object(&once_value_21);
     } else fra.me.REG[5] = once_value_21;
@@ -3962,7 +3962,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
     if (!once_value_22) {
       fra.me.REG[5] = BOX_NativeString("}");
       REGB2 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_22 = fra.me.REG[5];
       register_static_object(&once_value_22);
     } else fra.me.REG[5] = once_value_22;
@@ -3989,7 +3989,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_23) {
         fra.me.REG[6] = BOX_NativeString("INIT_ATTRIBUTES__");
         REGB2 = TAG_Int(17);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_23 = fra.me.REG[6];
         register_static_object(&once_value_23);
       } else fra.me.REG[6] = once_value_23;
@@ -4000,7 +4000,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_24) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_24 = fra.me.REG[6];
         register_static_object(&once_value_24);
       } else fra.me.REG[6] = once_value_24;
@@ -4014,7 +4014,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_25) {
         fra.me.REG[7] = BOX_NativeString("init var of ");
         REGB2 = TAG_Int(12);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_25 = fra.me.REG[7];
         register_static_object(&once_value_25);
       } else fra.me.REG[7] = once_value_25;
@@ -4026,7 +4026,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_26) {
         fra.me.REG[7] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_26 = fra.me.REG[7];
         register_static_object(&once_value_26);
       } else fra.me.REG[7] = once_value_26;
@@ -4059,7 +4059,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_27) {
         fra.me.REG[6] = BOX_NativeString("}");
         REGB2 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_27 = fra.me.REG[6];
         register_static_object(&once_value_27);
       } else fra.me.REG[6] = once_value_27;
@@ -4071,7 +4071,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_28) {
         fra.me.REG[8] = BOX_NativeString("val_t NEW_");
         REGB2 = TAG_Int(10);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_28 = fra.me.REG[8];
         register_static_object(&once_value_28);
       } else fra.me.REG[8] = once_value_28;
@@ -4082,7 +4082,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_29) {
         fra.me.REG[8] = BOX_NativeString("(void);");
         REGB2 = TAG_Int(7);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_29 = fra.me.REG[8];
         register_static_object(&once_value_29);
       } else fra.me.REG[8] = once_value_29;
@@ -4096,7 +4096,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_30) {
         fra.me.REG[8] = BOX_NativeString("val_t NEW_");
         REGB2 = TAG_Int(10);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_30 = fra.me.REG[8];
         register_static_object(&once_value_30);
       } else fra.me.REG[8] = once_value_30;
@@ -4107,7 +4107,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_31) {
         fra.me.REG[8] = BOX_NativeString("(void)");
         REGB2 = TAG_Int(6);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_31 = fra.me.REG[8];
         register_static_object(&once_value_31);
       } else fra.me.REG[8] = once_value_31;
@@ -4119,7 +4119,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_32) {
         fra.me.REG[6] = BOX_NativeString("{");
         REGB2 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_32 = fra.me.REG[6];
         register_static_object(&once_value_32);
       } else fra.me.REG[6] = once_value_32;
@@ -4131,7 +4131,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_33) {
         fra.me.REG[6] = BOX_NativeString("obj_t obj;");
         REGB2 = TAG_Int(10);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_33 = fra.me.REG[6];
         register_static_object(&once_value_33);
       } else fra.me.REG[6] = once_value_33;
@@ -4143,7 +4143,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_34) {
         fra.me.REG[8] = BOX_NativeString("obj = alloc(sizeof(val_t) * ");
         REGB2 = TAG_Int(28);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_34 = fra.me.REG[8];
         register_static_object(&once_value_34);
       } else fra.me.REG[8] = once_value_34;
@@ -4162,7 +4162,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_35) {
         fra.me.REG[4] = BOX_NativeString(");");
         REGB2 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_35 = fra.me.REG[4];
         register_static_object(&once_value_35);
       } else fra.me.REG[4] = once_value_35;
@@ -4176,7 +4176,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_36) {
         fra.me.REG[4] = BOX_NativeString("obj->vft = (classtable_elt_t*)VFT_");
         REGB2 = TAG_Int(34);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_36 = fra.me.REG[4];
         register_static_object(&once_value_36);
       } else fra.me.REG[4] = once_value_36;
@@ -4187,7 +4187,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_37) {
         fra.me.REG[4] = BOX_NativeString(";");
         REGB2 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_37 = fra.me.REG[4];
         register_static_object(&once_value_37);
       } else fra.me.REG[4] = once_value_37;
@@ -4199,7 +4199,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_38) {
         fra.me.REG[6] = BOX_NativeString("obj[1].object_id = object_id_counter;");
         REGB2 = TAG_Int(37);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_38 = fra.me.REG[6];
         register_static_object(&once_value_38);
       } else fra.me.REG[6] = once_value_38;
@@ -4209,7 +4209,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_39) {
         fra.me.REG[6] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
         REGB2 = TAG_Int(42);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_39 = fra.me.REG[6];
         register_static_object(&once_value_39);
       } else fra.me.REG[6] = once_value_39;
@@ -4219,7 +4219,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_40) {
         fra.me.REG[6] = BOX_NativeString("return OBJ2VAL(obj);");
         REGB2 = TAG_Int(20);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_40 = fra.me.REG[6];
         register_static_object(&once_value_40);
       } else fra.me.REG[6] = once_value_40;
@@ -4231,7 +4231,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_41) {
         fra.me.REG[6] = BOX_NativeString("}");
         REGB2 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
         once_value_41 = fra.me.REG[6];
         register_static_object(&once_value_41);
       } else fra.me.REG[6] = once_value_41;
@@ -4243,7 +4243,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_42) {
         fra.me.REG[4] = BOX_NativeString("CHECKNEW_");
         REGB2 = TAG_Int(9);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_42 = fra.me.REG[4];
         register_static_object(&once_value_42);
       } else fra.me.REG[4] = once_value_42;
@@ -4254,7 +4254,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_43) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_43 = fra.me.REG[4];
         register_static_object(&once_value_43);
       } else fra.me.REG[4] = once_value_43;
@@ -4268,7 +4268,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_44) {
         fra.me.REG[5] = BOX_NativeString("check new ");
         REGB2 = TAG_Int(10);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
         once_value_44 = fra.me.REG[5];
         register_static_object(&once_value_44);
       } else fra.me.REG[5] = once_value_44;
@@ -4280,7 +4280,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_45) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
         once_value_45 = fra.me.REG[5];
         register_static_object(&once_value_45);
       } else fra.me.REG[5] = once_value_45;
@@ -4313,7 +4313,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_46) {
         fra.me.REG[4] = BOX_NativeString("}");
         REGB2 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_46 = fra.me.REG[4];
         register_static_object(&once_value_46);
       } else fra.me.REG[4] = once_value_46;
@@ -4324,7 +4324,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters(fra.me.REG[4])(fra.me.REG[4]);
       REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
       /* compiling/compiling_global.nit:466 */
       REGB2 = TAG_Int(5);
@@ -4332,7 +4332,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_47) {
         fra.me.REG[8] = BOX_NativeString("int init_table[");
         REGB2 = TAG_Int(15);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_47 = fra.me.REG[8];
         register_static_object(&once_value_47);
       } else fra.me.REG[8] = once_value_47;
@@ -4343,7 +4343,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_48) {
         fra.me.REG[8] = BOX_NativeString("] = {0");
         REGB2 = TAG_Int(6);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_48 = fra.me.REG[8];
         register_static_object(&once_value_48);
       } else fra.me.REG[8] = once_value_48;
@@ -4352,13 +4352,13 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_49) {
         fra.me.REG[8] = BOX_NativeString(", 0");
         REGB2 = TAG_Int(3);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_49 = fra.me.REG[8];
         register_static_object(&once_value_49);
       } else fra.me.REG[8] = once_value_49;
       fra.me.REG[8] = fra.me.REG[8];
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
       /* compiling/compiling_global.nit:466 */
       fra.me.REG[8] = CALL_standard___string___String_____star(fra.me.REG[8])(fra.me.REG[8], REGB2);
@@ -4366,7 +4366,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
       if (!once_value_50) {
         fra.me.REG[8] = BOX_NativeString("};");
         REGB2 = TAG_Int(2);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_50 = fra.me.REG[8];
         register_static_object(&once_value_50);
       } else fra.me.REG[8] = once_value_50;
@@ -4397,7 +4397,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_62) {
           fra.me.REG[4] = BOX_NativeString("struct TBOX_");
           REGB2 = TAG_Int(12);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_62 = fra.me.REG[4];
           register_static_object(&once_value_62);
         } else fra.me.REG[4] = once_value_62;
@@ -4409,7 +4409,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_63) {
           fra.me.REG[4] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_63 = fra.me.REG[4];
           register_static_object(&once_value_63);
         } else fra.me.REG[4] = once_value_63;
@@ -4422,7 +4422,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_64) {
           fra.me.REG[8] = BOX_NativeString("val_t BOX_");
           REGB2 = TAG_Int(10);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
           once_value_64 = fra.me.REG[8];
           register_static_object(&once_value_64);
         } else fra.me.REG[8] = once_value_64;
@@ -4434,7 +4434,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_65) {
           fra.me.REG[8] = BOX_NativeString("(");
           REGB2 = TAG_Int(1);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
           once_value_65 = fra.me.REG[8];
           register_static_object(&once_value_65);
         } else fra.me.REG[8] = once_value_65;
@@ -4444,7 +4444,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_66) {
           fra.me.REG[3] = BOX_NativeString(" val) {");
           REGB2 = TAG_Int(7);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
           once_value_66 = fra.me.REG[3];
           register_static_object(&once_value_66);
         } else fra.me.REG[3] = once_value_66;
@@ -4460,7 +4460,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_67) {
           fra.me.REG[3] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
           once_value_67 = fra.me.REG[3];
           register_static_object(&once_value_67);
         } else fra.me.REG[3] = once_value_67;
@@ -4470,7 +4470,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_68) {
           fra.me.REG[3] = BOX_NativeString(" *box = (");
           REGB2 = TAG_Int(9);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
           once_value_68 = fra.me.REG[3];
           register_static_object(&once_value_68);
         } else fra.me.REG[3] = once_value_68;
@@ -4480,7 +4480,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_69) {
           fra.me.REG[3] = BOX_NativeString("*)alloc(sizeof(");
           REGB2 = TAG_Int(15);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
           once_value_69 = fra.me.REG[3];
           register_static_object(&once_value_69);
         } else fra.me.REG[3] = once_value_69;
@@ -4490,7 +4490,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_70) {
           fra.me.REG[0] = BOX_NativeString("));");
           REGB2 = TAG_Int(3);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
           once_value_70 = fra.me.REG[0];
           register_static_object(&once_value_70);
         } else fra.me.REG[0] = once_value_70;
@@ -4504,7 +4504,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_71) {
           fra.me.REG[0] = BOX_NativeString("box->vft = VFT_");
           REGB2 = TAG_Int(15);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
           once_value_71 = fra.me.REG[0];
           register_static_object(&once_value_71);
         } else fra.me.REG[0] = once_value_71;
@@ -4515,7 +4515,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_72) {
           fra.me.REG[2] = BOX_NativeString(";");
           REGB2 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
           once_value_72 = fra.me.REG[2];
           register_static_object(&once_value_72);
         } else fra.me.REG[2] = once_value_72;
@@ -4527,7 +4527,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_73) {
           fra.me.REG[4] = BOX_NativeString("box->val = val;");
           REGB2 = TAG_Int(15);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_73 = fra.me.REG[4];
           register_static_object(&once_value_73);
         } else fra.me.REG[4] = once_value_73;
@@ -4537,7 +4537,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_74) {
           fra.me.REG[4] = BOX_NativeString("box->object_id = object_id_counter;");
           REGB2 = TAG_Int(35);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_74 = fra.me.REG[4];
           register_static_object(&once_value_74);
         } else fra.me.REG[4] = once_value_74;
@@ -4547,7 +4547,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_75) {
           fra.me.REG[4] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
           REGB2 = TAG_Int(42);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_75 = fra.me.REG[4];
           register_static_object(&once_value_75);
         } else fra.me.REG[4] = once_value_75;
@@ -4557,7 +4557,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_76) {
           fra.me.REG[4] = BOX_NativeString("return OBJ2VAL(box);");
           REGB2 = TAG_Int(20);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_76 = fra.me.REG[4];
           register_static_object(&once_value_76);
         } else fra.me.REG[4] = once_value_76;
@@ -4569,7 +4569,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_77) {
           fra.me.REG[4] = BOX_NativeString("}");
           REGB2 = TAG_Int(1);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_77 = fra.me.REG[4];
           register_static_object(&once_value_77);
         } else fra.me.REG[4] = once_value_77;
@@ -4632,7 +4632,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_53) {
           fra.me.REG[2] = BOX_NativeString("NEW_");
           REGB0 = TAG_Int(4);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_53 = fra.me.REG[2];
           register_static_object(&once_value_53);
         } else fra.me.REG[2] = once_value_53;
@@ -4643,7 +4643,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_54) {
           fra.me.REG[2] = BOX_NativeString("_");
           REGB0 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_54 = fra.me.REG[2];
           register_static_object(&once_value_54);
         } else fra.me.REG[2] = once_value_54;
@@ -4656,7 +4656,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_55) {
           fra.me.REG[2] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_55 = fra.me.REG[2];
           register_static_object(&once_value_55);
         } else fra.me.REG[2] = once_value_55;
@@ -4671,7 +4671,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_56) {
           fra.me.REG[4] = BOX_NativeString("new ");
           REGB0 = TAG_Int(4);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_56 = fra.me.REG[4];
           register_static_object(&once_value_56);
         } else fra.me.REG[4] = once_value_56;
@@ -4682,7 +4682,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_57) {
           fra.me.REG[4] = BOX_NativeString(" ");
           REGB0 = TAG_Int(1);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_57 = fra.me.REG[4];
           register_static_object(&once_value_57);
         } else fra.me.REG[4] = once_value_57;
@@ -4693,7 +4693,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_58) {
           fra.me.REG[4] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_58 = fra.me.REG[4];
           register_static_object(&once_value_58);
         } else fra.me.REG[4] = once_value_58;
@@ -4732,7 +4732,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_59) {
           fra.me.REG[0] = BOX_NativeString("return ");
           REGB0 = TAG_Int(7);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
           once_value_59 = fra.me.REG[0];
           register_static_object(&once_value_59);
         } else fra.me.REG[0] = once_value_59;
@@ -4742,7 +4742,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_60) {
           fra.me.REG[3] = BOX_NativeString(";");
           REGB0 = TAG_Int(1);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_60 = fra.me.REG[3];
           register_static_object(&once_value_60);
         } else fra.me.REG[3] = once_value_60;
@@ -4758,7 +4758,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         if (!once_value_61) {
           fra.me.REG[2] = BOX_NativeString("}");
           REGB0 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_61 = fra.me.REG[2];
           register_static_object(&once_value_61);
         } else fra.me.REG[2] = once_value_61;
@@ -4836,7 +4836,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("int* init_table");
       REGB0 = TAG_Int(15);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -4875,7 +4875,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_2) {
       fra.me.REG[8] = BOX_NativeString("itpos");
       REGB0 = TAG_Int(5);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_2 = fra.me.REG[8];
       register_static_object(&once_value_2);
     } else fra.me.REG[8] = once_value_2;
@@ -4887,7 +4887,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_3) {
       fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_3 = fra.me.REG[8];
       register_static_object(&once_value_3);
     } else fra.me.REG[8] = once_value_3;
@@ -4901,7 +4901,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_4) {
       fra.me.REG[8] = BOX_NativeString("int ");
       REGB0 = TAG_Int(4);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_4 = fra.me.REG[8];
       register_static_object(&once_value_4);
     } else fra.me.REG[8] = once_value_4;
@@ -4911,7 +4911,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_5) {
       fra.me.REG[8] = BOX_NativeString(" = VAL2OBJ(");
       REGB0 = TAG_Int(11);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_5 = fra.me.REG[8];
       register_static_object(&once_value_5);
     } else fra.me.REG[8] = once_value_5;
@@ -4922,7 +4922,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_6) {
       fra.me.REG[8] = BOX_NativeString(")->vft[");
       REGB0 = TAG_Int(7);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_6 = fra.me.REG[8];
       register_static_object(&once_value_6);
     } else fra.me.REG[8] = once_value_6;
@@ -4935,7 +4935,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_7) {
       fra.me.REG[8] = BOX_NativeString("].i;");
       REGB0 = TAG_Int(4);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_7 = fra.me.REG[8];
       register_static_object(&once_value_7);
     } else fra.me.REG[8] = once_value_7;
@@ -4949,7 +4949,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_8) {
       fra.me.REG[8] = BOX_NativeString("if (init_table[");
       REGB0 = TAG_Int(15);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_8 = fra.me.REG[8];
       register_static_object(&once_value_8);
     } else fra.me.REG[8] = once_value_8;
@@ -4959,7 +4959,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_9) {
       fra.me.REG[8] = BOX_NativeString("]) return;");
       REGB0 = TAG_Int(10);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_9 = fra.me.REG[8];
       register_static_object(&once_value_9);
     } else fra.me.REG[8] = once_value_9;
@@ -4996,7 +4996,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_10) {
       fra.me.REG[2] = BOX_NativeString("init_table[");
       REGB0 = TAG_Int(11);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_10 = fra.me.REG[2];
       register_static_object(&once_value_10);
     } else fra.me.REG[2] = once_value_10;
@@ -5006,7 +5006,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_11) {
       fra.me.REG[6] = BOX_NativeString("] = 1;");
       REGB0 = TAG_Int(6);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_11 = fra.me.REG[6];
       register_static_object(&once_value_11);
     } else fra.me.REG[6] = once_value_11;
@@ -5033,7 +5033,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_12) {
       fra.me.REG[0] = BOX_NativeString("return;");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_12 = fra.me.REG[0];
       register_static_object(&once_value_12);
     } else fra.me.REG[0] = once_value_12;
@@ -5046,7 +5046,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_13) {
       fra.me.REG[6] = BOX_NativeString("return ");
       REGB0 = TAG_Int(7);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_13 = fra.me.REG[6];
       register_static_object(&once_value_13);
     } else fra.me.REG[6] = once_value_13;
@@ -5056,7 +5056,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     if (!once_value_14) {
       fra.me.REG[3] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_14 = fra.me.REG[3];
       register_static_object(&once_value_14);
     } else fra.me.REG[3] = once_value_14;
@@ -5071,7 +5071,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
   if (!once_value_15) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_15 = fra.me.REG[0];
     register_static_object(&once_value_15);
   } else fra.me.REG[0] = once_value_15;
index 20f99ce..446b182 100644 (file)
@@ -41,7 +41,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("NIT_NULL");
       REGB0 = TAG_Int(8);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -92,7 +92,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
         REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((fra.me.REG[4])==(NIT_NULL));
         /* compiling/compiling_icode.nit:42 */
         REGB0 = REGB1;
@@ -103,7 +103,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("NIT_NULL");
         REGB0 = TAG_Int(8);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -133,7 +133,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           if (!once_value_5) {
             fra.me.REG[7] = BOX_NativeString("REGB");
             REGB0 = TAG_Int(4);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
             once_value_5 = fra.me.REG[7];
             register_static_object(&once_value_5);
           } else fra.me.REG[7] = once_value_5;
@@ -144,7 +144,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           if (!once_value_6) {
             fra.me.REG[7] = BOX_NativeString("");
             REGB0 = TAG_Int(0);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
             once_value_6 = fra.me.REG[7];
             register_static_object(&once_value_6);
           } else fra.me.REG[7] = once_value_6;
@@ -181,7 +181,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
             if (!once_value_8) {
               fra.me.REG[6] = BOX_NativeString("closctx->REG[");
               REGB0 = TAG_Int(13);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
               once_value_8 = fra.me.REG[6];
               register_static_object(&once_value_8);
             } else fra.me.REG[6] = once_value_8;
@@ -192,7 +192,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
             if (!once_value_9) {
               fra.me.REG[6] = BOX_NativeString("]");
               REGB0 = TAG_Int(1);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
               once_value_9 = fra.me.REG[6];
               register_static_object(&once_value_9);
             } else fra.me.REG[6] = once_value_9;
@@ -219,7 +219,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
             if (!once_value_11) {
               fra.me.REG[6] = BOX_NativeString("fra.me.REG[");
               REGB0 = TAG_Int(11);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
               once_value_11 = fra.me.REG[6];
               register_static_object(&once_value_11);
             } else fra.me.REG[6] = once_value_11;
@@ -230,7 +230,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
             if (!once_value_12) {
               fra.me.REG[6] = BOX_NativeString("]");
               REGB0 = TAG_Int(1);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
               once_value_12 = fra.me.REG[6];
               register_static_object(&once_value_12);
             } else fra.me.REG[6] = once_value_12;
@@ -322,7 +322,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_number(val_t p0){
   /* compiling/compiling_icode.nit:81 */
   REGB0 = ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* compiling/compiling_icode.nit:81 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB1;
@@ -384,7 +384,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1)
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("label");
       REGB0 = TAG_Int(5);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -396,7 +396,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1)
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -603,7 +603,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(v
     fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]);
     REGB1 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
     /* compiling/compiling_icode.nit:117 */
     REGB1 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
@@ -656,7 +656,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -673,7 +673,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString(": while(0);");
       REGB0 = TAG_Int(11);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -723,7 +723,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("goto ");
       REGB0 = TAG_Int(5);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -734,7 +734,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -757,7 +757,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("closctx->has_broke = ");
       REGB1 = TAG_Int(21);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -768,7 +768,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -782,7 +782,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     if (!once_value_5) {
       fra.me.REG[3] = BOX_NativeString("goto ");
       REGB0 = TAG_Int(5);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
     } else fra.me.REG[3] = once_value_5;
@@ -799,7 +799,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -1034,7 +1034,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("/* ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -1056,7 +1056,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(":");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -1074,7 +1074,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString(" */\n");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -1115,7 +1115,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_instr(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -1298,7 +1298,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* compiling/compiling_icode.nit:212 */
       REGB2 = REGB1;
@@ -1473,16 +1473,16 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   REGB0 = TAG_Int(0);
   fra.me.REG[4] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* compiling/compiling_icode.nit:240 */
       REGB2 = REGB0;
@@ -1492,7 +1492,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
       if (!once_value_1) {
         fra.me.REG[8] = BOX_NativeString("p");
         REGB3 = TAG_Int(1);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
         once_value_1 = fra.me.REG[8];
         register_static_object(&once_value_1);
       } else fra.me.REG[8] = once_value_1;
@@ -1503,7 +1503,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
       if (!once_value_2) {
         fra.me.REG[8] = BOX_NativeString("");
         REGB3 = TAG_Int(0);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
         once_value_2 = fra.me.REG[8];
         register_static_object(&once_value_2);
       } else fra.me.REG[8] = once_value_2;
@@ -1517,7 +1517,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
       if (!once_value_3) {
         fra.me.REG[8] = BOX_NativeString("val_t p");
         REGB3 = TAG_Int(7);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
         once_value_3 = fra.me.REG[8];
         register_static_object(&once_value_3);
       } else fra.me.REG[8] = once_value_3;
@@ -1528,7 +1528,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
       if (!once_value_4) {
         fra.me.REG[8] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
         once_value_4 = fra.me.REG[8];
         register_static_object(&once_value_4);
       } else fra.me.REG[8] = once_value_4;
@@ -1536,14 +1536,14 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label5;
     }
   }
@@ -1568,7 +1568,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("struct stack_frame_t *closctx_param");
       REGB0 = TAG_Int(35);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -1582,16 +1582,16 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
       nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 246);
     }
     REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* compiling/compiling_icode.nit:246 */
         REGB2 = REGB0;
@@ -1601,7 +1601,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_7) {
           fra.me.REG[8] = BOX_NativeString("CLOS_");
           REGB3 = TAG_Int(5);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_7 = fra.me.REG[8];
           register_static_object(&once_value_7);
         } else fra.me.REG[8] = once_value_7;
@@ -1611,7 +1611,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString("_");
           REGB3 = TAG_Int(1);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
         } else fra.me.REG[8] = once_value_8;
@@ -1622,7 +1622,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_9) {
           fra.me.REG[8] = BOX_NativeString("");
           REGB3 = TAG_Int(0);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_9 = fra.me.REG[8];
           register_static_object(&once_value_9);
         } else fra.me.REG[8] = once_value_9;
@@ -1648,7 +1648,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_10) {
           fra.me.REG[10] = BOX_NativeString("struct stack_frame_t *");
           REGB3 = TAG_Int(22);
-          fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB3);
+          fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB3);
           once_value_10 = fra.me.REG[10];
           register_static_object(&once_value_10);
         } else fra.me.REG[10] = once_value_10;
@@ -1657,35 +1657,35 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         /* compiling/compiling_icode.nit:251 */
         REGB3 = TAG_Int(0);
         REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB5)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB5)) {
             /* compiling/compiling_icode.nit:252 */
             if (!once_value_11) {
               fra.me.REG[10] = BOX_NativeString("val_t");
               REGB5 = TAG_Int(5);
-              fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
+              fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
               once_value_11 = fra.me.REG[10];
               register_static_object(&once_value_11);
             } else fra.me.REG[10] = once_value_11;
             fra.me.REG[10] = fra.me.REG[10];
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB5 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB3 = REGB5;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label12;
           }
         }
@@ -1694,7 +1694,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_13) {
           fra.me.REG[10] = BOX_NativeString("void");
           REGB3 = TAG_Int(4);
-          fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB3);
+          fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB3);
           once_value_13 = fra.me.REG[10];
           register_static_object(&once_value_13);
         } else fra.me.REG[10] = once_value_13;
@@ -1718,7 +1718,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
           if (!once_value_14) {
             fra.me.REG[8] = BOX_NativeString("val_t");
             REGB3 = TAG_Int(5);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
             once_value_14 = fra.me.REG[8];
             register_static_object(&once_value_14);
           } else fra.me.REG[8] = once_value_14;
@@ -1731,7 +1731,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_15) {
           fra.me.REG[11] = BOX_NativeString("typedef ");
           REGB3 = TAG_Int(8);
-          fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB3);
+          fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB3);
           once_value_15 = fra.me.REG[11];
           register_static_object(&once_value_15);
         } else fra.me.REG[11] = once_value_15;
@@ -1741,7 +1741,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_16) {
           fra.me.REG[10] = BOX_NativeString(" (*");
           REGB3 = TAG_Int(3);
-          fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB3);
+          fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB3);
           once_value_16 = fra.me.REG[10];
           register_static_object(&once_value_16);
         } else fra.me.REG[10] = once_value_16;
@@ -1751,7 +1751,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_17) {
           fra.me.REG[4] = BOX_NativeString(")(");
           REGB3 = TAG_Int(2);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
           once_value_17 = fra.me.REG[4];
           register_static_object(&once_value_17);
         } else fra.me.REG[4] = once_value_17;
@@ -1760,7 +1760,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_18) {
           fra.me.REG[4] = BOX_NativeString(", ");
           REGB3 = TAG_Int(2);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
           once_value_18 = fra.me.REG[4];
           register_static_object(&once_value_18);
         } else fra.me.REG[4] = once_value_18;
@@ -1770,7 +1770,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_19) {
           fra.me.REG[4] = BOX_NativeString(");");
           REGB3 = TAG_Int(2);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
           once_value_19 = fra.me.REG[4];
           register_static_object(&once_value_19);
         } else fra.me.REG[4] = once_value_19;
@@ -1784,7 +1784,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_20) {
           fra.me.REG[4] = BOX_NativeString("clos_fun");
           REGB3 = TAG_Int(8);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
           once_value_20 = fra.me.REG[4];
           register_static_object(&once_value_20);
         } else fra.me.REG[4] = once_value_20;
@@ -1795,7 +1795,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_21) {
           fra.me.REG[4] = BOX_NativeString("");
           REGB3 = TAG_Int(0);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
           once_value_21 = fra.me.REG[4];
           register_static_object(&once_value_21);
         } else fra.me.REG[4] = once_value_21;
@@ -1809,7 +1809,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_22) {
           fra.me.REG[4] = BOX_NativeString("fun_t clos_fun");
           REGB3 = TAG_Int(14);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
           once_value_22 = fra.me.REG[4];
           register_static_object(&once_value_22);
         } else fra.me.REG[4] = once_value_22;
@@ -1820,7 +1820,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         if (!once_value_23) {
           fra.me.REG[4] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_23 = fra.me.REG[4];
           register_static_object(&once_value_23);
         } else fra.me.REG[4] = once_value_23;
@@ -1828,14 +1828,14 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label24;
       }
     }
@@ -1862,7 +1862,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_25) {
     fra.me.REG[5] = BOX_NativeString("void");
     REGB0 = TAG_Int(4);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_25 = fra.me.REG[5];
     register_static_object(&once_value_25);
   } else fra.me.REG[5] = once_value_25;
@@ -1886,7 +1886,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_26) {
       fra.me.REG[0] = BOX_NativeString("val_t");
       REGB0 = TAG_Int(5);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_26 = fra.me.REG[0];
       register_static_object(&once_value_26);
     } else fra.me.REG[0] = once_value_26;
@@ -1900,7 +1900,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_27) {
       fra.me.REG[0] = BOX_NativeString("void");
       REGB0 = TAG_Int(4);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_27 = fra.me.REG[0];
       register_static_object(&once_value_27);
     } else fra.me.REG[0] = once_value_27;
@@ -1910,7 +1910,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_28) {
       fra.me.REG[8] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_28 = fra.me.REG[8];
       register_static_object(&once_value_28);
     } else fra.me.REG[8] = once_value_28;
@@ -1939,7 +1939,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_29) {
       fra.me.REG[7] = BOX_NativeString("static const char LOCATE_");
       REGB0 = TAG_Int(25);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_29 = fra.me.REG[7];
       register_static_object(&once_value_29);
     } else fra.me.REG[7] = once_value_29;
@@ -1949,7 +1949,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_30) {
       fra.me.REG[7] = BOX_NativeString("[] = \"");
       REGB0 = TAG_Int(6);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_30 = fra.me.REG[7];
       register_static_object(&once_value_30);
     } else fra.me.REG[7] = once_value_30;
@@ -1959,7 +1959,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     if (!once_value_31) {
       fra.me.REG[3] = BOX_NativeString("\";");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_31 = fra.me.REG[3];
       register_static_object(&once_value_31);
     } else fra.me.REG[3] = once_value_31;
@@ -1974,7 +1974,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_32) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_32 = fra.me.REG[3];
     register_static_object(&once_value_32);
   } else fra.me.REG[3] = once_value_32;
@@ -1984,7 +1984,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_33) {
     fra.me.REG[3] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_33 = fra.me.REG[3];
     register_static_object(&once_value_33);
   } else fra.me.REG[3] = once_value_33;
@@ -1994,7 +1994,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_34) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_34 = fra.me.REG[3];
     register_static_object(&once_value_34);
   } else fra.me.REG[3] = once_value_34;
@@ -2004,7 +2004,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_35) {
     fra.me.REG[3] = BOX_NativeString(");");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_35 = fra.me.REG[3];
     register_static_object(&once_value_35);
   } else fra.me.REG[3] = once_value_35;
@@ -2018,7 +2018,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_36) {
     fra.me.REG[3] = BOX_NativeString("typedef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_36 = fra.me.REG[3];
     register_static_object(&once_value_36);
   } else fra.me.REG[3] = once_value_36;
@@ -2028,7 +2028,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_37) {
     fra.me.REG[3] = BOX_NativeString(" (*");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_37 = fra.me.REG[3];
     register_static_object(&once_value_37);
   } else fra.me.REG[3] = once_value_37;
@@ -2038,7 +2038,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_38) {
     fra.me.REG[3] = BOX_NativeString("_t)(");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_38 = fra.me.REG[3];
     register_static_object(&once_value_38);
   } else fra.me.REG[3] = once_value_38;
@@ -2048,7 +2048,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_39) {
     fra.me.REG[3] = BOX_NativeString(");");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_39 = fra.me.REG[3];
     register_static_object(&once_value_39);
   } else fra.me.REG[3] = once_value_39;
@@ -2062,7 +2062,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_40) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_40 = fra.me.REG[3];
     register_static_object(&once_value_40);
   } else fra.me.REG[3] = once_value_40;
@@ -2072,7 +2072,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_41) {
     fra.me.REG[5] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_41 = fra.me.REG[5];
     register_static_object(&once_value_41);
   } else fra.me.REG[5] = once_value_41;
@@ -2082,7 +2082,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_42) {
     fra.me.REG[2] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_42 = fra.me.REG[2];
     register_static_object(&once_value_42);
   } else fra.me.REG[2] = once_value_42;
@@ -2092,7 +2092,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (!once_value_43) {
     fra.me.REG[0] = BOX_NativeString("){");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_43 = fra.me.REG[0];
     register_static_object(&once_value_43);
   } else fra.me.REG[0] = once_value_43;
@@ -2208,7 +2208,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* compiling/compiling_icode.nit:289 */
   if (UNTAG_Bool(REGB2)) {
@@ -2218,7 +2218,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("struct {struct stack_frame_t me; val_t MORE_REG[");
       REGB2 = TAG_Int(48);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -2226,7 +2226,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     REGB2 = CALL_analysis___allocate_iregister_slots___IRoutine___std_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
     /* compiling/compiling_icode.nit:290 */
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB1)(REGB1);
@@ -2234,7 +2234,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("];} fra;");
       REGB1 = TAG_Int(8);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -2247,7 +2247,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("struct {struct stack_frame_t me;} fra;");
       REGB1 = TAG_Int(38);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -2258,7 +2258,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;");
     REGB1 = TAG_Int(59);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -2270,7 +2270,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString("fra.me.file = LOCATE_");
     REGB1 = TAG_Int(21);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -2283,7 +2283,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString(";");
     REGB1 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -2297,7 +2297,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("fra.me.line = ");
     REGB1 = TAG_Int(14);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -2308,7 +2308,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_8) {
     fra.me.REG[4] = BOX_NativeString(";");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_8 = fra.me.REG[4];
     register_static_object(&once_value_8);
   } else fra.me.REG[4] = once_value_8;
@@ -2322,7 +2322,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_9) {
     fra.me.REG[4] = BOX_NativeString("fra.me.meth = LOCATE_");
     REGB0 = TAG_Int(21);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_9 = fra.me.REG[4];
     register_static_object(&once_value_9);
   } else fra.me.REG[4] = once_value_9;
@@ -2333,7 +2333,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_10) {
     fra.me.REG[4] = BOX_NativeString(";");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_10 = fra.me.REG[4];
     register_static_object(&once_value_10);
   } else fra.me.REG[4] = once_value_10;
@@ -2345,7 +2345,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_11) {
     fra.me.REG[3] = BOX_NativeString("fra.me.has_broke = 0;");
     REGB0 = TAG_Int(21);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_11 = fra.me.REG[3];
     register_static_object(&once_value_11);
   } else fra.me.REG[3] = once_value_11;
@@ -2357,7 +2357,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString("fra.me.REG_size = ");
     REGB0 = TAG_Int(18);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -2369,7 +2369,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_13) {
     fra.me.REG[4] = BOX_NativeString(";");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_13 = fra.me.REG[4];
     register_static_object(&once_value_13);
   } else fra.me.REG[4] = once_value_13;
@@ -2381,7 +2381,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_14) {
     fra.me.REG[3] = BOX_NativeString("fra.me.nitni_local_ref_head = NULL;");
     REGB0 = TAG_Int(35);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_14 = fra.me.REG[3];
     register_static_object(&once_value_14);
   } else fra.me.REG[3] = once_value_14;
@@ -2390,16 +2390,16 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   /* compiling/compiling_icode.nit:303 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_analysis___allocate_iregister_slots___IRoutine___std_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* compiling/compiling_icode.nit:303 */
       REGB2 = REGB0;
@@ -2409,7 +2409,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       if (!once_value_15) {
         fra.me.REG[4] = BOX_NativeString("fra.me.REG[");
         REGB3 = TAG_Int(11);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
         once_value_15 = fra.me.REG[4];
         register_static_object(&once_value_15);
       } else fra.me.REG[4] = once_value_15;
@@ -2420,7 +2420,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       if (!once_value_16) {
         fra.me.REG[4] = BOX_NativeString("] = NIT_NULL;");
         REGB2 = TAG_Int(13);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_16 = fra.me.REG[4];
         register_static_object(&once_value_16);
       } else fra.me.REG[4] = once_value_16;
@@ -2428,14 +2428,14 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label17;
     }
   }
@@ -2443,16 +2443,16 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   /* compiling/compiling_icode.nit:306 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_analysis___allocate_iregister_slots___IRoutine___tag_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* compiling/compiling_icode.nit:306 */
       REGB2 = REGB0;
@@ -2462,7 +2462,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       if (!once_value_18) {
         fra.me.REG[4] = BOX_NativeString("val_t REGB");
         REGB3 = TAG_Int(10);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
         once_value_18 = fra.me.REG[4];
         register_static_object(&once_value_18);
       } else fra.me.REG[4] = once_value_18;
@@ -2473,7 +2473,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       if (!once_value_19) {
         fra.me.REG[4] = BOX_NativeString(";");
         REGB2 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
         once_value_19 = fra.me.REG[4];
         register_static_object(&once_value_19);
       } else fra.me.REG[4] = once_value_19;
@@ -2481,14 +2481,14 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_compiling___compiling_icode___I2CCompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label20;
     }
   }
@@ -2516,7 +2516,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_21) {
       fra.me.REG[5] = BOX_NativeString("fun_t CREG[");
       REGB0 = TAG_Int(11);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_21 = fra.me.REG[5];
       register_static_object(&once_value_21);
     } else fra.me.REG[5] = once_value_21;
@@ -2532,7 +2532,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_22) {
       fra.me.REG[5] = BOX_NativeString("];");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_22 = fra.me.REG[5];
       register_static_object(&once_value_22);
     } else fra.me.REG[5] = once_value_22;
@@ -2544,7 +2544,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_23) {
       fra.me.REG[4] = BOX_NativeString("fra.me.closure_ctx = closctx_param;");
       REGB0 = TAG_Int(35);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_23 = fra.me.REG[4];
       register_static_object(&once_value_23);
     } else fra.me.REG[4] = once_value_23;
@@ -2554,7 +2554,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     if (!once_value_24) {
       fra.me.REG[4] = BOX_NativeString("fra.me.closure_funs = CREG;");
       REGB0 = TAG_Int(27);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_24 = fra.me.REG[4];
       register_static_object(&once_value_24);
     } else fra.me.REG[4] = once_value_24;
@@ -2589,16 +2589,16 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
       nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 321);
     }
     REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* compiling/compiling_icode.nit:321 */
         REGB2 = REGB0;
@@ -2614,7 +2614,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_27) {
           fra.me.REG[6] = BOX_NativeString("CREG[");
           REGB3 = TAG_Int(5);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_27 = fra.me.REG[6];
           register_static_object(&once_value_27);
         } else fra.me.REG[6] = once_value_27;
@@ -2625,7 +2625,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_28) {
           fra.me.REG[6] = BOX_NativeString("] = ");
           REGB3 = TAG_Int(4);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_28 = fra.me.REG[6];
           register_static_object(&once_value_28);
         } else fra.me.REG[6] = once_value_28;
@@ -2633,25 +2633,25 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         fra.me.REG[6] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
         REGB3 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[6] = fra.me.REG[2];
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Int(0);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB5)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB4)) {
           REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
           REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -2659,26 +2659,26 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB5 = TAG_Bool(0);
           REGB4 = REGB5;
         }
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
         REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label29;
         label29: while(0);
         /* compiling/compiling_icode.nit:323 */
@@ -2686,7 +2686,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_30) {
           fra.me.REG[6] = BOX_NativeString(";");
           REGB3 = TAG_Int(1);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_30 = fra.me.REG[6];
           register_static_object(&once_value_30);
         } else fra.me.REG[6] = once_value_30;
@@ -2707,7 +2707,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_31) {
           fra.me.REG[7] = BOX_NativeString("struct stack_frame_t *");
           REGB2 = TAG_Int(22);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_31 = fra.me.REG[7];
           register_static_object(&once_value_31);
         } else fra.me.REG[7] = once_value_31;
@@ -2716,36 +2716,36 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         /* compiling/compiling_icode.nit:328 */
         REGB2 = TAG_Int(0);
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB4)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB4)) {
             /* compiling/compiling_icode.nit:329 */
             if (!once_value_32) {
               fra.me.REG[7] = BOX_NativeString("val_t");
               REGB4 = TAG_Int(5);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB4);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB4);
               once_value_32 = fra.me.REG[7];
               register_static_object(&once_value_32);
             } else fra.me.REG[7] = once_value_32;
             fra.me.REG[7] = fra.me.REG[7];
             /* compiling/compiling_icode.nit:330 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB2 = REGB4;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label33;
           }
         }
@@ -2754,7 +2754,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_34) {
           fra.me.REG[7] = BOX_NativeString("void");
           REGB2 = TAG_Int(4);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_34 = fra.me.REG[7];
           register_static_object(&once_value_34);
         } else fra.me.REG[7] = once_value_34;
@@ -2778,7 +2778,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
           if (!once_value_35) {
             fra.me.REG[6] = BOX_NativeString("val_t");
             REGB2 = TAG_Int(5);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
             once_value_35 = fra.me.REG[6];
             register_static_object(&once_value_35);
           } else fra.me.REG[6] = once_value_35;
@@ -2792,7 +2792,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_36) {
           fra.me.REG[9] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
+          fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
           once_value_36 = fra.me.REG[9];
           register_static_object(&once_value_36);
         } else fra.me.REG[9] = once_value_36;
@@ -2802,7 +2802,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_37) {
           fra.me.REG[7] = BOX_NativeString(" (*)(");
           REGB2 = TAG_Int(5);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_37 = fra.me.REG[7];
           register_static_object(&once_value_37);
         } else fra.me.REG[7] = once_value_37;
@@ -2811,7 +2811,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_38) {
           fra.me.REG[7] = BOX_NativeString(", ");
           REGB2 = TAG_Int(2);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_38 = fra.me.REG[7];
           register_static_object(&once_value_38);
         } else fra.me.REG[7] = once_value_38;
@@ -2821,7 +2821,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         if (!once_value_39) {
           fra.me.REG[7] = BOX_NativeString(")");
           REGB2 = TAG_Int(1);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_39 = fra.me.REG[7];
           register_static_object(&once_value_39);
         } else fra.me.REG[7] = once_value_39;
@@ -2829,14 +2829,14 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[8]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label40;
       }
     }
@@ -2846,7 +2846,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_41) {
     fra.me.REG[2] = BOX_NativeString("val_t tmp;");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_41 = fra.me.REG[2];
     register_static_object(&once_value_41);
   } else fra.me.REG[2] = once_value_41;
@@ -2864,7 +2864,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   if (!once_value_42) {
     fra.me.REG[3] = BOX_NativeString("stack_frame_head = fra.me.prev;");
     REGB0 = TAG_Int(31);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_42 = fra.me.REG[3];
     register_static_object(&once_value_42);
   } else fra.me.REG[3] = once_value_42;
@@ -2931,7 +2931,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((fra.me.REG[1])==(NIT_NULL));
         /* compiling/compiling_icode.nit:317 */
         REGB0 = REGB1;
@@ -2940,24 +2940,24 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[1] = closctx->REG[2];
       REGB0 = closctx->REG[4];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB1 = TAG_Int(0);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
         REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -2965,26 +2965,26 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label26;
       label26: while(0);
       /* compiling/compiling_icode.nit:317 */
@@ -2992,7 +2992,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     }
     /* compiling/compiling_icode.nit:318 */
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[4])+UNTAG_Int(REGB0));
     /* compiling/compiling_icode.nit:318 */
     closctx->REG[4] = REGB0;
@@ -3088,7 +3088,7 @@ val_t compiling___compiling_icode___ICode___need_result(val_t p0){
         REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((fra.me.REG[0])==(NIT_NULL));
         /* compiling/compiling_icode.nit:373 */
         REGB0 = REGB1;
@@ -3158,7 +3158,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
         REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((fra.me.REG[4])==(NIT_NULL));
         /* compiling/compiling_icode.nit:380 */
         REGB0 = REGB1;
@@ -3197,7 +3197,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -3209,7 +3209,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -3246,7 +3246,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
       if (!once_value_3) {
         fra.me.REG[2] = BOX_NativeString(";\n");
         REGB0 = TAG_Int(2);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_3 = fra.me.REG[2];
         register_static_object(&once_value_3);
       } else fra.me.REG[2] = once_value_3;
@@ -3323,7 +3323,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
         REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((fra.me.REG[3])==(NIT_NULL));
         /* compiling/compiling_icode.nit:403 */
         REGB0 = REGB1;
@@ -3342,7 +3342,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_1 = fra.me.REG[0];
       register_static_object(&once_value_1);
     } else fra.me.REG[0] = once_value_1;
@@ -3355,7 +3355,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -3472,7 +3472,7 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("if (UNTAG_Bool(");
     REGB0 = TAG_Int(15);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3486,7 +3486,7 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(")) {\n");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -3516,7 +3516,7 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("} else {");
       REGB0 = TAG_Int(8);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -3534,7 +3534,7 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -3594,7 +3594,7 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("while(1) {");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3611,7 +3611,7 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -3748,7 +3748,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[7] = BOX_NativeString("closctx");
         REGB0 = TAG_Int(7);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_1 = fra.me.REG[7];
         register_static_object(&once_value_1);
       } else fra.me.REG[7] = once_value_1;
@@ -3759,7 +3759,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[7] = BOX_NativeString("(&(fra.me))");
         REGB0 = TAG_Int(11);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_2 = fra.me.REG[7];
         register_static_object(&once_value_2);
       } else fra.me.REG[7] = once_value_2;
@@ -3814,7 +3814,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[8] = BOX_NativeString("tmp");
           REGB0 = TAG_Int(3);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_5 = fra.me.REG[8];
           register_static_object(&once_value_5);
         } else fra.me.REG[8] = once_value_5;
@@ -3824,7 +3824,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_6) {
           fra.me.REG[8] = BOX_NativeString(" = ");
           REGB0 = TAG_Int(3);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_6 = fra.me.REG[8];
           register_static_object(&once_value_6);
         } else fra.me.REG[8] = once_value_6;
@@ -3836,7 +3836,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_7) {
           fra.me.REG[8] = BOX_NativeString(";\n");
           REGB0 = TAG_Int(2);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_7 = fra.me.REG[8];
           register_static_object(&once_value_7);
         } else fra.me.REG[8] = once_value_7;
@@ -3849,7 +3849,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString("tmp");
           REGB0 = TAG_Int(3);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
         } else fra.me.REG[8] = once_value_8;
@@ -3868,7 +3868,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_9) {
           fra.me.REG[3] = BOX_NativeString(";\n");
           REGB0 = TAG_Int(2);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_9 = fra.me.REG[3];
           register_static_object(&once_value_9);
         } else fra.me.REG[3] = once_value_9;
@@ -3880,7 +3880,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       if (!once_value_10) {
         fra.me.REG[4] = BOX_NativeString("switch (");
         REGB0 = TAG_Int(8);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_10 = fra.me.REG[4];
         register_static_object(&once_value_10);
       } else fra.me.REG[4] = once_value_10;
@@ -3890,7 +3890,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       if (!once_value_11) {
         fra.me.REG[3] = BOX_NativeString("->has_broke) {\n");
         REGB0 = TAG_Int(15);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_11 = fra.me.REG[3];
         register_static_object(&once_value_11);
       } else fra.me.REG[3] = once_value_11;
@@ -3902,7 +3902,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       if (!once_value_12) {
         fra.me.REG[3] = BOX_NativeString("case 0: break;");
         REGB0 = TAG_Int(14);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_12 = fra.me.REG[3];
         register_static_object(&once_value_12);
       } else fra.me.REG[3] = once_value_12;
@@ -3928,7 +3928,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
             if (!once_value_13) {
               fra.me.REG[9] = BOX_NativeString("case ");
               REGB1 = TAG_Int(5);
-              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
               once_value_13 = fra.me.REG[9];
               register_static_object(&once_value_13);
             } else fra.me.REG[9] = once_value_13;
@@ -3944,7 +3944,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
             if (!once_value_14) {
               fra.me.REG[9] = BOX_NativeString(": ");
               REGB1 = TAG_Int(2);
-              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
               once_value_14 = fra.me.REG[9];
               register_static_object(&once_value_14);
             } else fra.me.REG[9] = once_value_14;
@@ -3954,7 +3954,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
             if (!once_value_15) {
               fra.me.REG[8] = BOX_NativeString("->has_broke = 0; goto ");
               REGB1 = TAG_Int(22);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_15 = fra.me.REG[8];
               register_static_object(&once_value_15);
             } else fra.me.REG[8] = once_value_15;
@@ -3965,7 +3965,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
             if (!once_value_16) {
               fra.me.REG[8] = BOX_NativeString(";\n");
               REGB1 = TAG_Int(2);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_16 = fra.me.REG[8];
               register_static_object(&once_value_16);
             } else fra.me.REG[8] = once_value_16;
@@ -3999,7 +3999,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_18) {
           fra.me.REG[6] = BOX_NativeString("default: goto ");
           REGB0 = TAG_Int(14);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_18 = fra.me.REG[6];
           register_static_object(&once_value_18);
         } else fra.me.REG[6] = once_value_18;
@@ -4016,7 +4016,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_19) {
           fra.me.REG[6] = BOX_NativeString(";\n");
           REGB0 = TAG_Int(2);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_19 = fra.me.REG[6];
           register_static_object(&once_value_19);
         } else fra.me.REG[6] = once_value_19;
@@ -4029,7 +4029,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       if (!once_value_20) {
         fra.me.REG[6] = BOX_NativeString("}");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_20 = fra.me.REG[6];
         register_static_object(&once_value_20);
       } else fra.me.REG[6] = once_value_20;
@@ -4107,7 +4107,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("NULL");
           REGB0 = TAG_Int(4);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
           once_value_4 = fra.me.REG[0];
           register_static_object(&once_value_4);
         } else fra.me.REG[0] = once_value_4;
@@ -4175,7 +4175,7 @@ val_t compiling___compiling_icode___ICall___compile_call_to_c(val_t p0, val_t p1
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("init_table");
       REGB0 = TAG_Int(10);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -4190,7 +4190,7 @@ val_t compiling___compiling_icode___ICall___compile_call_to_c(val_t p0, val_t p1
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -4203,7 +4203,7 @@ val_t compiling___compiling_icode___ICall___compile_call_to_c(val_t p0, val_t p1
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")(");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -4213,7 +4213,7 @@ val_t compiling___compiling_icode___ICall___compile_call_to_c(val_t p0, val_t p1
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -4223,7 +4223,7 @@ val_t compiling___compiling_icode___ICall___compile_call_to_c(val_t p0, val_t p1
   if (!once_value_6) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_6 = fra.me.REG[0];
     register_static_object(&once_value_6);
   } else fra.me.REG[0] = once_value_6;
@@ -4275,7 +4275,7 @@ val_t compiling___compiling_icode___ISuper___compile_call_to_c(val_t p0, val_t p
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("init_table");
       REGB0 = TAG_Int(10);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -4291,7 +4291,7 @@ val_t compiling___compiling_icode___ISuper___compile_call_to_c(val_t p0, val_t p
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -4304,7 +4304,7 @@ val_t compiling___compiling_icode___ISuper___compile_call_to_c(val_t p0, val_t p
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")(");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -4314,7 +4314,7 @@ val_t compiling___compiling_icode___ISuper___compile_call_to_c(val_t p0, val_t p
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -4324,7 +4324,7 @@ val_t compiling___compiling_icode___ISuper___compile_call_to_c(val_t p0, val_t p
   if (!once_value_6) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_6 = fra.me.REG[0];
     register_static_object(&once_value_6);
   } else fra.me.REG[0] = once_value_6;
@@ -4374,7 +4374,7 @@ val_t compiling___compiling_icode___INew___compile_call_to_c(val_t p0, val_t p1,
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("NEW_");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -4389,7 +4389,7 @@ val_t compiling___compiling_icode___INew___compile_call_to_c(val_t p0, val_t p1,
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("_");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -4405,7 +4405,7 @@ val_t compiling___compiling_icode___INew___compile_call_to_c(val_t p0, val_t p1,
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -4415,7 +4415,7 @@ val_t compiling___compiling_icode___INew___compile_call_to_c(val_t p0, val_t p1,
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -4425,7 +4425,7 @@ val_t compiling___compiling_icode___INew___compile_call_to_c(val_t p0, val_t p1,
   if (!once_value_6) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_6 = fra.me.REG[0];
     register_static_object(&once_value_6);
   } else fra.me.REG[0] = once_value_6;
@@ -4466,7 +4466,7 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, va
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("NEW_");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -4481,7 +4481,7 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, va
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("()");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -4520,7 +4520,7 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CHECKNEW_");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -4535,7 +4535,7 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -4549,7 +4549,7 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -4588,7 +4588,7 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("INIT_ATTRIBUTES__");
     REGB0 = TAG_Int(17);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -4603,7 +4603,7 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -4617,7 +4617,7 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(");\n");
     REGB0 = TAG_Int(3);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -4657,7 +4657,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString("init_table");
       REGB0 = TAG_Int(10);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_1 = fra.me.REG[1];
       register_static_object(&once_value_1);
     } else fra.me.REG[1] = once_value_1;
@@ -4674,7 +4674,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -4684,7 +4684,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -4694,7 +4694,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -4783,7 +4783,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -4797,7 +4797,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("___out");
     REGB0 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -4816,13 +4816,13 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* compiling/compiling_icode.nit:706 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
     /* compiling/compiling_icode.nit:706 */
     REGB1 = REGB2;
@@ -4838,23 +4838,23 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
   /* compiling/compiling_icode.nit:711 */
   REGB1 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:278 */
+  /* ../lib/standard/collection/array.nit:279 */
   fra.me.REG[6] = fra.me.REG[3];
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB2 = TAG_Int(0);
   REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
     REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -4862,26 +4862,26 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB0 = TAG_Bool(0);
     REGB2 = REGB0;
   }
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
   REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label3;
   label3: while(0);
   /* compiling/compiling_icode.nit:711 */
@@ -4893,40 +4893,40 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
     nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 712);
   }
   REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB0)) {
       /* compiling/compiling_icode.nit:712 */
       REGB0 = REGB1;
       /* compiling/compiling_icode.nit:713 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[4] = fra.me.REG[3];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB0 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
         REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -4934,38 +4934,38 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB0 = REGB4;
       }
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label4;
       label4: while(0);
       /* compiling/compiling_icode.nit:713 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label5;
     }
   }
@@ -4976,7 +4976,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -4986,7 +4986,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString("(");
     REGB1 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
   } else fra.me.REG[2] = once_value_7;
@@ -4995,7 +4995,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   if (!once_value_8) {
     fra.me.REG[2] = BOX_NativeString(", ");
     REGB1 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_8 = fra.me.REG[2];
     register_static_object(&once_value_8);
   } else fra.me.REG[2] = once_value_8;
@@ -5005,7 +5005,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   if (!once_value_9) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB1 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_9 = fra.me.REG[2];
     register_static_object(&once_value_9);
   } else fra.me.REG[2] = once_value_9;
@@ -5430,13 +5430,13 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* compiling/compiling_icode.nit:725 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
     /* compiling/compiling_icode.nit:725 */
     REGB1 = REGB2;
@@ -5462,7 +5462,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("Int");
       REGB1 = TAG_Int(3);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -5484,7 +5484,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       if (!once_value_4) {
         fra.me.REG[6] = BOX_NativeString("object_id");
         REGB1 = TAG_Int(9);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_4 = fra.me.REG[6];
         register_static_object(&once_value_4);
       } else fra.me.REG[6] = once_value_4;
@@ -5503,23 +5503,23 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (UNTAG_Bool(REGB1)) {
       /* compiling/compiling_icode.nit:732 */
       REGB1 = TAG_Int(0);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[6] = fra.me.REG[4];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
         REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5527,26 +5527,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB0 = TAG_Bool(0);
         REGB2 = REGB0;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
       REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label5;
       label5: while(0);
       /* compiling/compiling_icode.nit:732 */
@@ -5557,7 +5557,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_7) {
           fra.me.REG[6] = BOX_NativeString("unary -");
           REGB1 = TAG_Int(7);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
           once_value_7 = fra.me.REG[6];
           register_static_object(&once_value_7);
         } else fra.me.REG[6] = once_value_7;
@@ -5580,30 +5580,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_8) {
           fra.me.REG[7] = BOX_NativeString("TAG_Int(-UNTAG_Int(");
           REGB1 = TAG_Int(19);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
           once_value_8 = fra.me.REG[7];
           register_static_object(&once_value_8);
         } else fra.me.REG[7] = once_value_8;
         fra.me.REG[7] = fra.me.REG[7];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
         REGB1 = TAG_Int(0);
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[7] = fra.me.REG[4];
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB2 = TAG_Int(0);
         REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
           REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5611,26 +5611,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB0 = TAG_Bool(0);
           REGB2 = REGB0;
         }
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
         REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label9;
         label9: while(0);
         /* compiling/compiling_icode.nit:734 */
@@ -5638,7 +5638,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_10) {
           fra.me.REG[7] = BOX_NativeString("))");
           REGB1 = TAG_Int(2);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
           once_value_10 = fra.me.REG[7];
           register_static_object(&once_value_10);
         } else fra.me.REG[7] = once_value_10;
@@ -5652,7 +5652,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_12) {
             fra.me.REG[6] = BOX_NativeString("output");
             REGB1 = TAG_Int(6);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
             once_value_12 = fra.me.REG[6];
             register_static_object(&once_value_12);
           } else fra.me.REG[6] = once_value_12;
@@ -5675,30 +5675,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_13) {
             fra.me.REG[7] = BOX_NativeString("printf(\"%ld\\n\", UNTAG_Int(");
             REGB1 = TAG_Int(26);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
             once_value_13 = fra.me.REG[7];
             register_static_object(&once_value_13);
           } else fra.me.REG[7] = once_value_13;
           fra.me.REG[7] = fra.me.REG[7];
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           REGB1 = TAG_Int(0);
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB2 = TAG_Int(0);
           REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB0)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5706,26 +5706,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB0 = TAG_Bool(0);
             REGB2 = REGB0;
           }
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
           REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label14;
           label14: while(0);
           /* compiling/compiling_icode.nit:736 */
@@ -5733,7 +5733,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_15) {
             fra.me.REG[7] = BOX_NativeString("));");
             REGB1 = TAG_Int(3);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
             once_value_15 = fra.me.REG[7];
             register_static_object(&once_value_15);
           } else fra.me.REG[7] = once_value_15;
@@ -5747,7 +5747,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_17) {
               fra.me.REG[6] = BOX_NativeString("ascii");
               REGB1 = TAG_Int(5);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
               once_value_17 = fra.me.REG[6];
               register_static_object(&once_value_17);
             } else fra.me.REG[6] = once_value_17;
@@ -5770,30 +5770,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_18) {
               fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Int(");
               REGB1 = TAG_Int(19);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_18 = fra.me.REG[7];
               register_static_object(&once_value_18);
             } else fra.me.REG[7] = once_value_18;
             fra.me.REG[7] = fra.me.REG[7];
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             REGB1 = TAG_Int(0);
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB2 = TAG_Int(0);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB0)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB2)) {
               REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5801,26 +5801,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB0 = TAG_Bool(0);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label19;
             label19: while(0);
             /* compiling/compiling_icode.nit:738 */
@@ -5828,7 +5828,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_20) {
               fra.me.REG[7] = BOX_NativeString("))");
               REGB1 = TAG_Int(2);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_20 = fra.me.REG[7];
               register_static_object(&once_value_20);
             } else fra.me.REG[7] = once_value_20;
@@ -5842,7 +5842,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_22) {
                fra.me.REG[6] = BOX_NativeString("succ");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_22 = fra.me.REG[6];
                register_static_object(&once_value_22);
               } else fra.me.REG[6] = once_value_22;
@@ -5865,30 +5865,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_23) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_23 = fra.me.REG[7];
                register_static_object(&once_value_23);
               } else fra.me.REG[7] = once_value_23;
               fra.me.REG[7] = fra.me.REG[7];
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               REGB1 = TAG_Int(0);
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB2 = TAG_Int(0);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB0)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5896,26 +5896,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
               REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label24;
               label24: while(0);
               /* compiling/compiling_icode.nit:740 */
@@ -5923,7 +5923,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_25) {
                fra.me.REG[7] = BOX_NativeString(")+1)");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_25 = fra.me.REG[7];
                register_static_object(&once_value_25);
               } else fra.me.REG[7] = once_value_25;
@@ -5937,7 +5937,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_27) {
                fra.me.REG[6] = BOX_NativeString("prec");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_27 = fra.me.REG[6];
                register_static_object(&once_value_27);
                } else fra.me.REG[6] = once_value_27;
@@ -5960,30 +5960,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_28) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_28 = fra.me.REG[7];
                register_static_object(&once_value_28);
                } else fra.me.REG[7] = once_value_28;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5991,26 +5991,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label29;
                label29: while(0);
                /* compiling/compiling_icode.nit:742 */
@@ -6018,7 +6018,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_30) {
                fra.me.REG[7] = BOX_NativeString(")-1)");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_30 = fra.me.REG[7];
                register_static_object(&once_value_30);
                } else fra.me.REG[7] = once_value_30;
@@ -6032,7 +6032,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_32) {
                fra.me.REG[6] = BOX_NativeString("to_f");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_32 = fra.me.REG[6];
                register_static_object(&once_value_32);
                } else fra.me.REG[6] = once_value_32;
@@ -6055,30 +6055,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_33) {
                fra.me.REG[7] = BOX_NativeString("BOX_Float((float)UNTAG_Int(");
                REGB1 = TAG_Int(27);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_33 = fra.me.REG[7];
                register_static_object(&once_value_33);
                } else fra.me.REG[7] = once_value_33;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6086,26 +6086,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label34;
                label34: while(0);
                /* compiling/compiling_icode.nit:744 */
@@ -6113,7 +6113,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_35) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_35 = fra.me.REG[7];
                register_static_object(&once_value_35);
                } else fra.me.REG[7] = once_value_35;
@@ -6127,7 +6127,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_37) {
                fra.me.REG[6] = BOX_NativeString("+");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_37 = fra.me.REG[6];
                register_static_object(&once_value_37);
                } else fra.me.REG[6] = once_value_37;
@@ -6150,30 +6150,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_38) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_38 = fra.me.REG[7];
                register_static_object(&once_value_38);
                } else fra.me.REG[7] = once_value_38;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6181,26 +6181,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label39;
                label39: while(0);
                /* compiling/compiling_icode.nit:746 */
@@ -6208,30 +6208,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_40) {
                fra.me.REG[7] = BOX_NativeString(")+UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_40 = fra.me.REG[7];
                register_static_object(&once_value_40);
                } else fra.me.REG[7] = once_value_40;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6239,26 +6239,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label41;
                label41: while(0);
                /* compiling/compiling_icode.nit:746 */
@@ -6266,7 +6266,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_42) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_42 = fra.me.REG[7];
                register_static_object(&once_value_42);
                } else fra.me.REG[7] = once_value_42;
@@ -6280,7 +6280,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_44) {
                fra.me.REG[6] = BOX_NativeString("-");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_44 = fra.me.REG[6];
                register_static_object(&once_value_44);
                } else fra.me.REG[6] = once_value_44;
@@ -6303,30 +6303,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_45) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_45 = fra.me.REG[7];
                register_static_object(&once_value_45);
                } else fra.me.REG[7] = once_value_45;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6334,26 +6334,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label46;
                label46: while(0);
                /* compiling/compiling_icode.nit:748 */
@@ -6361,30 +6361,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_47) {
                fra.me.REG[7] = BOX_NativeString(")-UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_47 = fra.me.REG[7];
                register_static_object(&once_value_47);
                } else fra.me.REG[7] = once_value_47;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6392,26 +6392,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label48;
                label48: while(0);
                /* compiling/compiling_icode.nit:748 */
@@ -6419,7 +6419,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_49) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_49 = fra.me.REG[7];
                register_static_object(&once_value_49);
                } else fra.me.REG[7] = once_value_49;
@@ -6433,7 +6433,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_51) {
                fra.me.REG[6] = BOX_NativeString("*");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_51 = fra.me.REG[6];
                register_static_object(&once_value_51);
                } else fra.me.REG[6] = once_value_51;
@@ -6456,30 +6456,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_52) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_52 = fra.me.REG[7];
                register_static_object(&once_value_52);
                } else fra.me.REG[7] = once_value_52;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6487,26 +6487,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label53;
                label53: while(0);
                /* compiling/compiling_icode.nit:750 */
@@ -6514,30 +6514,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_54) {
                fra.me.REG[7] = BOX_NativeString(")*UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_54 = fra.me.REG[7];
                register_static_object(&once_value_54);
                } else fra.me.REG[7] = once_value_54;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6545,26 +6545,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label55;
                label55: while(0);
                /* compiling/compiling_icode.nit:750 */
@@ -6572,7 +6572,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_56) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_56 = fra.me.REG[7];
                register_static_object(&once_value_56);
                } else fra.me.REG[7] = once_value_56;
@@ -6586,7 +6586,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_58) {
                fra.me.REG[6] = BOX_NativeString("/");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_58 = fra.me.REG[6];
                register_static_object(&once_value_58);
                } else fra.me.REG[6] = once_value_58;
@@ -6609,30 +6609,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_59) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_59 = fra.me.REG[7];
                register_static_object(&once_value_59);
                } else fra.me.REG[7] = once_value_59;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6640,26 +6640,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label60;
                label60: while(0);
                /* compiling/compiling_icode.nit:752 */
@@ -6667,30 +6667,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_61) {
                fra.me.REG[7] = BOX_NativeString(")/UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_61 = fra.me.REG[7];
                register_static_object(&once_value_61);
                } else fra.me.REG[7] = once_value_61;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6698,26 +6698,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label62;
                label62: while(0);
                /* compiling/compiling_icode.nit:752 */
@@ -6725,7 +6725,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_63) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_63 = fra.me.REG[7];
                register_static_object(&once_value_63);
                } else fra.me.REG[7] = once_value_63;
@@ -6739,7 +6739,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_65) {
                fra.me.REG[6] = BOX_NativeString("%");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_65 = fra.me.REG[6];
                register_static_object(&once_value_65);
                } else fra.me.REG[6] = once_value_65;
@@ -6762,30 +6762,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_66) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_66 = fra.me.REG[7];
                register_static_object(&once_value_66);
                } else fra.me.REG[7] = once_value_66;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6793,26 +6793,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label67;
                label67: while(0);
                /* compiling/compiling_icode.nit:754 */
@@ -6820,30 +6820,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_68) {
                fra.me.REG[7] = BOX_NativeString(")%UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_68 = fra.me.REG[7];
                register_static_object(&once_value_68);
                } else fra.me.REG[7] = once_value_68;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6851,26 +6851,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label69;
                label69: while(0);
                /* compiling/compiling_icode.nit:754 */
@@ -6878,7 +6878,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_70) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_70 = fra.me.REG[7];
                register_static_object(&once_value_70);
                } else fra.me.REG[7] = once_value_70;
@@ -6892,7 +6892,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_72) {
                fra.me.REG[6] = BOX_NativeString("<");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_72 = fra.me.REG[6];
                register_static_object(&once_value_72);
                } else fra.me.REG[6] = once_value_72;
@@ -6915,30 +6915,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_73) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Int(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_73 = fra.me.REG[7];
                register_static_object(&once_value_73);
                } else fra.me.REG[7] = once_value_73;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -6946,26 +6946,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label74;
                label74: while(0);
                /* compiling/compiling_icode.nit:756 */
@@ -6973,30 +6973,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_75) {
                fra.me.REG[7] = BOX_NativeString(")<UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_75 = fra.me.REG[7];
                register_static_object(&once_value_75);
                } else fra.me.REG[7] = once_value_75;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7004,26 +7004,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label76;
                label76: while(0);
                /* compiling/compiling_icode.nit:756 */
@@ -7031,7 +7031,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_77) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_77 = fra.me.REG[7];
                register_static_object(&once_value_77);
                } else fra.me.REG[7] = once_value_77;
@@ -7045,7 +7045,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_79) {
                fra.me.REG[6] = BOX_NativeString(">");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_79 = fra.me.REG[6];
                register_static_object(&once_value_79);
                } else fra.me.REG[6] = once_value_79;
@@ -7068,30 +7068,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_80) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Int(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_80 = fra.me.REG[7];
                register_static_object(&once_value_80);
                } else fra.me.REG[7] = once_value_80;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7099,26 +7099,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label81;
                label81: while(0);
                /* compiling/compiling_icode.nit:758 */
@@ -7126,30 +7126,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_82) {
                fra.me.REG[7] = BOX_NativeString(")>UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_82 = fra.me.REG[7];
                register_static_object(&once_value_82);
                } else fra.me.REG[7] = once_value_82;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7157,26 +7157,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label83;
                label83: while(0);
                /* compiling/compiling_icode.nit:758 */
@@ -7184,7 +7184,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_84) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_84 = fra.me.REG[7];
                register_static_object(&once_value_84);
                } else fra.me.REG[7] = once_value_84;
@@ -7198,7 +7198,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_86) {
                fra.me.REG[6] = BOX_NativeString("<=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_86 = fra.me.REG[6];
                register_static_object(&once_value_86);
                } else fra.me.REG[6] = once_value_86;
@@ -7221,30 +7221,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_87) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Int(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_87 = fra.me.REG[7];
                register_static_object(&once_value_87);
                } else fra.me.REG[7] = once_value_87;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7252,26 +7252,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label88;
                label88: while(0);
                /* compiling/compiling_icode.nit:760 */
@@ -7279,30 +7279,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_89) {
                fra.me.REG[7] = BOX_NativeString(")<=UNTAG_Int(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_89 = fra.me.REG[7];
                register_static_object(&once_value_89);
                } else fra.me.REG[7] = once_value_89;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7310,26 +7310,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label90;
                label90: while(0);
                /* compiling/compiling_icode.nit:760 */
@@ -7337,7 +7337,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_91) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_91 = fra.me.REG[7];
                register_static_object(&once_value_91);
                } else fra.me.REG[7] = once_value_91;
@@ -7351,7 +7351,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_93) {
                fra.me.REG[6] = BOX_NativeString(">=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_93 = fra.me.REG[6];
                register_static_object(&once_value_93);
                } else fra.me.REG[6] = once_value_93;
@@ -7374,30 +7374,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_94) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Int(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_94 = fra.me.REG[7];
                register_static_object(&once_value_94);
                } else fra.me.REG[7] = once_value_94;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7405,26 +7405,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label95;
                label95: while(0);
                /* compiling/compiling_icode.nit:762 */
@@ -7432,30 +7432,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_96) {
                fra.me.REG[7] = BOX_NativeString(")>=UNTAG_Int(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_96 = fra.me.REG[7];
                register_static_object(&once_value_96);
                } else fra.me.REG[7] = once_value_96;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7463,26 +7463,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label97;
                label97: while(0);
                /* compiling/compiling_icode.nit:762 */
@@ -7490,7 +7490,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_98) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_98 = fra.me.REG[7];
                register_static_object(&once_value_98);
                } else fra.me.REG[7] = once_value_98;
@@ -7504,7 +7504,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_100) {
                fra.me.REG[6] = BOX_NativeString("lshift");
                REGB1 = TAG_Int(6);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_100 = fra.me.REG[6];
                register_static_object(&once_value_100);
                } else fra.me.REG[6] = once_value_100;
@@ -7527,30 +7527,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_101) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_101 = fra.me.REG[7];
                register_static_object(&once_value_101);
                } else fra.me.REG[7] = once_value_101;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7558,26 +7558,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label102;
                label102: while(0);
                /* compiling/compiling_icode.nit:764 */
@@ -7585,30 +7585,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_103) {
                fra.me.REG[7] = BOX_NativeString(")<<UNTAG_Int(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_103 = fra.me.REG[7];
                register_static_object(&once_value_103);
                } else fra.me.REG[7] = once_value_103;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7616,26 +7616,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label104;
                label104: while(0);
                /* compiling/compiling_icode.nit:764 */
@@ -7643,7 +7643,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_105) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_105 = fra.me.REG[7];
                register_static_object(&once_value_105);
                } else fra.me.REG[7] = once_value_105;
@@ -7657,7 +7657,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_107) {
                fra.me.REG[6] = BOX_NativeString("rshift");
                REGB1 = TAG_Int(6);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_107 = fra.me.REG[6];
                register_static_object(&once_value_107);
                } else fra.me.REG[6] = once_value_107;
@@ -7680,30 +7680,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_108) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_108 = fra.me.REG[7];
                register_static_object(&once_value_108);
                } else fra.me.REG[7] = once_value_108;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7711,26 +7711,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label109;
                label109: while(0);
                /* compiling/compiling_icode.nit:766 */
@@ -7738,30 +7738,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_110) {
                fra.me.REG[7] = BOX_NativeString(")>>UNTAG_Int(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_110 = fra.me.REG[7];
                register_static_object(&once_value_110);
                } else fra.me.REG[7] = once_value_110;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7769,26 +7769,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label111;
                label111: while(0);
                /* compiling/compiling_icode.nit:766 */
@@ -7796,7 +7796,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_112) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_112 = fra.me.REG[7];
                register_static_object(&once_value_112);
                } else fra.me.REG[7] = once_value_112;
@@ -7810,7 +7810,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_114) {
                fra.me.REG[6] = BOX_NativeString("==");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_114 = fra.me.REG[6];
                register_static_object(&once_value_114);
                } else fra.me.REG[6] = once_value_114;
@@ -7833,30 +7833,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_115) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool((");
                REGB1 = TAG_Int(10);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_115 = fra.me.REG[7];
                register_static_object(&once_value_115);
                } else fra.me.REG[7] = once_value_115;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7864,26 +7864,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label116;
                label116: while(0);
                /* compiling/compiling_icode.nit:768 */
@@ -7891,30 +7891,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_117) {
                fra.me.REG[7] = BOX_NativeString(")==(");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_117 = fra.me.REG[7];
                register_static_object(&once_value_117);
                } else fra.me.REG[7] = once_value_117;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -7922,26 +7922,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label118;
                label118: while(0);
                /* compiling/compiling_icode.nit:768 */
@@ -7949,7 +7949,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_119) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_119 = fra.me.REG[7];
                register_static_object(&once_value_119);
                } else fra.me.REG[7] = once_value_119;
@@ -7963,7 +7963,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_121) {
                fra.me.REG[6] = BOX_NativeString("!=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_121 = fra.me.REG[6];
                register_static_object(&once_value_121);
                } else fra.me.REG[6] = once_value_121;
@@ -7986,30 +7986,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_122) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool((");
                REGB1 = TAG_Int(10);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_122 = fra.me.REG[7];
                register_static_object(&once_value_122);
                } else fra.me.REG[7] = once_value_122;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8017,26 +8017,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label123;
                label123: while(0);
                /* compiling/compiling_icode.nit:770 */
@@ -8044,30 +8044,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_124) {
                fra.me.REG[7] = BOX_NativeString(")!=(");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_124 = fra.me.REG[7];
                register_static_object(&once_value_124);
                } else fra.me.REG[7] = once_value_124;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8075,26 +8075,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label125;
                label125: while(0);
                /* compiling/compiling_icode.nit:770 */
@@ -8102,7 +8102,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_126) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_126 = fra.me.REG[7];
                register_static_object(&once_value_126);
                } else fra.me.REG[7] = once_value_126;
@@ -8136,7 +8136,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       if (!once_value_128) {
         fra.me.REG[6] = BOX_NativeString("Float");
         REGB1 = TAG_Int(5);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_128 = fra.me.REG[6];
         register_static_object(&once_value_128);
       } else fra.me.REG[6] = once_value_128;
@@ -8158,7 +8158,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_130) {
           fra.me.REG[6] = BOX_NativeString("object_id");
           REGB1 = TAG_Int(9);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
           once_value_130 = fra.me.REG[6];
           register_static_object(&once_value_130);
         } else fra.me.REG[6] = once_value_130;
@@ -8181,30 +8181,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_131) {
           fra.me.REG[7] = BOX_NativeString("TAG_Int((bigint)UNBOX_Float(");
           REGB1 = TAG_Int(28);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
           once_value_131 = fra.me.REG[7];
           register_static_object(&once_value_131);
         } else fra.me.REG[7] = once_value_131;
         fra.me.REG[7] = fra.me.REG[7];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
         REGB1 = TAG_Int(0);
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[7] = fra.me.REG[4];
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB2 = TAG_Int(0);
         REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
           REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8212,26 +8212,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB0 = TAG_Bool(0);
           REGB2 = REGB0;
         }
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
         REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label132;
         label132: while(0);
         /* compiling/compiling_icode.nit:774 */
@@ -8239,7 +8239,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_133) {
           fra.me.REG[7] = BOX_NativeString("))");
           REGB1 = TAG_Int(2);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
           once_value_133 = fra.me.REG[7];
           register_static_object(&once_value_133);
         } else fra.me.REG[7] = once_value_133;
@@ -8253,7 +8253,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_135) {
             fra.me.REG[6] = BOX_NativeString("unary -");
             REGB1 = TAG_Int(7);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
             once_value_135 = fra.me.REG[6];
             register_static_object(&once_value_135);
           } else fra.me.REG[6] = once_value_135;
@@ -8276,30 +8276,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_136) {
             fra.me.REG[7] = BOX_NativeString("BOX_Float(-UNBOX_Float(");
             REGB1 = TAG_Int(23);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
             once_value_136 = fra.me.REG[7];
             register_static_object(&once_value_136);
           } else fra.me.REG[7] = once_value_136;
           fra.me.REG[7] = fra.me.REG[7];
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           REGB1 = TAG_Int(0);
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB2 = TAG_Int(0);
           REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB0)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8307,26 +8307,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB0 = TAG_Bool(0);
             REGB2 = REGB0;
           }
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
           REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label137;
           label137: while(0);
           /* compiling/compiling_icode.nit:776 */
@@ -8334,7 +8334,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_138) {
             fra.me.REG[7] = BOX_NativeString("))");
             REGB1 = TAG_Int(2);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
             once_value_138 = fra.me.REG[7];
             register_static_object(&once_value_138);
           } else fra.me.REG[7] = once_value_138;
@@ -8348,7 +8348,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_140) {
               fra.me.REG[6] = BOX_NativeString("output");
               REGB1 = TAG_Int(6);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
               once_value_140 = fra.me.REG[6];
               register_static_object(&once_value_140);
             } else fra.me.REG[6] = once_value_140;
@@ -8371,30 +8371,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_141) {
               fra.me.REG[7] = BOX_NativeString("printf(\"%f\\n\", UNBOX_Float(");
               REGB1 = TAG_Int(27);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_141 = fra.me.REG[7];
               register_static_object(&once_value_141);
             } else fra.me.REG[7] = once_value_141;
             fra.me.REG[7] = fra.me.REG[7];
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             REGB1 = TAG_Int(0);
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB2 = TAG_Int(0);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB0)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB2)) {
               REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8402,26 +8402,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB0 = TAG_Bool(0);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label142;
             label142: while(0);
             /* compiling/compiling_icode.nit:778 */
@@ -8429,7 +8429,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_143) {
               fra.me.REG[7] = BOX_NativeString("));");
               REGB1 = TAG_Int(3);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_143 = fra.me.REG[7];
               register_static_object(&once_value_143);
             } else fra.me.REG[7] = once_value_143;
@@ -8443,7 +8443,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_145) {
                fra.me.REG[6] = BOX_NativeString("to_i");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_145 = fra.me.REG[6];
                register_static_object(&once_value_145);
               } else fra.me.REG[6] = once_value_145;
@@ -8466,30 +8466,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_146) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int((bigint)UNBOX_Float(");
                REGB1 = TAG_Int(28);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_146 = fra.me.REG[7];
                register_static_object(&once_value_146);
               } else fra.me.REG[7] = once_value_146;
               fra.me.REG[7] = fra.me.REG[7];
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               REGB1 = TAG_Int(0);
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB2 = TAG_Int(0);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB0)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8497,26 +8497,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
               REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label147;
               label147: while(0);
               /* compiling/compiling_icode.nit:780 */
@@ -8524,7 +8524,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_148) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_148 = fra.me.REG[7];
                register_static_object(&once_value_148);
               } else fra.me.REG[7] = once_value_148;
@@ -8538,7 +8538,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_150) {
                fra.me.REG[6] = BOX_NativeString("+");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_150 = fra.me.REG[6];
                register_static_object(&once_value_150);
                } else fra.me.REG[6] = once_value_150;
@@ -8561,30 +8561,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_151) {
                fra.me.REG[7] = BOX_NativeString("BOX_Float(UNBOX_Float(");
                REGB1 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_151 = fra.me.REG[7];
                register_static_object(&once_value_151);
                } else fra.me.REG[7] = once_value_151;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8592,26 +8592,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label152;
                label152: while(0);
                /* compiling/compiling_icode.nit:782 */
@@ -8619,30 +8619,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_153) {
                fra.me.REG[7] = BOX_NativeString(")+UNBOX_Float(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_153 = fra.me.REG[7];
                register_static_object(&once_value_153);
                } else fra.me.REG[7] = once_value_153;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8650,26 +8650,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label154;
                label154: while(0);
                /* compiling/compiling_icode.nit:782 */
@@ -8677,7 +8677,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_155) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_155 = fra.me.REG[7];
                register_static_object(&once_value_155);
                } else fra.me.REG[7] = once_value_155;
@@ -8691,7 +8691,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_157) {
                fra.me.REG[6] = BOX_NativeString("-");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_157 = fra.me.REG[6];
                register_static_object(&once_value_157);
                } else fra.me.REG[6] = once_value_157;
@@ -8714,30 +8714,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_158) {
                fra.me.REG[7] = BOX_NativeString("BOX_Float(UNBOX_Float(");
                REGB1 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_158 = fra.me.REG[7];
                register_static_object(&once_value_158);
                } else fra.me.REG[7] = once_value_158;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8745,26 +8745,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label159;
                label159: while(0);
                /* compiling/compiling_icode.nit:784 */
@@ -8772,30 +8772,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_160) {
                fra.me.REG[7] = BOX_NativeString(")-UNBOX_Float(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_160 = fra.me.REG[7];
                register_static_object(&once_value_160);
                } else fra.me.REG[7] = once_value_160;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8803,26 +8803,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label161;
                label161: while(0);
                /* compiling/compiling_icode.nit:784 */
@@ -8830,7 +8830,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_162) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_162 = fra.me.REG[7];
                register_static_object(&once_value_162);
                } else fra.me.REG[7] = once_value_162;
@@ -8844,7 +8844,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_164) {
                fra.me.REG[6] = BOX_NativeString("*");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_164 = fra.me.REG[6];
                register_static_object(&once_value_164);
                } else fra.me.REG[6] = once_value_164;
@@ -8867,30 +8867,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_165) {
                fra.me.REG[7] = BOX_NativeString("BOX_Float(UNBOX_Float(");
                REGB1 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_165 = fra.me.REG[7];
                register_static_object(&once_value_165);
                } else fra.me.REG[7] = once_value_165;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8898,26 +8898,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label166;
                label166: while(0);
                /* compiling/compiling_icode.nit:786 */
@@ -8925,30 +8925,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_167) {
                fra.me.REG[7] = BOX_NativeString(")*UNBOX_Float(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_167 = fra.me.REG[7];
                register_static_object(&once_value_167);
                } else fra.me.REG[7] = once_value_167;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -8956,26 +8956,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label168;
                label168: while(0);
                /* compiling/compiling_icode.nit:786 */
@@ -8983,7 +8983,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_169) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_169 = fra.me.REG[7];
                register_static_object(&once_value_169);
                } else fra.me.REG[7] = once_value_169;
@@ -8997,7 +8997,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_171) {
                fra.me.REG[6] = BOX_NativeString("/");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_171 = fra.me.REG[6];
                register_static_object(&once_value_171);
                } else fra.me.REG[6] = once_value_171;
@@ -9020,30 +9020,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_172) {
                fra.me.REG[7] = BOX_NativeString("BOX_Float(UNBOX_Float(");
                REGB1 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_172 = fra.me.REG[7];
                register_static_object(&once_value_172);
                } else fra.me.REG[7] = once_value_172;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9051,26 +9051,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label173;
                label173: while(0);
                /* compiling/compiling_icode.nit:788 */
@@ -9078,30 +9078,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_174) {
                fra.me.REG[7] = BOX_NativeString(")/UNBOX_Float(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_174 = fra.me.REG[7];
                register_static_object(&once_value_174);
                } else fra.me.REG[7] = once_value_174;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9109,26 +9109,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label175;
                label175: while(0);
                /* compiling/compiling_icode.nit:788 */
@@ -9136,7 +9136,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_176) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_176 = fra.me.REG[7];
                register_static_object(&once_value_176);
                } else fra.me.REG[7] = once_value_176;
@@ -9150,7 +9150,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_178) {
                fra.me.REG[6] = BOX_NativeString("<");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_178 = fra.me.REG[6];
                register_static_object(&once_value_178);
                } else fra.me.REG[6] = once_value_178;
@@ -9173,30 +9173,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_179) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNBOX_Float(");
                REGB1 = TAG_Int(21);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_179 = fra.me.REG[7];
                register_static_object(&once_value_179);
                } else fra.me.REG[7] = once_value_179;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9204,26 +9204,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label180;
                label180: while(0);
                /* compiling/compiling_icode.nit:790 */
@@ -9231,30 +9231,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_181) {
                fra.me.REG[7] = BOX_NativeString(")<UNBOX_Float(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_181 = fra.me.REG[7];
                register_static_object(&once_value_181);
                } else fra.me.REG[7] = once_value_181;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9262,26 +9262,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label182;
                label182: while(0);
                /* compiling/compiling_icode.nit:790 */
@@ -9289,7 +9289,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_183) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_183 = fra.me.REG[7];
                register_static_object(&once_value_183);
                } else fra.me.REG[7] = once_value_183;
@@ -9303,7 +9303,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_185) {
                fra.me.REG[6] = BOX_NativeString(">");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_185 = fra.me.REG[6];
                register_static_object(&once_value_185);
                } else fra.me.REG[6] = once_value_185;
@@ -9326,30 +9326,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_186) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNBOX_Float(");
                REGB1 = TAG_Int(21);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_186 = fra.me.REG[7];
                register_static_object(&once_value_186);
                } else fra.me.REG[7] = once_value_186;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9357,26 +9357,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label187;
                label187: while(0);
                /* compiling/compiling_icode.nit:792 */
@@ -9384,30 +9384,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_188) {
                fra.me.REG[7] = BOX_NativeString(")>UNBOX_Float(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_188 = fra.me.REG[7];
                register_static_object(&once_value_188);
                } else fra.me.REG[7] = once_value_188;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9415,26 +9415,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label189;
                label189: while(0);
                /* compiling/compiling_icode.nit:792 */
@@ -9442,7 +9442,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_190) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_190 = fra.me.REG[7];
                register_static_object(&once_value_190);
                } else fra.me.REG[7] = once_value_190;
@@ -9456,7 +9456,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_192) {
                fra.me.REG[6] = BOX_NativeString("<=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_192 = fra.me.REG[6];
                register_static_object(&once_value_192);
                } else fra.me.REG[6] = once_value_192;
@@ -9479,30 +9479,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_193) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNBOX_Float(");
                REGB1 = TAG_Int(21);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_193 = fra.me.REG[7];
                register_static_object(&once_value_193);
                } else fra.me.REG[7] = once_value_193;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9510,26 +9510,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label194;
                label194: while(0);
                /* compiling/compiling_icode.nit:794 */
@@ -9537,30 +9537,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_195) {
                fra.me.REG[7] = BOX_NativeString(")<=UNBOX_Float(");
                REGB1 = TAG_Int(15);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_195 = fra.me.REG[7];
                register_static_object(&once_value_195);
                } else fra.me.REG[7] = once_value_195;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9568,26 +9568,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label196;
                label196: while(0);
                /* compiling/compiling_icode.nit:794 */
@@ -9595,7 +9595,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_197) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_197 = fra.me.REG[7];
                register_static_object(&once_value_197);
                } else fra.me.REG[7] = once_value_197;
@@ -9609,7 +9609,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_199) {
                fra.me.REG[6] = BOX_NativeString(">=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_199 = fra.me.REG[6];
                register_static_object(&once_value_199);
                } else fra.me.REG[6] = once_value_199;
@@ -9632,30 +9632,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_200) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNBOX_Float(");
                REGB1 = TAG_Int(21);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_200 = fra.me.REG[7];
                register_static_object(&once_value_200);
                } else fra.me.REG[7] = once_value_200;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9663,26 +9663,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label201;
                label201: while(0);
                /* compiling/compiling_icode.nit:796 */
@@ -9690,30 +9690,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_202) {
                fra.me.REG[7] = BOX_NativeString(")>=UNBOX_Float(");
                REGB1 = TAG_Int(15);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_202 = fra.me.REG[7];
                register_static_object(&once_value_202);
                } else fra.me.REG[7] = once_value_202;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9721,26 +9721,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label203;
                label203: while(0);
                /* compiling/compiling_icode.nit:796 */
@@ -9748,7 +9748,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_204) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_204 = fra.me.REG[7];
                register_static_object(&once_value_204);
                } else fra.me.REG[7] = once_value_204;
@@ -9774,7 +9774,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         if (!once_value_206) {
           fra.me.REG[6] = BOX_NativeString("Char");
           REGB1 = TAG_Int(4);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
           once_value_206 = fra.me.REG[6];
           register_static_object(&once_value_206);
         } else fra.me.REG[6] = once_value_206;
@@ -9796,7 +9796,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_208) {
             fra.me.REG[6] = BOX_NativeString("object_id");
             REGB1 = TAG_Int(9);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
             once_value_208 = fra.me.REG[6];
             register_static_object(&once_value_208);
           } else fra.me.REG[6] = once_value_208;
@@ -9819,30 +9819,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_209) {
             fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Char(");
             REGB1 = TAG_Int(19);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
             once_value_209 = fra.me.REG[7];
             register_static_object(&once_value_209);
           } else fra.me.REG[7] = once_value_209;
           fra.me.REG[7] = fra.me.REG[7];
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           REGB1 = TAG_Int(0);
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB2 = TAG_Int(0);
           REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB0)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9850,26 +9850,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB0 = TAG_Bool(0);
             REGB2 = REGB0;
           }
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
           REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label210;
           label210: while(0);
           /* compiling/compiling_icode.nit:800 */
@@ -9877,7 +9877,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_211) {
             fra.me.REG[7] = BOX_NativeString("))");
             REGB1 = TAG_Int(2);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
             once_value_211 = fra.me.REG[7];
             register_static_object(&once_value_211);
           } else fra.me.REG[7] = once_value_211;
@@ -9891,7 +9891,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_213) {
               fra.me.REG[6] = BOX_NativeString("unary -");
               REGB1 = TAG_Int(7);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
               once_value_213 = fra.me.REG[6];
               register_static_object(&once_value_213);
             } else fra.me.REG[6] = once_value_213;
@@ -9914,30 +9914,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_214) {
               fra.me.REG[7] = BOX_NativeString("TAG_Char(-UNTAG_Char(");
               REGB1 = TAG_Int(21);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_214 = fra.me.REG[7];
               register_static_object(&once_value_214);
             } else fra.me.REG[7] = once_value_214;
             fra.me.REG[7] = fra.me.REG[7];
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             REGB1 = TAG_Int(0);
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB2 = TAG_Int(0);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB0)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB2)) {
               REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9945,26 +9945,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB0 = TAG_Bool(0);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label215;
             label215: while(0);
             /* compiling/compiling_icode.nit:802 */
@@ -9972,7 +9972,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_216) {
               fra.me.REG[7] = BOX_NativeString("))");
               REGB1 = TAG_Int(2);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_216 = fra.me.REG[7];
               register_static_object(&once_value_216);
             } else fra.me.REG[7] = once_value_216;
@@ -9986,7 +9986,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_218) {
                fra.me.REG[6] = BOX_NativeString("output");
                REGB1 = TAG_Int(6);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_218 = fra.me.REG[6];
                register_static_object(&once_value_218);
               } else fra.me.REG[6] = once_value_218;
@@ -10009,30 +10009,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_219) {
                fra.me.REG[7] = BOX_NativeString("printf(\"%c\", (unsigned char)UNTAG_Char(");
                REGB1 = TAG_Int(39);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_219 = fra.me.REG[7];
                register_static_object(&once_value_219);
               } else fra.me.REG[7] = once_value_219;
               fra.me.REG[7] = fra.me.REG[7];
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               REGB1 = TAG_Int(0);
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB2 = TAG_Int(0);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB0)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10040,26 +10040,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
               REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label220;
               label220: while(0);
               /* compiling/compiling_icode.nit:804 */
@@ -10067,7 +10067,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_221) {
                fra.me.REG[7] = BOX_NativeString("));");
                REGB1 = TAG_Int(3);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_221 = fra.me.REG[7];
                register_static_object(&once_value_221);
               } else fra.me.REG[7] = once_value_221;
@@ -10081,7 +10081,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_223) {
                fra.me.REG[6] = BOX_NativeString("ascii");
                REGB1 = TAG_Int(5);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_223 = fra.me.REG[6];
                register_static_object(&once_value_223);
                } else fra.me.REG[6] = once_value_223;
@@ -10104,30 +10104,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_224) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int((unsigned char)UNTAG_Char(");
                REGB1 = TAG_Int(34);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_224 = fra.me.REG[7];
                register_static_object(&once_value_224);
                } else fra.me.REG[7] = once_value_224;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10135,26 +10135,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label225;
                label225: while(0);
                /* compiling/compiling_icode.nit:806 */
@@ -10162,7 +10162,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_226) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_226 = fra.me.REG[7];
                register_static_object(&once_value_226);
                } else fra.me.REG[7] = once_value_226;
@@ -10176,7 +10176,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_228) {
                fra.me.REG[6] = BOX_NativeString("succ");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_228 = fra.me.REG[6];
                register_static_object(&once_value_228);
                } else fra.me.REG[6] = once_value_228;
@@ -10199,30 +10199,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_229) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_229 = fra.me.REG[7];
                register_static_object(&once_value_229);
                } else fra.me.REG[7] = once_value_229;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10230,26 +10230,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label230;
                label230: while(0);
                /* compiling/compiling_icode.nit:808 */
@@ -10257,7 +10257,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_231) {
                fra.me.REG[7] = BOX_NativeString(")+1)");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_231 = fra.me.REG[7];
                register_static_object(&once_value_231);
                } else fra.me.REG[7] = once_value_231;
@@ -10271,7 +10271,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_233) {
                fra.me.REG[6] = BOX_NativeString("prec");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_233 = fra.me.REG[6];
                register_static_object(&once_value_233);
                } else fra.me.REG[6] = once_value_233;
@@ -10294,30 +10294,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_234) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_234 = fra.me.REG[7];
                register_static_object(&once_value_234);
                } else fra.me.REG[7] = once_value_234;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10325,26 +10325,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label235;
                label235: while(0);
                /* compiling/compiling_icode.nit:810 */
@@ -10352,7 +10352,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_236) {
                fra.me.REG[7] = BOX_NativeString(")-1)");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_236 = fra.me.REG[7];
                register_static_object(&once_value_236);
                } else fra.me.REG[7] = once_value_236;
@@ -10366,7 +10366,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_238) {
                fra.me.REG[6] = BOX_NativeString("to_i");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_238 = fra.me.REG[6];
                register_static_object(&once_value_238);
                } else fra.me.REG[6] = once_value_238;
@@ -10389,30 +10389,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_239) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Char(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_239 = fra.me.REG[7];
                register_static_object(&once_value_239);
                } else fra.me.REG[7] = once_value_239;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10420,26 +10420,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label240;
                label240: while(0);
                /* compiling/compiling_icode.nit:812 */
@@ -10447,7 +10447,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_241) {
                fra.me.REG[7] = BOX_NativeString(")-'0')");
                REGB1 = TAG_Int(6);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_241 = fra.me.REG[7];
                register_static_object(&once_value_241);
                } else fra.me.REG[7] = once_value_241;
@@ -10461,7 +10461,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_243) {
                fra.me.REG[6] = BOX_NativeString("+");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_243 = fra.me.REG[6];
                register_static_object(&once_value_243);
                } else fra.me.REG[6] = once_value_243;
@@ -10484,30 +10484,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_244) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_244 = fra.me.REG[7];
                register_static_object(&once_value_244);
                } else fra.me.REG[7] = once_value_244;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10515,26 +10515,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label245;
                label245: while(0);
                /* compiling/compiling_icode.nit:814 */
@@ -10542,30 +10542,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_246) {
                fra.me.REG[7] = BOX_NativeString(")+UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_246 = fra.me.REG[7];
                register_static_object(&once_value_246);
                } else fra.me.REG[7] = once_value_246;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10573,26 +10573,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label247;
                label247: while(0);
                /* compiling/compiling_icode.nit:814 */
@@ -10600,7 +10600,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_248) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_248 = fra.me.REG[7];
                register_static_object(&once_value_248);
                } else fra.me.REG[7] = once_value_248;
@@ -10614,7 +10614,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_250) {
                fra.me.REG[6] = BOX_NativeString("-");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_250 = fra.me.REG[6];
                register_static_object(&once_value_250);
                } else fra.me.REG[6] = once_value_250;
@@ -10637,30 +10637,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_251) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_251 = fra.me.REG[7];
                register_static_object(&once_value_251);
                } else fra.me.REG[7] = once_value_251;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10668,26 +10668,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label252;
                label252: while(0);
                /* compiling/compiling_icode.nit:816 */
@@ -10695,30 +10695,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_253) {
                fra.me.REG[7] = BOX_NativeString(")-UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_253 = fra.me.REG[7];
                register_static_object(&once_value_253);
                } else fra.me.REG[7] = once_value_253;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10726,26 +10726,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label254;
                label254: while(0);
                /* compiling/compiling_icode.nit:816 */
@@ -10753,7 +10753,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_255) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_255 = fra.me.REG[7];
                register_static_object(&once_value_255);
                } else fra.me.REG[7] = once_value_255;
@@ -10767,7 +10767,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_257) {
                fra.me.REG[6] = BOX_NativeString("*");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_257 = fra.me.REG[6];
                register_static_object(&once_value_257);
                } else fra.me.REG[6] = once_value_257;
@@ -10790,30 +10790,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_258) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_258 = fra.me.REG[7];
                register_static_object(&once_value_258);
                } else fra.me.REG[7] = once_value_258;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10821,26 +10821,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label259;
                label259: while(0);
                /* compiling/compiling_icode.nit:818 */
@@ -10848,30 +10848,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_260) {
                fra.me.REG[7] = BOX_NativeString(")*UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_260 = fra.me.REG[7];
                register_static_object(&once_value_260);
                } else fra.me.REG[7] = once_value_260;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10879,26 +10879,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label261;
                label261: while(0);
                /* compiling/compiling_icode.nit:818 */
@@ -10906,7 +10906,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_262) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_262 = fra.me.REG[7];
                register_static_object(&once_value_262);
                } else fra.me.REG[7] = once_value_262;
@@ -10920,7 +10920,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_264) {
                fra.me.REG[6] = BOX_NativeString("/");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_264 = fra.me.REG[6];
                register_static_object(&once_value_264);
                } else fra.me.REG[6] = once_value_264;
@@ -10943,30 +10943,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_265) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_265 = fra.me.REG[7];
                register_static_object(&once_value_265);
                } else fra.me.REG[7] = once_value_265;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -10974,26 +10974,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label266;
                label266: while(0);
                /* compiling/compiling_icode.nit:820 */
@@ -11001,30 +11001,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_267) {
                fra.me.REG[7] = BOX_NativeString(")/UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_267 = fra.me.REG[7];
                register_static_object(&once_value_267);
                } else fra.me.REG[7] = once_value_267;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11032,26 +11032,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label268;
                label268: while(0);
                /* compiling/compiling_icode.nit:820 */
@@ -11059,7 +11059,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_269) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_269 = fra.me.REG[7];
                register_static_object(&once_value_269);
                } else fra.me.REG[7] = once_value_269;
@@ -11073,7 +11073,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_271) {
                fra.me.REG[6] = BOX_NativeString("%");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_271 = fra.me.REG[6];
                register_static_object(&once_value_271);
                } else fra.me.REG[6] = once_value_271;
@@ -11096,30 +11096,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_272) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_272 = fra.me.REG[7];
                register_static_object(&once_value_272);
                } else fra.me.REG[7] = once_value_272;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11127,26 +11127,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label273;
                label273: while(0);
                /* compiling/compiling_icode.nit:822 */
@@ -11154,30 +11154,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_274) {
                fra.me.REG[7] = BOX_NativeString(")%UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_274 = fra.me.REG[7];
                register_static_object(&once_value_274);
                } else fra.me.REG[7] = once_value_274;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11185,26 +11185,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label275;
                label275: while(0);
                /* compiling/compiling_icode.nit:822 */
@@ -11212,7 +11212,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_276) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_276 = fra.me.REG[7];
                register_static_object(&once_value_276);
                } else fra.me.REG[7] = once_value_276;
@@ -11226,7 +11226,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_278) {
                fra.me.REG[6] = BOX_NativeString("<");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_278 = fra.me.REG[6];
                register_static_object(&once_value_278);
                } else fra.me.REG[6] = once_value_278;
@@ -11249,30 +11249,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_279) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_279 = fra.me.REG[7];
                register_static_object(&once_value_279);
                } else fra.me.REG[7] = once_value_279;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11280,26 +11280,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label280;
                label280: while(0);
                /* compiling/compiling_icode.nit:824 */
@@ -11307,30 +11307,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_281) {
                fra.me.REG[7] = BOX_NativeString(")<UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_281 = fra.me.REG[7];
                register_static_object(&once_value_281);
                } else fra.me.REG[7] = once_value_281;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11338,26 +11338,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label282;
                label282: while(0);
                /* compiling/compiling_icode.nit:824 */
@@ -11365,7 +11365,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_283) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_283 = fra.me.REG[7];
                register_static_object(&once_value_283);
                } else fra.me.REG[7] = once_value_283;
@@ -11379,7 +11379,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_285) {
                fra.me.REG[6] = BOX_NativeString(">");
                REGB1 = TAG_Int(1);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_285 = fra.me.REG[6];
                register_static_object(&once_value_285);
                } else fra.me.REG[6] = once_value_285;
@@ -11402,30 +11402,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_286) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_286 = fra.me.REG[7];
                register_static_object(&once_value_286);
                } else fra.me.REG[7] = once_value_286;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11433,26 +11433,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label287;
                label287: while(0);
                /* compiling/compiling_icode.nit:826 */
@@ -11460,30 +11460,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_288) {
                fra.me.REG[7] = BOX_NativeString(")>UNTAG_Char(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_288 = fra.me.REG[7];
                register_static_object(&once_value_288);
                } else fra.me.REG[7] = once_value_288;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11491,26 +11491,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label289;
                label289: while(0);
                /* compiling/compiling_icode.nit:826 */
@@ -11518,7 +11518,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_290) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_290 = fra.me.REG[7];
                register_static_object(&once_value_290);
                } else fra.me.REG[7] = once_value_290;
@@ -11532,7 +11532,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_292) {
                fra.me.REG[6] = BOX_NativeString("<=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_292 = fra.me.REG[6];
                register_static_object(&once_value_292);
                } else fra.me.REG[6] = once_value_292;
@@ -11555,30 +11555,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_293) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_293 = fra.me.REG[7];
                register_static_object(&once_value_293);
                } else fra.me.REG[7] = once_value_293;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11586,26 +11586,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label294;
                label294: while(0);
                /* compiling/compiling_icode.nit:828 */
@@ -11613,30 +11613,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_295) {
                fra.me.REG[7] = BOX_NativeString(")<=UNTAG_Char(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_295 = fra.me.REG[7];
                register_static_object(&once_value_295);
                } else fra.me.REG[7] = once_value_295;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11644,26 +11644,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label296;
                label296: while(0);
                /* compiling/compiling_icode.nit:828 */
@@ -11671,7 +11671,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_297) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_297 = fra.me.REG[7];
                register_static_object(&once_value_297);
                } else fra.me.REG[7] = once_value_297;
@@ -11685,7 +11685,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_299) {
                fra.me.REG[6] = BOX_NativeString(">=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_299 = fra.me.REG[6];
                register_static_object(&once_value_299);
                } else fra.me.REG[6] = once_value_299;
@@ -11708,30 +11708,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_300) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Char(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_300 = fra.me.REG[7];
                register_static_object(&once_value_300);
                } else fra.me.REG[7] = once_value_300;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11739,26 +11739,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label301;
                label301: while(0);
                /* compiling/compiling_icode.nit:830 */
@@ -11766,30 +11766,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_302) {
                fra.me.REG[7] = BOX_NativeString(")>=UNTAG_Char(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_302 = fra.me.REG[7];
                register_static_object(&once_value_302);
                } else fra.me.REG[7] = once_value_302;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11797,26 +11797,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label303;
                label303: while(0);
                /* compiling/compiling_icode.nit:830 */
@@ -11824,7 +11824,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_304) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_304 = fra.me.REG[7];
                register_static_object(&once_value_304);
                } else fra.me.REG[7] = once_value_304;
@@ -11838,7 +11838,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_306) {
                fra.me.REG[6] = BOX_NativeString("==");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_306 = fra.me.REG[6];
                register_static_object(&once_value_306);
                } else fra.me.REG[6] = once_value_306;
@@ -11861,30 +11861,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_307) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool((");
                REGB1 = TAG_Int(10);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_307 = fra.me.REG[7];
                register_static_object(&once_value_307);
                } else fra.me.REG[7] = once_value_307;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11892,26 +11892,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label308;
                label308: while(0);
                /* compiling/compiling_icode.nit:832 */
@@ -11919,30 +11919,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_309) {
                fra.me.REG[7] = BOX_NativeString(")==(");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_309 = fra.me.REG[7];
                register_static_object(&once_value_309);
                } else fra.me.REG[7] = once_value_309;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -11950,26 +11950,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label310;
                label310: while(0);
                /* compiling/compiling_icode.nit:832 */
@@ -11977,7 +11977,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_311) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_311 = fra.me.REG[7];
                register_static_object(&once_value_311);
                } else fra.me.REG[7] = once_value_311;
@@ -11991,7 +11991,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_313) {
                fra.me.REG[6] = BOX_NativeString("!=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_313 = fra.me.REG[6];
                register_static_object(&once_value_313);
                } else fra.me.REG[6] = once_value_313;
@@ -12014,30 +12014,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_314) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool((");
                REGB1 = TAG_Int(10);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_314 = fra.me.REG[7];
                register_static_object(&once_value_314);
                } else fra.me.REG[7] = once_value_314;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12045,26 +12045,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label315;
                label315: while(0);
                /* compiling/compiling_icode.nit:834 */
@@ -12072,30 +12072,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_316) {
                fra.me.REG[7] = BOX_NativeString(")!=(");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_316 = fra.me.REG[7];
                register_static_object(&once_value_316);
                } else fra.me.REG[7] = once_value_316;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12103,26 +12103,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label317;
                label317: while(0);
                /* compiling/compiling_icode.nit:834 */
@@ -12130,7 +12130,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_318) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_318 = fra.me.REG[7];
                register_static_object(&once_value_318);
                } else fra.me.REG[7] = once_value_318;
@@ -12162,7 +12162,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           if (!once_value_320) {
             fra.me.REG[6] = BOX_NativeString("Bool");
             REGB1 = TAG_Int(4);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
             once_value_320 = fra.me.REG[6];
             register_static_object(&once_value_320);
           } else fra.me.REG[6] = once_value_320;
@@ -12184,7 +12184,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_322) {
               fra.me.REG[6] = BOX_NativeString("object_id");
               REGB1 = TAG_Int(9);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
               once_value_322 = fra.me.REG[6];
               register_static_object(&once_value_322);
             } else fra.me.REG[6] = once_value_322;
@@ -12207,30 +12207,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_323) {
               fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Bool(");
               REGB1 = TAG_Int(19);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_323 = fra.me.REG[7];
               register_static_object(&once_value_323);
             } else fra.me.REG[7] = once_value_323;
             fra.me.REG[7] = fra.me.REG[7];
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             REGB1 = TAG_Int(0);
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB2 = TAG_Int(0);
             REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB0)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB2)) {
               REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12238,26 +12238,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB0 = TAG_Bool(0);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label324;
             label324: while(0);
             /* compiling/compiling_icode.nit:838 */
@@ -12265,7 +12265,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_325) {
               fra.me.REG[7] = BOX_NativeString("))");
               REGB1 = TAG_Int(2);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_325 = fra.me.REG[7];
               register_static_object(&once_value_325);
             } else fra.me.REG[7] = once_value_325;
@@ -12279,7 +12279,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_327) {
                fra.me.REG[6] = BOX_NativeString("unary -");
                REGB1 = TAG_Int(7);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_327 = fra.me.REG[6];
                register_static_object(&once_value_327);
               } else fra.me.REG[6] = once_value_327;
@@ -12302,30 +12302,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_328) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(-UNTAG_Bool(");
                REGB1 = TAG_Int(21);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_328 = fra.me.REG[7];
                register_static_object(&once_value_328);
               } else fra.me.REG[7] = once_value_328;
               fra.me.REG[7] = fra.me.REG[7];
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               REGB1 = TAG_Int(0);
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB2 = TAG_Int(0);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB0)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12333,26 +12333,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
               REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label329;
               label329: while(0);
               /* compiling/compiling_icode.nit:840 */
@@ -12360,7 +12360,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_330) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_330 = fra.me.REG[7];
                register_static_object(&once_value_330);
               } else fra.me.REG[7] = once_value_330;
@@ -12374,7 +12374,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_332) {
                fra.me.REG[6] = BOX_NativeString("output");
                REGB1 = TAG_Int(6);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_332 = fra.me.REG[6];
                register_static_object(&once_value_332);
                } else fra.me.REG[6] = once_value_332;
@@ -12397,30 +12397,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_333) {
                fra.me.REG[7] = BOX_NativeString("(void)printf(UNTAG_Bool(");
                REGB1 = TAG_Int(24);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_333 = fra.me.REG[7];
                register_static_object(&once_value_333);
                } else fra.me.REG[7] = once_value_333;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12428,26 +12428,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label334;
                label334: while(0);
                /* compiling/compiling_icode.nit:842 */
@@ -12455,7 +12455,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_335) {
                fra.me.REG[7] = BOX_NativeString(")?\"true\\n\":\"false\\n\");");
                REGB1 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_335 = fra.me.REG[7];
                register_static_object(&once_value_335);
                } else fra.me.REG[7] = once_value_335;
@@ -12469,7 +12469,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_337) {
                fra.me.REG[6] = BOX_NativeString("ascii");
                REGB1 = TAG_Int(5);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_337 = fra.me.REG[6];
                register_static_object(&once_value_337);
                } else fra.me.REG[6] = once_value_337;
@@ -12492,30 +12492,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_338) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool(UNTAG_Bool(");
                REGB1 = TAG_Int(20);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_338 = fra.me.REG[7];
                register_static_object(&once_value_338);
                } else fra.me.REG[7] = once_value_338;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12523,26 +12523,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label339;
                label339: while(0);
                /* compiling/compiling_icode.nit:844 */
@@ -12550,7 +12550,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_340) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_340 = fra.me.REG[7];
                register_static_object(&once_value_340);
                } else fra.me.REG[7] = once_value_340;
@@ -12564,7 +12564,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_342) {
                fra.me.REG[6] = BOX_NativeString("to_i");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_342 = fra.me.REG[6];
                register_static_object(&once_value_342);
                } else fra.me.REG[6] = once_value_342;
@@ -12587,30 +12587,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_343) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNTAG_Bool(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_343 = fra.me.REG[7];
                register_static_object(&once_value_343);
                } else fra.me.REG[7] = once_value_343;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12618,26 +12618,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label344;
                label344: while(0);
                /* compiling/compiling_icode.nit:846 */
@@ -12645,7 +12645,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_345) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_345 = fra.me.REG[7];
                register_static_object(&once_value_345);
                } else fra.me.REG[7] = once_value_345;
@@ -12659,7 +12659,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_347) {
                fra.me.REG[6] = BOX_NativeString("==");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_347 = fra.me.REG[6];
                register_static_object(&once_value_347);
                } else fra.me.REG[6] = once_value_347;
@@ -12682,30 +12682,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_348) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool((");
                REGB1 = TAG_Int(10);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_348 = fra.me.REG[7];
                register_static_object(&once_value_348);
                } else fra.me.REG[7] = once_value_348;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12713,26 +12713,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label349;
                label349: while(0);
                /* compiling/compiling_icode.nit:848 */
@@ -12740,30 +12740,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_350) {
                fra.me.REG[7] = BOX_NativeString(")==(");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_350 = fra.me.REG[7];
                register_static_object(&once_value_350);
                } else fra.me.REG[7] = once_value_350;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12771,26 +12771,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label351;
                label351: while(0);
                /* compiling/compiling_icode.nit:848 */
@@ -12798,7 +12798,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_352) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_352 = fra.me.REG[7];
                register_static_object(&once_value_352);
                } else fra.me.REG[7] = once_value_352;
@@ -12812,7 +12812,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_354) {
                fra.me.REG[6] = BOX_NativeString("!=");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_354 = fra.me.REG[6];
                register_static_object(&once_value_354);
                } else fra.me.REG[6] = once_value_354;
@@ -12835,30 +12835,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_355) {
                fra.me.REG[7] = BOX_NativeString("TAG_Bool((");
                REGB1 = TAG_Int(10);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_355 = fra.me.REG[7];
                register_static_object(&once_value_355);
                } else fra.me.REG[7] = once_value_355;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12866,26 +12866,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label356;
                label356: while(0);
                /* compiling/compiling_icode.nit:850 */
@@ -12893,30 +12893,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_357) {
                fra.me.REG[7] = BOX_NativeString(")!=(");
                REGB1 = TAG_Int(4);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_357 = fra.me.REG[7];
                register_static_object(&once_value_357);
                } else fra.me.REG[7] = once_value_357;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -12924,26 +12924,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label358;
                label358: while(0);
                /* compiling/compiling_icode.nit:850 */
@@ -12951,7 +12951,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_359) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_359 = fra.me.REG[7];
                register_static_object(&once_value_359);
                } else fra.me.REG[7] = once_value_359;
@@ -12972,7 +12972,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             if (!once_value_361) {
               fra.me.REG[6] = BOX_NativeString("NativeArray");
               REGB1 = TAG_Int(11);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
               once_value_361 = fra.me.REG[6];
               register_static_object(&once_value_361);
             } else fra.me.REG[6] = once_value_361;
@@ -12994,7 +12994,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_363) {
                fra.me.REG[6] = BOX_NativeString("object_id");
                REGB1 = TAG_Int(9);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_363 = fra.me.REG[6];
                register_static_object(&once_value_363);
               } else fra.me.REG[6] = once_value_363;
@@ -13017,30 +13017,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_364) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(((Nit_NativeArray)");
                REGB1 = TAG_Int(26);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_364 = fra.me.REG[7];
                register_static_object(&once_value_364);
               } else fra.me.REG[7] = once_value_364;
               fra.me.REG[7] = fra.me.REG[7];
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               REGB1 = TAG_Int(0);
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB2 = TAG_Int(0);
               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB0)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13048,26 +13048,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
               REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label365;
               label365: while(0);
               /* compiling/compiling_icode.nit:854 */
@@ -13075,7 +13075,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_366) {
                fra.me.REG[7] = BOX_NativeString(")->object_id)");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_366 = fra.me.REG[7];
                register_static_object(&once_value_366);
               } else fra.me.REG[7] = once_value_366;
@@ -13089,7 +13089,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_368) {
                fra.me.REG[6] = BOX_NativeString("[]");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_368 = fra.me.REG[6];
                register_static_object(&once_value_368);
                } else fra.me.REG[6] = once_value_368;
@@ -13112,30 +13112,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_369) {
                fra.me.REG[7] = BOX_NativeString("((Nit_NativeArray)");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_369 = fra.me.REG[7];
                register_static_object(&once_value_369);
                } else fra.me.REG[7] = once_value_369;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13143,26 +13143,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label370;
                label370: while(0);
                /* compiling/compiling_icode.nit:856 */
@@ -13170,30 +13170,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_371) {
                fra.me.REG[7] = BOX_NativeString(")->val[UNTAG_Int(");
                REGB1 = TAG_Int(17);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_371 = fra.me.REG[7];
                register_static_object(&once_value_371);
                } else fra.me.REG[7] = once_value_371;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13201,26 +13201,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label372;
                label372: while(0);
                /* compiling/compiling_icode.nit:856 */
@@ -13228,7 +13228,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_373) {
                fra.me.REG[7] = BOX_NativeString(")]");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_373 = fra.me.REG[7];
                register_static_object(&once_value_373);
                } else fra.me.REG[7] = once_value_373;
@@ -13242,7 +13242,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_375) {
                fra.me.REG[6] = BOX_NativeString("[]=");
                REGB1 = TAG_Int(3);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_375 = fra.me.REG[6];
                register_static_object(&once_value_375);
                } else fra.me.REG[6] = once_value_375;
@@ -13265,30 +13265,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_376) {
                fra.me.REG[7] = BOX_NativeString("((Nit_NativeArray)");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_376 = fra.me.REG[7];
                register_static_object(&once_value_376);
                } else fra.me.REG[7] = once_value_376;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13296,26 +13296,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label377;
                label377: while(0);
                /* compiling/compiling_icode.nit:858 */
@@ -13323,30 +13323,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_378) {
                fra.me.REG[7] = BOX_NativeString(")->val[UNTAG_Int(");
                REGB1 = TAG_Int(17);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_378 = fra.me.REG[7];
                register_static_object(&once_value_378);
                } else fra.me.REG[7] = once_value_378;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13354,26 +13354,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label379;
                label379: while(0);
                /* compiling/compiling_icode.nit:858 */
@@ -13381,30 +13381,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_380) {
                fra.me.REG[7] = BOX_NativeString(")]=");
                REGB1 = TAG_Int(3);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_380 = fra.me.REG[7];
                register_static_object(&once_value_380);
                } else fra.me.REG[7] = once_value_380;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(2);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13412,26 +13412,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label381;
                label381: while(0);
                /* compiling/compiling_icode.nit:858 */
@@ -13439,7 +13439,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_382) {
                fra.me.REG[7] = BOX_NativeString("");
                REGB1 = TAG_Int(0);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_382 = fra.me.REG[7];
                register_static_object(&once_value_382);
                } else fra.me.REG[7] = once_value_382;
@@ -13453,7 +13453,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_384) {
                fra.me.REG[6] = BOX_NativeString("copy_to");
                REGB1 = TAG_Int(7);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_384 = fra.me.REG[6];
                register_static_object(&once_value_384);
                } else fra.me.REG[6] = once_value_384;
@@ -13476,30 +13476,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_385) {
                fra.me.REG[7] = BOX_NativeString("(void)memcpy(((Nit_NativeArray )");
                REGB1 = TAG_Int(32);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_385 = fra.me.REG[7];
                register_static_object(&once_value_385);
                } else fra.me.REG[7] = once_value_385;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13507,26 +13507,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label386;
                label386: while(0);
                /* compiling/compiling_icode.nit:860 */
@@ -13534,30 +13534,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_387) {
                fra.me.REG[7] = BOX_NativeString(")->val, ((Nit_NativeArray)");
                REGB1 = TAG_Int(26);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_387 = fra.me.REG[7];
                register_static_object(&once_value_387);
                } else fra.me.REG[7] = once_value_387;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13565,26 +13565,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label388;
                label388: while(0);
                /* compiling/compiling_icode.nit:860 */
@@ -13592,30 +13592,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_389) {
                fra.me.REG[7] = BOX_NativeString(")->val, UNTAG_Int(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_389 = fra.me.REG[7];
                register_static_object(&once_value_389);
                } else fra.me.REG[7] = once_value_389;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(2);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13623,26 +13623,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label390;
                label390: while(0);
                /* compiling/compiling_icode.nit:860 */
@@ -13650,7 +13650,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_391) {
                fra.me.REG[7] = BOX_NativeString(")*sizeof(val_t))");
                REGB1 = TAG_Int(16);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_391 = fra.me.REG[7];
                register_static_object(&once_value_391);
                } else fra.me.REG[7] = once_value_391;
@@ -13668,7 +13668,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               if (!once_value_393) {
                fra.me.REG[6] = BOX_NativeString("NativeString");
                REGB1 = TAG_Int(12);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_393 = fra.me.REG[6];
                register_static_object(&once_value_393);
               } else fra.me.REG[6] = once_value_393;
@@ -13690,7 +13690,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_395) {
                fra.me.REG[6] = BOX_NativeString("object_id");
                REGB1 = TAG_Int(9);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_395 = fra.me.REG[6];
                register_static_object(&once_value_395);
                } else fra.me.REG[6] = once_value_395;
@@ -13713,30 +13713,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_396) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(UNBOX_NativeString(");
                REGB1 = TAG_Int(27);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_396 = fra.me.REG[7];
                register_static_object(&once_value_396);
                } else fra.me.REG[7] = once_value_396;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13744,26 +13744,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label397;
                label397: while(0);
                /* compiling/compiling_icode.nit:864 */
@@ -13771,7 +13771,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_398) {
                fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_398 = fra.me.REG[7];
                register_static_object(&once_value_398);
                } else fra.me.REG[7] = once_value_398;
@@ -13785,7 +13785,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_400) {
                fra.me.REG[6] = BOX_NativeString("atoi");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_400 = fra.me.REG[6];
                register_static_object(&once_value_400);
                } else fra.me.REG[6] = once_value_400;
@@ -13808,30 +13808,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_401) {
                fra.me.REG[7] = BOX_NativeString("TAG_Int(atoi(UNBOX_NativeString(");
                REGB1 = TAG_Int(32);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_401 = fra.me.REG[7];
                register_static_object(&once_value_401);
                } else fra.me.REG[7] = once_value_401;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13839,26 +13839,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label402;
                label402: while(0);
                /* compiling/compiling_icode.nit:866 */
@@ -13866,7 +13866,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_403) {
                fra.me.REG[7] = BOX_NativeString(")))");
                REGB1 = TAG_Int(3);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_403 = fra.me.REG[7];
                register_static_object(&once_value_403);
                } else fra.me.REG[7] = once_value_403;
@@ -13880,7 +13880,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_405) {
                fra.me.REG[6] = BOX_NativeString("[]");
                REGB1 = TAG_Int(2);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_405 = fra.me.REG[6];
                register_static_object(&once_value_405);
                } else fra.me.REG[6] = once_value_405;
@@ -13903,30 +13903,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_406) {
                fra.me.REG[7] = BOX_NativeString("TAG_Char(UNBOX_NativeString(");
                REGB1 = TAG_Int(28);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_406 = fra.me.REG[7];
                register_static_object(&once_value_406);
                } else fra.me.REG[7] = once_value_406;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13934,26 +13934,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label407;
                label407: while(0);
                /* compiling/compiling_icode.nit:868 */
@@ -13961,30 +13961,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_408) {
                fra.me.REG[7] = BOX_NativeString(")[UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_408 = fra.me.REG[7];
                register_static_object(&once_value_408);
                } else fra.me.REG[7] = once_value_408;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -13992,26 +13992,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label409;
                label409: while(0);
                /* compiling/compiling_icode.nit:868 */
@@ -14019,7 +14019,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_410) {
                fra.me.REG[7] = BOX_NativeString(")])");
                REGB1 = TAG_Int(3);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_410 = fra.me.REG[7];
                register_static_object(&once_value_410);
                } else fra.me.REG[7] = once_value_410;
@@ -14033,7 +14033,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_412) {
                fra.me.REG[6] = BOX_NativeString("[]=");
                REGB1 = TAG_Int(3);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_412 = fra.me.REG[6];
                register_static_object(&once_value_412);
                } else fra.me.REG[6] = once_value_412;
@@ -14056,30 +14056,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_413) {
                fra.me.REG[7] = BOX_NativeString("UNBOX_NativeString(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_413 = fra.me.REG[7];
                register_static_object(&once_value_413);
                } else fra.me.REG[7] = once_value_413;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14087,26 +14087,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label414;
                label414: while(0);
                /* compiling/compiling_icode.nit:870 */
@@ -14114,30 +14114,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_415) {
                fra.me.REG[7] = BOX_NativeString(")[UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_415 = fra.me.REG[7];
                register_static_object(&once_value_415);
                } else fra.me.REG[7] = once_value_415;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14145,26 +14145,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label416;
                label416: while(0);
                /* compiling/compiling_icode.nit:870 */
@@ -14172,30 +14172,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_417) {
                fra.me.REG[7] = BOX_NativeString(")]=UNTAG_Char(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_417 = fra.me.REG[7];
                register_static_object(&once_value_417);
                } else fra.me.REG[7] = once_value_417;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(2);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14203,26 +14203,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label418;
                label418: while(0);
                /* compiling/compiling_icode.nit:870 */
@@ -14230,7 +14230,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_419) {
                fra.me.REG[7] = BOX_NativeString(");");
                REGB1 = TAG_Int(2);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_419 = fra.me.REG[7];
                register_static_object(&once_value_419);
                } else fra.me.REG[7] = once_value_419;
@@ -14244,7 +14244,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_421) {
                fra.me.REG[6] = BOX_NativeString("copy_to");
                REGB1 = TAG_Int(7);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_421 = fra.me.REG[6];
                register_static_object(&once_value_421);
                } else fra.me.REG[6] = once_value_421;
@@ -14267,30 +14267,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_422) {
                fra.me.REG[7] = BOX_NativeString("(void)memcpy(UNBOX_NativeString(");
                REGB1 = TAG_Int(32);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_422 = fra.me.REG[7];
                register_static_object(&once_value_422);
                } else fra.me.REG[7] = once_value_422;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14298,26 +14298,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label423;
                label423: while(0);
                /* compiling/compiling_icode.nit:872 */
@@ -14325,30 +14325,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_424) {
                fra.me.REG[7] = BOX_NativeString(")+UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_424 = fra.me.REG[7];
                register_static_object(&once_value_424);
                } else fra.me.REG[7] = once_value_424;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(4);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14356,26 +14356,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label425;
                label425: while(0);
                /* compiling/compiling_icode.nit:872 */
@@ -14383,30 +14383,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_426) {
                fra.me.REG[7] = BOX_NativeString("), UNBOX_NativeString(");
                REGB1 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_426 = fra.me.REG[7];
                register_static_object(&once_value_426);
                } else fra.me.REG[7] = once_value_426;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14414,26 +14414,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label427;
                label427: while(0);
                /* compiling/compiling_icode.nit:872 */
@@ -14441,30 +14441,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_428) {
                fra.me.REG[7] = BOX_NativeString(")+UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_428 = fra.me.REG[7];
                register_static_object(&once_value_428);
                } else fra.me.REG[7] = once_value_428;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(3);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14472,26 +14472,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label429;
                label429: while(0);
                /* compiling/compiling_icode.nit:872 */
@@ -14499,30 +14499,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_430) {
                fra.me.REG[7] = BOX_NativeString("), UNTAG_Int(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_430 = fra.me.REG[7];
                register_static_object(&once_value_430);
                } else fra.me.REG[7] = once_value_430;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(2);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14530,26 +14530,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
                REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label431;
                label431: while(0);
                /* compiling/compiling_icode.nit:872 */
@@ -14557,7 +14557,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_432) {
                fra.me.REG[7] = BOX_NativeString("));");
                REGB1 = TAG_Int(3);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_432 = fra.me.REG[7];
                register_static_object(&once_value_432);
                } else fra.me.REG[7] = once_value_432;
@@ -14576,7 +14576,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_434) {
                fra.me.REG[6] = BOX_NativeString("Sys");
                REGB1 = TAG_Int(3);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_434 = fra.me.REG[6];
                register_static_object(&once_value_434);
                } else fra.me.REG[6] = once_value_434;
@@ -14598,7 +14598,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_436) {
                fra.me.REG[6] = BOX_NativeString("force_garbage_collection");
                REGB1 = TAG_Int(24);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_436 = fra.me.REG[6];
                register_static_object(&once_value_436);
                } else fra.me.REG[6] = once_value_436;
@@ -14619,7 +14619,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_437) {
                fra.me.REG[6] = BOX_NativeString("Nit_gc_force_garbage_collection()");
                REGB1 = TAG_Int(33);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_437 = fra.me.REG[6];
                register_static_object(&once_value_437);
                } else fra.me.REG[6] = once_value_437;
@@ -14631,7 +14631,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_439) {
                fra.me.REG[6] = BOX_NativeString("native_argc");
                REGB1 = TAG_Int(11);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_439 = fra.me.REG[6];
                register_static_object(&once_value_439);
                } else fra.me.REG[6] = once_value_439;
@@ -14652,7 +14652,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_440) {
                fra.me.REG[6] = BOX_NativeString("TAG_Int(glob_argc)");
                REGB1 = TAG_Int(18);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_440 = fra.me.REG[6];
                register_static_object(&once_value_440);
                } else fra.me.REG[6] = once_value_440;
@@ -14664,7 +14664,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_442) {
                fra.me.REG[6] = BOX_NativeString("native_argv");
                REGB1 = TAG_Int(11);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_442 = fra.me.REG[6];
                register_static_object(&once_value_442);
                } else fra.me.REG[6] = once_value_442;
@@ -14687,30 +14687,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_443) {
                fra.me.REG[2] = BOX_NativeString("BOX_NativeString(glob_argv[UNTAG_Int(");
                REGB1 = TAG_Int(37);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_443 = fra.me.REG[2];
                register_static_object(&once_value_443);
                } else fra.me.REG[2] = once_value_443;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14718,26 +14718,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label444;
                label444: while(0);
                /* compiling/compiling_icode.nit:880 */
@@ -14745,7 +14745,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_445) {
                fra.me.REG[2] = BOX_NativeString(")])");
                REGB1 = TAG_Int(3);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_445 = fra.me.REG[2];
                register_static_object(&once_value_445);
                } else fra.me.REG[2] = once_value_445;
@@ -14762,7 +14762,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_447) {
                fra.me.REG[6] = BOX_NativeString("object_id");
                REGB1 = TAG_Int(9);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_447 = fra.me.REG[6];
                register_static_object(&once_value_447);
                } else fra.me.REG[6] = once_value_447;
@@ -14785,30 +14785,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_448) {
                fra.me.REG[2] = BOX_NativeString("TAG_Int((bigint)((obj_t)");
                REGB1 = TAG_Int(24);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_448 = fra.me.REG[2];
                register_static_object(&once_value_448);
                } else fra.me.REG[2] = once_value_448;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14816,26 +14816,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label449;
                label449: while(0);
                /* compiling/compiling_icode.nit:883 */
@@ -14843,7 +14843,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_450) {
                fra.me.REG[2] = BOX_NativeString(")[1].object_id)");
                REGB1 = TAG_Int(15);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_450 = fra.me.REG[2];
                register_static_object(&once_value_450);
                } else fra.me.REG[2] = once_value_450;
@@ -14857,7 +14857,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_452) {
                fra.me.REG[6] = BOX_NativeString("sys");
                REGB1 = TAG_Int(3);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_452 = fra.me.REG[6];
                register_static_object(&once_value_452);
                } else fra.me.REG[6] = once_value_452;
@@ -14878,7 +14878,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_453) {
                fra.me.REG[6] = BOX_NativeString("(G_sys)");
                REGB1 = TAG_Int(7);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_453 = fra.me.REG[6];
                register_static_object(&once_value_453);
                } else fra.me.REG[6] = once_value_453;
@@ -14890,7 +14890,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_455) {
                fra.me.REG[6] = BOX_NativeString("is_same_type");
                REGB1 = TAG_Int(12);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_455 = fra.me.REG[6];
                register_static_object(&once_value_455);
                } else fra.me.REG[6] = once_value_455;
@@ -14913,30 +14913,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_456) {
                fra.me.REG[2] = BOX_NativeString("TAG_Bool((VAL2VFT(");
                REGB1 = TAG_Int(18);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_456 = fra.me.REG[2];
                register_static_object(&once_value_456);
                } else fra.me.REG[2] = once_value_456;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -14944,26 +14944,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label457;
                label457: while(0);
                /* compiling/compiling_icode.nit:887 */
@@ -14971,30 +14971,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_458) {
                fra.me.REG[2] = BOX_NativeString(")==VAL2VFT(");
                REGB1 = TAG_Int(11);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_458 = fra.me.REG[2];
                register_static_object(&once_value_458);
                } else fra.me.REG[2] = once_value_458;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -15002,26 +15002,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label459;
                label459: while(0);
                /* compiling/compiling_icode.nit:887 */
@@ -15029,7 +15029,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_460) {
                fra.me.REG[2] = BOX_NativeString(")))");
                REGB1 = TAG_Int(3);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_460 = fra.me.REG[2];
                register_static_object(&once_value_460);
                } else fra.me.REG[2] = once_value_460;
@@ -15043,7 +15043,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_462) {
                fra.me.REG[6] = BOX_NativeString("exit");
                REGB1 = TAG_Int(4);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_462 = fra.me.REG[6];
                register_static_object(&once_value_462);
                } else fra.me.REG[6] = once_value_462;
@@ -15066,30 +15066,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_463) {
                fra.me.REG[2] = BOX_NativeString("exit(UNTAG_Int(");
                REGB1 = TAG_Int(15);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_463 = fra.me.REG[2];
                register_static_object(&once_value_463);
                } else fra.me.REG[2] = once_value_463;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -15097,26 +15097,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label464;
                label464: while(0);
                /* compiling/compiling_icode.nit:889 */
@@ -15124,7 +15124,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_465) {
                fra.me.REG[2] = BOX_NativeString("));");
                REGB1 = TAG_Int(3);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_465 = fra.me.REG[2];
                register_static_object(&once_value_465);
                } else fra.me.REG[2] = once_value_465;
@@ -15138,7 +15138,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_467) {
                fra.me.REG[6] = BOX_NativeString("calloc_array");
                REGB1 = TAG_Int(12);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_467 = fra.me.REG[6];
                register_static_object(&once_value_467);
                } else fra.me.REG[6] = once_value_467;
@@ -15161,30 +15161,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_468) {
                fra.me.REG[2] = BOX_NativeString("NEW_NativeArray(UNTAG_Int(");
                REGB1 = TAG_Int(26);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_468 = fra.me.REG[2];
                register_static_object(&once_value_468);
                } else fra.me.REG[2] = once_value_468;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -15192,26 +15192,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label469;
                label469: while(0);
                /* compiling/compiling_icode.nit:891 */
@@ -15219,7 +15219,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_470) {
                fra.me.REG[2] = BOX_NativeString("), sizeof(val_t))");
                REGB1 = TAG_Int(17);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_470 = fra.me.REG[2];
                register_static_object(&once_value_470);
                } else fra.me.REG[2] = once_value_470;
@@ -15233,7 +15233,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_472) {
                fra.me.REG[6] = BOX_NativeString("calloc_string");
                REGB1 = TAG_Int(13);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_472 = fra.me.REG[6];
                register_static_object(&once_value_472);
                } else fra.me.REG[6] = once_value_472;
@@ -15256,30 +15256,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_473) {
                fra.me.REG[2] = BOX_NativeString("BOX_NativeString((char*)raw_alloc((UNTAG_Int(");
                REGB1 = TAG_Int(45);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_473 = fra.me.REG[2];
                register_static_object(&once_value_473);
                } else fra.me.REG[2] = once_value_473;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -15287,26 +15287,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label474;
                label474: while(0);
                /* compiling/compiling_icode.nit:893 */
@@ -15314,7 +15314,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_475) {
                fra.me.REG[2] = BOX_NativeString(") * sizeof(char))))");
                REGB1 = TAG_Int(19);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_475 = fra.me.REG[2];
                register_static_object(&once_value_475);
                } else fra.me.REG[2] = once_value_475;
@@ -15328,7 +15328,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_477) {
                fra.me.REG[6] = BOX_NativeString("output_class_name");
                REGB1 = TAG_Int(17);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_477 = fra.me.REG[6];
                register_static_object(&once_value_477);
                } else fra.me.REG[6] = once_value_477;
@@ -15351,30 +15351,30 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_478) {
                fra.me.REG[2] = BOX_NativeString("printf(\"%s\\n\", VAL2VFT(");
                REGB1 = TAG_Int(23);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_478 = fra.me.REG[2];
                register_static_object(&once_value_478);
                } else fra.me.REG[2] = once_value_478;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -15382,26 +15382,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label479;
                label479: while(0);
                /* compiling/compiling_icode.nit:896 */
@@ -15409,7 +15409,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_480) {
                fra.me.REG[2] = BOX_NativeString(")[2].cname);");
                REGB1 = TAG_Int(12);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
                once_value_480 = fra.me.REG[2];
                register_static_object(&once_value_480);
                } else fra.me.REG[2] = once_value_480;
@@ -15423,7 +15423,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_482) {
                fra.me.REG[6] = BOX_NativeString("native_class_name");
                REGB1 = TAG_Int(17);
-               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
                once_value_482 = fra.me.REG[6];
                register_static_object(&once_value_482);
                } else fra.me.REG[6] = once_value_482;
@@ -15446,28 +15446,28 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_483) {
                fra.me.REG[3] = BOX_NativeString("BOX_NativeString(VAL2VFT(");
                REGB1 = TAG_Int(25);
-               fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+               fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
                once_value_483 = fra.me.REG[3];
                register_static_object(&once_value_483);
                } else fra.me.REG[3] = once_value_483;
                fra.me.REG[3] = fra.me.REG[3];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
                REGB1 = TAG_Int(0);
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB2 = TAG_Int(0);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB0)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
                REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -15475,26 +15475,26 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB0 = TAG_Bool(0);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
                REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label484;
                label484: while(0);
                /* compiling/compiling_icode.nit:899 */
@@ -15502,7 +15502,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                if (!once_value_485) {
                fra.me.REG[4] = BOX_NativeString(")[2].cname);");
                REGB1 = TAG_Int(12);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
                once_value_485 = fra.me.REG[4];
                register_static_object(&once_value_485);
                } else fra.me.REG[4] = once_value_485;
@@ -15561,7 +15561,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       if (!once_value_486) {
         fra.me.REG[3] = BOX_NativeString("fprintf(stderr, \"");
         REGB1 = TAG_Int(17);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_486 = fra.me.REG[3];
         register_static_object(&once_value_486);
       } else fra.me.REG[3] = once_value_486;
@@ -15576,7 +15576,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       if (!once_value_487) {
         fra.me.REG[6] = BOX_NativeString(": \");");
         REGB1 = TAG_Int(5);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_487 = fra.me.REG[6];
         register_static_object(&once_value_487);
       } else fra.me.REG[6] = once_value_487;
@@ -15591,7 +15591,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (!once_value_488) {
       fra.me.REG[6] = BOX_NativeString("fprintf(stderr, \"Fatal error: unknown intern method ");
       REGB1 = TAG_Int(52);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
       once_value_488 = fra.me.REG[6];
       register_static_object(&once_value_488);
     } else fra.me.REG[6] = once_value_488;
@@ -15603,7 +15603,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (!once_value_489) {
       fra.me.REG[6] = BOX_NativeString(".\\n\");");
       REGB1 = TAG_Int(6);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
       once_value_489 = fra.me.REG[6];
       register_static_object(&once_value_489);
     } else fra.me.REG[6] = once_value_489;
@@ -15615,7 +15615,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (!once_value_490) {
       fra.me.REG[4] = BOX_NativeString("nit_exit(1);");
       REGB1 = TAG_Int(12);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_490 = fra.me.REG[4];
       register_static_object(&once_value_490);
     } else fra.me.REG[4] = once_value_490;
@@ -15625,7 +15625,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (!once_value_491) {
       fra.me.REG[4] = BOX_NativeString("NIT_NULL");
       REGB1 = TAG_Int(8);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_491 = fra.me.REG[4];
       register_static_object(&once_value_491);
     } else fra.me.REG[4] = once_value_491;
@@ -15653,7 +15653,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (!once_value_492) {
       fra.me.REG[6] = BOX_NativeString(";\n");
       REGB1 = TAG_Int(2);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
       once_value_492 = fra.me.REG[6];
       register_static_object(&once_value_492);
     } else fra.me.REG[6] = once_value_492;
@@ -15700,7 +15700,7 @@ void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Int(");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -15712,7 +15712,7 @@ void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -15751,7 +15751,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -15763,7 +15763,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("1");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -15773,7 +15773,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString("0");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -15784,7 +15784,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -15821,7 +15821,7 @@ void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1)
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Char(");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -15832,7 +15832,7 @@ void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -15869,7 +15869,7 @@ void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOX_Float(");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -15880,7 +15880,7 @@ void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -15917,7 +15917,7 @@ void compiling___compiling_icode___IStringValue___compile_to_c(val_t p0, val_t p
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOX_NativeString(\"");
     REGB0 = TAG_Int(18);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -15928,7 +15928,7 @@ void compiling___compiling_icode___IStringValue___compile_to_c(val_t p0, val_t p
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("\")");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -15973,7 +15973,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("nit_abort(\"");
     REGB0 = TAG_Int(11);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -15982,21 +15982,21 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   /* compiling/compiling_icode.nit:971 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -16004,26 +16004,26 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label2;
   label2: while(0);
   /* compiling/compiling_icode.nit:971 */
@@ -16044,7 +16044,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* compiling/compiling_icode.nit:972 */
   if (UNTAG_Bool(REGB1)) {
@@ -16052,7 +16052,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("\", \"");
       REGB1 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -16061,21 +16061,21 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     /* compiling/compiling_icode.nit:974 */
     fra.me.REG[2] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB0 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
       REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -16083,26 +16083,26 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB0 = REGB2;
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label4;
     label4: while(0);
     /* compiling/compiling_icode.nit:974 */
@@ -16111,7 +16111,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("\"");
       REGB1 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
@@ -16122,7 +16122,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[2] = BOX_NativeString("\", NULL");
       REGB1 = TAG_Int(7);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_6 = fra.me.REG[2];
       register_static_object(&once_value_6);
     } else fra.me.REG[2] = once_value_6;
@@ -16133,7 +16133,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString(", LOCATE_");
     REGB1 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
   } else fra.me.REG[2] = once_value_7;
@@ -16164,7 +16164,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[2] = BOX_NativeString(", ");
       REGB1 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_8 = fra.me.REG[2];
       register_static_object(&once_value_8);
     } else fra.me.REG[2] = once_value_8;
@@ -16183,7 +16183,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[0] = BOX_NativeString(", 0");
       REGB1 = TAG_Int(3);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
       once_value_9 = fra.me.REG[0];
       register_static_object(&once_value_9);
     } else fra.me.REG[0] = once_value_9;
@@ -16194,7 +16194,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   if (!once_value_10) {
     fra.me.REG[0] = BOX_NativeString(");\n");
     REGB1 = TAG_Int(3);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
     once_value_10 = fra.me.REG[0];
     register_static_object(&once_value_10);
   } else fra.me.REG[0] = once_value_10;
@@ -16265,7 +16265,7 @@ void compiling___compiling_icode___IMove___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(" = ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -16277,7 +16277,7 @@ void compiling___compiling_icode___IMove___compile_to_c(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -16327,7 +16327,7 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -16341,7 +16341,7 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -16387,7 +16387,7 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -16402,7 +16402,7 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -16416,7 +16416,7 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")!=NIT_NULL)");
     REGB0 = TAG_Int(12);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -16461,7 +16461,7 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -16475,7 +16475,7 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(") = ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -16489,7 +16489,7 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -16557,7 +16557,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -16576,7 +16576,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
@@ -16588,7 +16588,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString("==NIT_NULL) || ");
         REGB0 = TAG_Int(15);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -16613,7 +16613,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("!=NIT_NULL)");
           REGB0 = TAG_Int(11);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -16626,7 +16626,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString("(");
           REGB0 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_6 = fra.me.REG[5];
           register_static_object(&once_value_6);
         } else fra.me.REG[5] = once_value_6;
@@ -16638,7 +16638,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         if (!once_value_7) {
           fra.me.REG[5] = BOX_NativeString("!=NIT_NULL) && ");
           REGB0 = TAG_Int(15);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_7 = fra.me.REG[5];
           register_static_object(&once_value_7);
         } else fra.me.REG[5] = once_value_7;
@@ -16662,7 +16662,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_8) {
       fra.me.REG[4] = BOX_NativeString("VAL_ISA(");
       REGB0 = TAG_Int(8);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_8 = fra.me.REG[4];
       register_static_object(&once_value_8);
     } else fra.me.REG[4] = once_value_8;
@@ -16674,7 +16674,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_9) {
       fra.me.REG[4] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_9 = fra.me.REG[4];
       register_static_object(&once_value_9);
     } else fra.me.REG[4] = once_value_9;
@@ -16687,7 +16687,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_10) {
       fra.me.REG[4] = BOX_NativeString("(");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_10 = fra.me.REG[4];
       register_static_object(&once_value_10);
     } else fra.me.REG[4] = once_value_10;
@@ -16699,7 +16699,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_11) {
       fra.me.REG[4] = BOX_NativeString(")");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_11 = fra.me.REG[4];
       register_static_object(&once_value_11);
     } else fra.me.REG[4] = once_value_11;
@@ -16709,7 +16709,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_12) {
       fra.me.REG[4] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_12 = fra.me.REG[4];
       register_static_object(&once_value_12);
     } else fra.me.REG[4] = once_value_12;
@@ -16722,7 +16722,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_13) {
       fra.me.REG[1] = BOX_NativeString("(");
       REGB0 = TAG_Int(1);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_13 = fra.me.REG[1];
       register_static_object(&once_value_13);
     } else fra.me.REG[1] = once_value_13;
@@ -16734,7 +16734,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_14) {
       fra.me.REG[0] = BOX_NativeString(")");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_14 = fra.me.REG[0];
       register_static_object(&once_value_14);
     } else fra.me.REG[0] = once_value_14;
@@ -16744,7 +16744,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_15) {
       fra.me.REG[0] = BOX_NativeString(")) /*cast ");
       REGB0 = TAG_Int(10);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_15 = fra.me.REG[0];
       register_static_object(&once_value_15);
     } else fra.me.REG[0] = once_value_15;
@@ -16757,7 +16757,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_16) {
       fra.me.REG[0] = BOX_NativeString("*/");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_16 = fra.me.REG[0];
       register_static_object(&once_value_16);
     } else fra.me.REG[0] = once_value_16;
@@ -16771,7 +16771,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_17) {
       fra.me.REG[1] = BOX_NativeString("VAL_ISA(");
       REGB0 = TAG_Int(8);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_17 = fra.me.REG[1];
       register_static_object(&once_value_17);
     } else fra.me.REG[1] = once_value_17;
@@ -16783,7 +16783,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_18) {
       fra.me.REG[2] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_18 = fra.me.REG[2];
       register_static_object(&once_value_18);
     } else fra.me.REG[2] = once_value_18;
@@ -16796,7 +16796,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_19) {
       fra.me.REG[2] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_19 = fra.me.REG[2];
       register_static_object(&once_value_19);
     } else fra.me.REG[2] = once_value_19;
@@ -16809,7 +16809,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_20) {
       fra.me.REG[0] = BOX_NativeString(")) /*cast ");
       REGB0 = TAG_Int(10);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_20 = fra.me.REG[0];
       register_static_object(&once_value_20);
     } else fra.me.REG[0] = once_value_20;
@@ -16822,7 +16822,7 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     if (!once_value_21) {
       fra.me.REG[5] = BOX_NativeString("*/");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_21 = fra.me.REG[5];
       register_static_object(&once_value_21);
     } else fra.me.REG[5] = once_value_21;
@@ -16882,7 +16882,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -16904,7 +16904,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("1)");
         REGB0 = TAG_Int(2);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -16924,7 +16924,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("==NIT_NULL)");
           REGB0 = TAG_Int(11);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
         } else fra.me.REG[5] = once_value_4;
@@ -16937,7 +16937,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("0)");
           REGB0 = TAG_Int(2);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -16962,7 +16962,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         if (!once_value_6) {
           fra.me.REG[3] = BOX_NativeString("==NIT_NULL)");
           REGB0 = TAG_Int(11);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_6 = fra.me.REG[3];
           register_static_object(&once_value_6);
         } else fra.me.REG[3] = once_value_6;
@@ -16978,7 +16978,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           if (!once_value_7) {
             fra.me.REG[3] = BOX_NativeString("IS_EQUAL_NN(");
             REGB0 = TAG_Int(12);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_7 = fra.me.REG[3];
             register_static_object(&once_value_7);
           } else fra.me.REG[3] = once_value_7;
@@ -16989,7 +16989,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           if (!once_value_8) {
             fra.me.REG[3] = BOX_NativeString("IS_EQUAL_ON(");
             REGB0 = TAG_Int(12);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_8 = fra.me.REG[3];
             register_static_object(&once_value_8);
           } else fra.me.REG[3] = once_value_8;
@@ -17003,7 +17003,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           if (!once_value_9) {
             fra.me.REG[3] = BOX_NativeString(",");
             REGB0 = TAG_Int(1);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_9 = fra.me.REG[3];
             register_static_object(&once_value_9);
           } else fra.me.REG[3] = once_value_9;
@@ -17017,7 +17017,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           if (!once_value_10) {
             fra.me.REG[3] = BOX_NativeString("))");
             REGB0 = TAG_Int(2);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_10 = fra.me.REG[3];
             register_static_object(&once_value_10);
           } else fra.me.REG[3] = once_value_10;
@@ -17035,7 +17035,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         if (!once_value_11) {
           fra.me.REG[3] = BOX_NativeString("0)");
           REGB0 = TAG_Int(2);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_11 = fra.me.REG[3];
           register_static_object(&once_value_11);
         } else fra.me.REG[3] = once_value_11;
@@ -17051,7 +17051,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           if (!once_value_12) {
             fra.me.REG[4] = BOX_NativeString("IS_EQUAL_ON(");
             REGB0 = TAG_Int(12);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
             once_value_12 = fra.me.REG[4];
             register_static_object(&once_value_12);
           } else fra.me.REG[4] = once_value_12;
@@ -17062,7 +17062,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           if (!once_value_13) {
             fra.me.REG[4] = BOX_NativeString("IS_EQUAL_OO(");
             REGB0 = TAG_Int(12);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
             once_value_13 = fra.me.REG[4];
             register_static_object(&once_value_13);
           } else fra.me.REG[4] = once_value_13;
@@ -17080,7 +17080,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   if (!once_value_14) {
     fra.me.REG[4] = BOX_NativeString(",");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_14 = fra.me.REG[4];
     register_static_object(&once_value_14);
   } else fra.me.REG[4] = once_value_14;
@@ -17094,7 +17094,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   if (!once_value_15) {
     fra.me.REG[0] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_15 = fra.me.REG[0];
     register_static_object(&once_value_15);
   } else fra.me.REG[0] = once_value_15;
@@ -17139,7 +17139,7 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(!UNTAG_Bool(");
     REGB0 = TAG_Int(21);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -17153,7 +17153,7 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -17227,7 +17227,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("static val_t once_value_");
       REGB1 = TAG_Int(24);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -17238,7 +17238,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("; static int once_bool_");
       REGB1 = TAG_Int(23);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -17249,7 +17249,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("; /* Once value */");
       REGB1 = TAG_Int(18);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -17263,7 +17263,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("if (!once_bool_");
       REGB1 = TAG_Int(15);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -17274,7 +17274,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(") {");
       REGB1 = TAG_Int(3);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -17289,7 +17289,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("static val_t once_value_");
       REGB1 = TAG_Int(24);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -17300,7 +17300,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[4] = BOX_NativeString("; /* Once value */");
       REGB1 = TAG_Int(18);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_7 = fra.me.REG[4];
       register_static_object(&once_value_7);
     } else fra.me.REG[4] = once_value_7;
@@ -17314,7 +17314,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[4] = BOX_NativeString("if (!once_value_");
       REGB1 = TAG_Int(16);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_8 = fra.me.REG[4];
       register_static_object(&once_value_8);
     } else fra.me.REG[4] = once_value_8;
@@ -17325,7 +17325,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[4] = BOX_NativeString(") {");
       REGB1 = TAG_Int(3);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_9 = fra.me.REG[4];
       register_static_object(&once_value_9);
     } else fra.me.REG[4] = once_value_9;
@@ -17347,7 +17347,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_10) {
     fra.me.REG[5] = BOX_NativeString("once_value_");
     REGB1 = TAG_Int(11);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_10 = fra.me.REG[5];
     register_static_object(&once_value_10);
   } else fra.me.REG[5] = once_value_10;
@@ -17358,7 +17358,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_11) {
     fra.me.REG[5] = BOX_NativeString(" = ");
     REGB1 = TAG_Int(3);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_11 = fra.me.REG[5];
     register_static_object(&once_value_11);
   } else fra.me.REG[5] = once_value_11;
@@ -17368,7 +17368,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_12) {
     fra.me.REG[5] = BOX_NativeString(";");
     REGB1 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_12 = fra.me.REG[5];
     register_static_object(&once_value_12);
   } else fra.me.REG[5] = once_value_12;
@@ -17382,7 +17382,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_13) {
     fra.me.REG[5] = BOX_NativeString("register_static_object(&once_value_");
     REGB1 = TAG_Int(35);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_13 = fra.me.REG[5];
     register_static_object(&once_value_13);
   } else fra.me.REG[5] = once_value_13;
@@ -17393,7 +17393,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_14) {
     fra.me.REG[5] = BOX_NativeString(");");
     REGB1 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_14 = fra.me.REG[5];
     register_static_object(&once_value_14);
   } else fra.me.REG[5] = once_value_14;
@@ -17410,7 +17410,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_15) {
       fra.me.REG[4] = BOX_NativeString("once_bool_");
       REGB1 = TAG_Int(10);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_15 = fra.me.REG[4];
       register_static_object(&once_value_15);
     } else fra.me.REG[4] = once_value_15;
@@ -17421,7 +17421,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     if (!once_value_16) {
       fra.me.REG[4] = BOX_NativeString(" = true;");
       REGB1 = TAG_Int(8);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_16 = fra.me.REG[4];
       register_static_object(&once_value_16);
     } else fra.me.REG[4] = once_value_16;
@@ -17438,7 +17438,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_17) {
     fra.me.REG[4] = BOX_NativeString("} else ");
     REGB1 = TAG_Int(7);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_17 = fra.me.REG[4];
     register_static_object(&once_value_17);
   } else fra.me.REG[4] = once_value_17;
@@ -17448,7 +17448,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_18) {
     fra.me.REG[4] = BOX_NativeString(" = once_value_");
     REGB1 = TAG_Int(14);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_18 = fra.me.REG[4];
     register_static_object(&once_value_18);
   } else fra.me.REG[4] = once_value_18;
@@ -17459,7 +17459,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   if (!once_value_19) {
     fra.me.REG[4] = BOX_NativeString(";");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_19 = fra.me.REG[4];
     register_static_object(&once_value_19);
   } else fra.me.REG[4] = once_value_19;
@@ -17522,7 +17522,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("closctx->closure_funs[");
       REGB0 = TAG_Int(22);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -17535,7 +17535,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -17548,7 +17548,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("closctx->closure_ctx");
       REGB0 = TAG_Int(20);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -17561,7 +17561,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("CREG[");
       REGB0 = TAG_Int(5);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_4 = fra.me.REG[5];
       register_static_object(&once_value_4);
     } else fra.me.REG[5] = once_value_4;
@@ -17574,7 +17574,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[6] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_5 = fra.me.REG[6];
       register_static_object(&once_value_5);
     } else fra.me.REG[6] = once_value_5;
@@ -17588,7 +17588,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[6] = BOX_NativeString("closctx_param");
       REGB0 = TAG_Int(13);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_6 = fra.me.REG[6];
       register_static_object(&once_value_6);
     } else fra.me.REG[6] = once_value_6;
@@ -17606,7 +17606,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_7) {
     fra.me.REG[6] = BOX_NativeString("((");
     REGB0 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_7 = fra.me.REG[6];
     register_static_object(&once_value_7);
   } else fra.me.REG[6] = once_value_7;
@@ -17619,7 +17619,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_8) {
     fra.me.REG[5] = BOX_NativeString(")(");
     REGB0 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_8 = fra.me.REG[5];
     register_static_object(&once_value_8);
   } else fra.me.REG[5] = once_value_8;
@@ -17629,7 +17629,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_9) {
     fra.me.REG[2] = BOX_NativeString("))(");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_9 = fra.me.REG[2];
     register_static_object(&once_value_9);
   } else fra.me.REG[2] = once_value_9;
@@ -17638,7 +17638,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
@@ -17648,7 +17648,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_11) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_11 = fra.me.REG[2];
     register_static_object(&once_value_11);
   } else fra.me.REG[2] = once_value_11;
@@ -17667,7 +17667,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_12) {
     fra.me.REG[3] = BOX_NativeString("if (");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_12 = fra.me.REG[3];
     register_static_object(&once_value_12);
   } else fra.me.REG[3] = once_value_12;
@@ -17678,7 +17678,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_13) {
     fra.me.REG[4] = BOX_NativeString("->has_broke) {");
     REGB0 = TAG_Int(14);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_13 = fra.me.REG[4];
     register_static_object(&once_value_13);
   } else fra.me.REG[4] = once_value_13;
@@ -17722,7 +17722,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   if (!once_value_14) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_14 = fra.me.REG[0];
     register_static_object(&once_value_14);
   } else fra.me.REG[0] = once_value_14;
@@ -17771,7 +17771,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -17784,7 +17784,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("closctx->closure_funs[");
       REGB0 = TAG_Int(22);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -17799,7 +17799,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -17810,7 +17810,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString("CREG[");
       REGB0 = TAG_Int(5);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -17825,7 +17825,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_6 = fra.me.REG[0];
       register_static_object(&once_value_6);
     } else fra.me.REG[0] = once_value_6;
@@ -17836,7 +17836,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
   if (!once_value_7) {
     fra.me.REG[0] = BOX_NativeString(" != NULL)");
     REGB0 = TAG_Int(9);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_7 = fra.me.REG[0];
     register_static_object(&once_value_7);
   } else fra.me.REG[0] = once_value_7;
@@ -17911,7 +17911,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[7] = BOX_NativeString("OC_");
     REGB1 = TAG_Int(3);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
     once_value_1 = fra.me.REG[7];
     register_static_object(&once_value_1);
   } else fra.me.REG[7] = once_value_1;
@@ -17922,7 +17922,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[7] = BOX_NativeString("_");
     REGB1 = TAG_Int(1);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
     once_value_2 = fra.me.REG[7];
     register_static_object(&once_value_2);
   } else fra.me.REG[7] = once_value_2;
@@ -17934,7 +17934,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
     once_value_3 = fra.me.REG[7];
     register_static_object(&once_value_3);
   } else fra.me.REG[7] = once_value_3;
@@ -17946,7 +17946,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_4) {
     fra.me.REG[8] = BOX_NativeString("struct stack_frame_t *closctx");
     REGB1 = TAG_Int(29);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
     once_value_4 = fra.me.REG[8];
     register_static_object(&once_value_4);
   } else fra.me.REG[8] = once_value_4;
@@ -17976,7 +17976,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
     if (!once_value_5) {
       fra.me.REG[0] = BOX_NativeString("return;");
       REGB1 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
       once_value_5 = fra.me.REG[0];
       register_static_object(&once_value_5);
     } else fra.me.REG[0] = once_value_5;
@@ -17989,7 +17989,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString("return ");
       REGB1 = TAG_Int(7);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
@@ -17999,7 +17999,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
     if (!once_value_7) {
       fra.me.REG[8] = BOX_NativeString(";");
       REGB1 = TAG_Int(1);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
       once_value_7 = fra.me.REG[8];
       register_static_object(&once_value_7);
     } else fra.me.REG[8] = once_value_7;
@@ -18014,7 +18014,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_8) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB1 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
     once_value_8 = fra.me.REG[0];
     register_static_object(&once_value_8);
   } else fra.me.REG[0] = once_value_8;
@@ -18034,7 +18034,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_9) {
     fra.me.REG[1] = BOX_NativeString("((fun_t)");
     REGB0 = TAG_Int(8);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_9 = fra.me.REG[1];
     register_static_object(&once_value_9);
   } else fra.me.REG[1] = once_value_9;
@@ -18044,7 +18044,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   if (!once_value_10) {
     fra.me.REG[6] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_10 = fra.me.REG[6];
     register_static_object(&once_value_10);
   } else fra.me.REG[6] = once_value_10;
index f00a838..844d162 100644 (file)
@@ -114,16 +114,16 @@ void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
   /* compiling/icode_generator.nit:48 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_analysis___icode_dump___ICodeDumper___indent_level(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* compiling/icode_generator.nit:49 */
       REGB2 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
@@ -135,20 +135,20 @@ void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[3] = BOX_NativeString("    ");
         REGB2 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
         once_value_1 = fra.me.REG[3];
         register_static_object(&once_value_1);
       } else fra.me.REG[3] = once_value_1;
       fra.me.REG[3] = fra.me.REG[3];
       CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -171,7 +171,7 @@ void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -212,7 +212,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -222,7 +222,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -233,7 +233,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".icode");
     REGB0 = TAG_Int(6);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -280,7 +280,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString("Init var iroutine::\n");
         REGB0 = TAG_Int(20);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
@@ -297,7 +297,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_5) {
         fra.me.REG[1] = BOX_NativeString("\n\n");
         REGB0 = TAG_Int(2);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_5 = fra.me.REG[1];
         register_static_object(&once_value_5);
       } else fra.me.REG[1] = once_value_5;
@@ -328,7 +328,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_6) {
         fra.me.REG[3] = BOX_NativeString("Check new instance iroutine::\n");
         REGB0 = TAG_Int(30);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_6 = fra.me.REG[3];
         register_static_object(&once_value_6);
       } else fra.me.REG[3] = once_value_6;
@@ -345,7 +345,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_7) {
         fra.me.REG[1] = BOX_NativeString("\n\n");
         REGB0 = TAG_Int(2);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_7 = fra.me.REG[1];
         register_static_object(&once_value_7);
       } else fra.me.REG[1] = once_value_7;
@@ -418,7 +418,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_10) {
         fra.me.REG[3] = BOX_NativeString("New instance:: ");
         REGB0 = TAG_Int(15);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_10 = fra.me.REG[3];
         register_static_object(&once_value_10);
       } else fra.me.REG[3] = once_value_10;
@@ -429,7 +429,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_11) {
         fra.me.REG[3] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_11 = fra.me.REG[3];
         register_static_object(&once_value_11);
       } else fra.me.REG[3] = once_value_11;
@@ -449,7 +449,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       if (!once_value_12) {
         fra.me.REG[1] = BOX_NativeString("\n\n");
         REGB0 = TAG_Int(2);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_12 = fra.me.REG[1];
         register_static_object(&once_value_12);
       } else fra.me.REG[1] = once_value_12;
@@ -533,7 +533,7 @@ void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1)
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("Method:: ");
     REGB0 = TAG_Int(9);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -544,7 +544,7 @@ void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -563,7 +563,7 @@ void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1)
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\n\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
index 4f975b0..d92376b 100644 (file)
@@ -93,16 +93,16 @@ void compiling___table_computation___ColorContext___color__eq(val_t p0, val_t p1
   /* compiling/table_computation.nit:46 */
   REGB1 = TAG_Int(0);
   REGB2 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB3)) {
       /* compiling/table_computation.nit:46 */
       REGB3 = REGB1;
@@ -117,18 +117,18 @@ void compiling___table_computation___ColorContext___color__eq(val_t p0, val_t p1
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], REGB0);
       /* compiling/table_computation.nit:48 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* compiling/table_computation.nit:48 */
       REGB0 = REGB3;
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label1;
     }
   }
@@ -735,7 +735,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Building tables");
     REGB0 = TAG_Int(15);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -756,7 +756,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
   if (!once_value_5) {
     fra.me.REG[1] = BOX_NativeString("Merging all tables");
     REGB0 = TAG_Int(18);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_5 = fra.me.REG[1];
     register_static_object(&once_value_5);
   } else fra.me.REG[1] = once_value_5;
@@ -797,7 +797,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("Building tables for module: ");
       REGB0 = TAG_Int(28);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -809,7 +809,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -877,7 +877,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   /* compiling/table_computation.nit:172 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* compiling/table_computation.nit:173 */
   REGB1 = TAG_Int(3);
@@ -888,20 +888,20 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[5])(fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_compiling___table_computation___Program___do_global_table_analysis_1));
   CALL_standard___collection___array___Array___sort(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_compiling___table_computation___Program___do_global_table_analysis_2));
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[5] = fra.me.REG[4];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB2 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB2 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -915,16 +915,16 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
       /* compiling/table_computation.nit:182 */
       fra.me.REG[8] = NEW_CompiledClass_compiling___table_computation___CompiledClass___init(fra.me.REG[7]);
@@ -956,7 +956,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         CALL_compiling___table_computation___CompiledClass___id__eq(fra.me.REG[8])(fra.me.REG[8], REGB0);
         /* compiling/table_computation.nit:191 */
         REGB3 = TAG_Int(4);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
         /* compiling/table_computation.nit:191 */
         REGB0 = REGB3;
@@ -965,7 +965,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         CALL_compiling___table_computation___CompiledClass___id__eq(fra.me.REG[8])(fra.me.REG[8], REGB1);
         /* compiling/table_computation.nit:194 */
         REGB3 = TAG_Int(4);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
         /* compiling/table_computation.nit:194 */
         REGB1 = REGB3;
@@ -990,14 +990,14 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
       /* compiling/table_computation.nit:205 */
       fra.me.REG[7] = CALL_compiling___table_computation___MMConcreteClass___class_color_pos(fra.me.REG[7])(fra.me.REG[7]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label4;
     }
   }
@@ -1006,18 +1006,18 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   fra.me.REG[6] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   /* compiling/table_computation.nit:210 */
   fra.me.REG[5] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB2 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB2 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1031,16 +1031,16 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
       /* compiling/table_computation.nit:212 */
       while(1) {
@@ -1058,7 +1058,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB0 = TAG_Bool((REGB1)==(REGB0));
           /* compiling/table_computation.nit:212 */
           REGB3 = REGB0;
@@ -1081,14 +1081,14 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[8])(fra.me.REG[8]);
       fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[8])(fra.me.REG[8]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -1098,20 +1098,20 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   CALL_compiling___table_computation___Program___colorize(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[6], REGB2);
   /* compiling/table_computation.nit:224 */
   REGB2 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[7] = fra.me.REG[4];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB3 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB3 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -1125,16 +1125,16 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB3)];
       /* compiling/table_computation.nit:226 */
       fra.me.REG[10] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
@@ -1160,7 +1160,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
         /* compiling/table_computation.nit:230 */
         if (UNTAG_Bool(REGB0)) {
@@ -1226,21 +1226,21 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
         /* compiling/table_computation.nit:243 */
         if (UNTAG_Bool(REGB1)) {
           REGB2 = REGB0;
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = REGB0;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label7;
     }
   }
@@ -1248,24 +1248,24 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   /* compiling/table_computation.nit:246 */
   fra.me.REG[1] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
   /* compiling/table_computation.nit:246 */
   CALL_compiling___table_computation___TableInformation___max_class_table_length__eq(fra.me.REG[1])(fra.me.REG[1], REGB3);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[1] = fra.me.REG[4];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB3 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB3 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1279,16 +1279,16 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB3)];
       /* compiling/table_computation.nit:250 */
       fra.me.REG[9] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
@@ -1313,7 +1313,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
         /* compiling/table_computation.nit:261 */
         if (UNTAG_Bool(REGB1)) {
@@ -1328,7 +1328,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
         /* compiling/table_computation.nit:264 */
         if (UNTAG_Bool(REGB0)) {
@@ -1336,21 +1336,21 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = REGB0;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label9;
     }
   }
   label9: while(0);
   /* compiling/table_computation.nit:271 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
   /* compiling/table_computation.nit:271 */
   CALL_compiling___table_computation___Program___colorize(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[6], REGB3);
@@ -1361,18 +1361,18 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   fra.me.REG[6] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
   REGB3 = TAG_Int(0);
   CALL_compiling___table_computation___TableInformation___max_class_table_length__eq(fra.me.REG[6])(fra.me.REG[6], REGB3);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB3 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB3 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1386,16 +1386,16 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
       /* compiling/table_computation.nit:277 */
       fra.me.REG[1] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
@@ -1457,7 +1457,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:234 */
+          /* ../lib/standard/kernel.nit:241 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
           /* compiling/table_computation.nit:292 */
           if (UNTAG_Bool(REGB0)) {
@@ -1490,14 +1490,14 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___instance_layout(fra.me.REG[10])(fra.me.REG[10]);
         CALL_compiling___table_computation___Program___append_to_table(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[10]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = REGB0;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label11;
     }
   }
@@ -1613,18 +1613,18 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
   fra.me.REG[3] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   /* compiling/table_computation.nit:307 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1638,20 +1638,20 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
       /* compiling/table_computation.nit:309 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB2 = TAG_Int(-UNTAG_Int(REGB2));
       /* compiling/table_computation.nit:310 */
       REGB3 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[6])(fra.me.REG[6]);
@@ -1674,7 +1674,7 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
           REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB2));
           if (UNTAG_Bool(REGB5)) {
           } else {
-            /* ../lib/standard/kernel.nit:230 */
+            /* ../lib/standard/kernel.nit:237 */
             REGB6 = TAG_Bool((REGB4)==(REGB2));
             /* compiling/table_computation.nit:321 */
             REGB5 = REGB6;
@@ -1683,20 +1683,20 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
           if (UNTAG_Bool(REGB5)) {
             /* compiling/table_computation.nit:322 */
             REGB2 = REGB4;
-            /* ../lib/standard/collection/array.nit:266 */
+            /* ../lib/standard/collection/array.nit:267 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ../lib/standard/collection/array.nit:269 */
-            REGB5 = TAG_Int(0);
             /* ../lib/standard/collection/array.nit:270 */
+            REGB5 = TAG_Int(0);
+            /* ../lib/standard/collection/array.nit:271 */
             REGB6 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
             if (UNTAG_Bool(REGB6)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
             }
             REGB6 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-            /* ../lib/standard/collection/array.nit:271 */
-            fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
             /* ../lib/standard/collection/array.nit:272 */
+            fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
+            /* ../lib/standard/collection/array.nit:273 */
             while(1) {
               /* ../lib/standard/collection/array.nit:24 */
               REGB6 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -1710,16 +1710,16 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB6 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB6));
-              /* ../lib/standard/collection/array.nit:272 */
+              /* ../lib/standard/collection/array.nit:273 */
               if (UNTAG_Bool(REGB6)) {
-               /* ../lib/standard/collection/array.nit:273 */
+               /* ../lib/standard/collection/array.nit:274 */
                REGB6 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB5)];
                /* compiling/table_computation.nit:324 */
                REGB6 = TAG_Int(0);
@@ -1730,16 +1730,16 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB7 = TAG_Bool(UNTAG_Int(REGB6)<UNTAG_Int(REGB3));
                /* compiling/table_computation.nit:325 */
                if (UNTAG_Bool(REGB7)) {
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
                /* compiling/table_computation.nit:326 */
                REGB7 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], REGB7);
                if (UNTAG_Bool(REGB7)) {
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
                /* compiling/table_computation.nit:326 */
                fra.me.REG[10] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB7);
@@ -1750,11 +1750,11 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
                REGB7 = REGB8;
                }
                if (UNTAG_Bool(REGB7)) {
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
                /* compiling/table_computation.nit:327 */
                REGB8 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB8 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB8));
                /* compiling/table_computation.nit:327 */
                REGB4 = REGB8;
@@ -1764,7 +1764,7 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
                } else {
                /* compiling/table_computation.nit:330 */
                REGB8 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB8 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB8));
                /* compiling/table_computation.nit:330 */
                REGB6 = REGB8;
@@ -1775,14 +1775,14 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
                }
                }
                label2: while(0);
-               /* ../lib/standard/collection/array.nit:274 */
+               /* ../lib/standard/collection/array.nit:275 */
                REGB6 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB6 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB6));
-               /* ../lib/standard/collection/array.nit:274 */
+               /* ../lib/standard/collection/array.nit:275 */
                REGB5 = REGB6;
               } else {
-               /* ../lib/standard/collection/array.nit:272 */
+               /* ../lib/standard/collection/array.nit:273 */
                goto label3;
               }
             }
@@ -1799,25 +1799,25 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
       }
       /* compiling/table_computation.nit:337 */
       REGB4 = TAG_Int(0);
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       while(1) {
         REGB5 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB5)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         if (UNTAG_Bool(REGB5)) {
           /* compiling/table_computation.nit:337 */
           REGB5 = REGB4;
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB6 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
           /* compiling/table_computation.nit:338 */
           REGB6 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], REGB6);
           if (UNTAG_Bool(REGB6)) {
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB6 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
             /* compiling/table_computation.nit:339 */
             fra.me.REG[8] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB6);
@@ -1827,7 +1827,7 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
             }
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
           } else {
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
             /* compiling/table_computation.nit:341 */
             REGB6 = TAG_Int(1);
@@ -1835,26 +1835,26 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
             CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB5, fra.me.REG[8]);
           }
-          /* ../lib/standard/kernel.nit:357 */
+          /* ../lib/standard/kernel.nit:406 */
           REGB5 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
-          /* ../lib/standard/kernel.nit:357 */
+          /* ../lib/standard/kernel.nit:406 */
           REGB4 = REGB5;
         } else {
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           goto label5;
         }
       }
       label5: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB4;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -1906,18 +1906,18 @@ val_t compiling___table_computation___Program___free_color(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1931,16 +1931,16 @@ val_t compiling___table_computation___Program___free_color(val_t p0, val_t p1, v
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
       /* compiling/table_computation.nit:350 */
       REGB1 = CALL_compiling___table_computation___TableElt___is_related_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
@@ -1949,14 +1949,14 @@ val_t compiling___table_computation___Program___free_color(val_t p0, val_t p1, v
         REGB1 = TAG_Bool(0);
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1994,16 +1994,16 @@ void compiling___table_computation___Program___append_to_table(val_t p0, val_t p
   /* compiling/table_computation.nit:359 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* compiling/table_computation.nit:359 */
       REGB2 = REGB0;
@@ -2022,14 +2022,14 @@ void compiling___table_computation___Program___append_to_table(val_t p0, val_t p
       CALL_compiling___table_computation___ColorContext___color__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], REGB2);
       /* compiling/table_computation.nit:362 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label1;
     }
   }
@@ -2069,18 +2069,18 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
   fra.me.REG[4] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   /* compiling/table_computation.nit:369 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -2094,16 +2094,16 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
       /* compiling/table_computation.nit:371 */
       REGB2 = CALL_compiling___table_computation___TableElt___is_related_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
@@ -2113,7 +2113,7 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
         REGB2 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
         /* compiling/table_computation.nit:373 */
         REGB3 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[6])(fra.me.REG[6]);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
         /* compiling/table_computation.nit:374 */
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[4])(fra.me.REG[4], REGB2, fra.me.REG[6]);
@@ -2122,7 +2122,7 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
         /* compiling/table_computation.nit:375 */
         if (UNTAG_Bool(REGB2)) {
@@ -2130,14 +2130,14 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
           REGB0 = REGB3;
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -2151,7 +2151,7 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
     /* compiling/table_computation.nit:381 */
     if (UNTAG_Bool(REGB3)) {
@@ -2163,16 +2163,16 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
         /* compiling/table_computation.nit:384 */
         REGB3 = TAG_Int(0);
         REGB2 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[0])(fra.me.REG[0]);
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB4)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB4)) {
             /* compiling/table_computation.nit:384 */
             REGB4 = REGB3;
@@ -2181,18 +2181,18 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
             CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB1, fra.me.REG[2]);
             /* compiling/table_computation.nit:386 */
             REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
             /* compiling/table_computation.nit:386 */
             REGB1 = REGB4;
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB3 = REGB4;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label2;
           }
         }
@@ -2202,7 +2202,7 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
         CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB1, NIT_NULL);
         /* compiling/table_computation.nit:390 */
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
         /* compiling/table_computation.nit:390 */
         REGB1 = REGB3;
@@ -2663,21 +2663,21 @@ val_t compiling___table_computation___TableEltComposite___item(val_t p0, val_t p
     nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 537);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -2685,26 +2685,26 @@ val_t compiling___table_computation___TableEltComposite___item(val_t p0, val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* compiling/table_computation.nit:537 */
index 183e2e1..ab197f1 100644 (file)
@@ -89,18 +89,18 @@ val_t compiling_writer___Writer___add_all(val_t p0, val_t p1, val_t p2){
   }
   /* compiling_writer.nit:42 */
   REGB0 = TAG_Bool(1);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -114,16 +114,16 @@ val_t compiling_writer___Writer___add_all(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
       /* compiling_writer.nit:44 */
       if (UNTAG_Bool(REGB0)) {
@@ -134,14 +134,14 @@ val_t compiling_writer___Writer___add_all(val_t p0, val_t p1, val_t p2){
       }
       /* compiling_writer.nit:45 */
       CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
index 6b1469d..9c20310 100644 (file)
@@ -74,7 +74,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   static val_t once_value_25; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_ffi;
-  fra.me.line = 47;
+  fra.me.line = 43;
   fra.me.meth = LOCATE_ffi___FFIVisitor___compile;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -89,23 +89,23 @@ void ffi___FFIVisitor___compile(val_t p0){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ffi/ffi.nit:47 */
+  /* ffi/ffi.nit:43 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ffi/ffi.nit:49 */
+  /* ffi/ffi.nit:45 */
   fra.me.REG[2] = CALL_ffi___ffi_base___FFIVisitor___tc(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_compiling___compiling_base___ToolContext___compdir(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_ffi, 49);
+    nit_abort("Cast failed", NULL, LOCATE_ffi, 45);
   }
-  /* ffi/ffi.nit:50 */
+  /* ffi/ffi.nit:46 */
   REGB0 = TAG_Int(3);
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -117,20 +117,20 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("._ffi");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-  /* ffi/ffi.nit:51 */
+  /* ffi/ffi.nit:47 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -140,20 +140,20 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_4) {
     fra.me.REG[4] = BOX_NativeString(".c");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_4 = fra.me.REG[4];
     register_static_object(&once_value_4);
   } else fra.me.REG[4] = once_value_4;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ffi/ffi.nit:52 */
+  /* ffi/ffi.nit:48 */
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_5) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_5 = fra.me.REG[5];
     register_static_object(&once_value_5);
   } else fra.me.REG[5] = once_value_5;
@@ -163,20 +163,20 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_6) {
     fra.me.REG[0] = BOX_NativeString(".h");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_6 = fra.me.REG[0];
     register_static_object(&once_value_6);
   } else fra.me.REG[0] = once_value_6;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  /* ffi/ffi.nit:55 */
+  /* ffi/ffi.nit:51 */
   REGB0 = TAG_Int(3);
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_7) {
     fra.me.REG[5] = BOX_NativeString("/*\n\tExtern implementation of Nit module ");
     REGB0 = TAG_Int(40);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_7 = fra.me.REG[5];
     register_static_object(&once_value_7);
   } else fra.me.REG[5] = once_value_7;
@@ -189,20 +189,20 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_8) {
     fra.me.REG[5] = BOX_NativeString("\n*/\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_8 = fra.me.REG[5];
     register_static_object(&once_value_8);
   } else fra.me.REG[5] = once_value_8;
   fra.me.REG[5] = fra.me.REG[5];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-  /* ffi/ffi.nit:58 */
+  /* ffi/ffi.nit:54 */
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_9) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_9 = fra.me.REG[6];
     register_static_object(&once_value_9);
   } else fra.me.REG[6] = once_value_9;
@@ -216,20 +216,20 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_10) {
     fra.me.REG[6] = BOX_NativeString("_NIT_H");
     REGB0 = TAG_Int(6);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_10 = fra.me.REG[6];
     register_static_object(&once_value_10);
   } else fra.me.REG[6] = once_value_10;
   fra.me.REG[6] = fra.me.REG[6];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-  /* ffi/ffi.nit:61 */
+  /* ffi/ffi.nit:57 */
   REGB0 = TAG_Int(5);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_11) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_11 = fra.me.REG[7];
     register_static_object(&once_value_11);
   } else fra.me.REG[7] = once_value_11;
@@ -239,7 +239,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_12) {
     fra.me.REG[7] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_12 = fra.me.REG[7];
     register_static_object(&once_value_12);
   } else fra.me.REG[7] = once_value_12;
@@ -249,7 +249,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_13) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_13 = fra.me.REG[7];
     register_static_object(&once_value_13);
   } else fra.me.REG[7] = once_value_13;
@@ -257,15 +257,15 @@ void ffi___FFIVisitor___compile(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
   fra.me.REG[6] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[6]);
-  /* ffi/ffi.nit:62 */
+  /* ffi/ffi.nit:58 */
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
-  /* ffi/ffi.nit:63 */
+  /* ffi/ffi.nit:59 */
   REGB0 = TAG_Int(3);
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_14) {
     fra.me.REG[8] = BOX_NativeString("#include <");
     REGB0 = TAG_Int(10);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
     once_value_14 = fra.me.REG[8];
     register_static_object(&once_value_14);
   } else fra.me.REG[8] = once_value_14;
@@ -278,7 +278,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_15) {
     fra.me.REG[8] = BOX_NativeString("._nitni.h>\n\n");
     REGB0 = TAG_Int(12);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
     once_value_15 = fra.me.REG[8];
     register_static_object(&once_value_15);
   } else fra.me.REG[8] = once_value_15;
@@ -286,13 +286,13 @@ void ffi___FFIVisitor___compile(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-  /* ffi/ffi.nit:64 */
+  /* ffi/ffi.nit:60 */
   REGB0 = TAG_Int(3);
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_16) {
     fra.me.REG[8] = BOX_NativeString("#ifndef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
     once_value_16 = fra.me.REG[8];
     register_static_object(&once_value_16);
   } else fra.me.REG[8] = once_value_16;
@@ -302,7 +302,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_17) {
     fra.me.REG[8] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
     once_value_17 = fra.me.REG[8];
     register_static_object(&once_value_17);
   } else fra.me.REG[8] = once_value_17;
@@ -310,13 +310,13 @@ void ffi___FFIVisitor___compile(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-  /* ffi/ffi.nit:65 */
+  /* ffi/ffi.nit:61 */
   REGB0 = TAG_Int(3);
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_18) {
     fra.me.REG[8] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
     once_value_18 = fra.me.REG[8];
     register_static_object(&once_value_18);
   } else fra.me.REG[8] = once_value_18;
@@ -326,7 +326,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_19) {
     fra.me.REG[5] = BOX_NativeString("\n\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_19 = fra.me.REG[5];
     register_static_object(&once_value_19);
   } else fra.me.REG[5] = once_value_19;
@@ -334,41 +334,41 @@ void ffi___FFIVisitor___compile(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-  /* ffi/ffi.nit:66 */
+  /* ffi/ffi.nit:62 */
   fra.me.REG[7] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[7] = CALL_c_tools___CCompilationUnit___header_c_base(fra.me.REG[7])(fra.me.REG[7]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-  /* ffi/ffi.nit:67 */
+  /* ffi/ffi.nit:63 */
   fra.me.REG[7] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[7] = CALL_c_tools___CCompilationUnit___header_custom(fra.me.REG[7])(fra.me.REG[7]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-  /* ffi/ffi.nit:68 */
+  /* ffi/ffi.nit:64 */
   fra.me.REG[7] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[7] = CALL_c_tools___CCompilationUnit___header_c_types(fra.me.REG[7])(fra.me.REG[7]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-  /* ffi/ffi.nit:69 */
+  /* ffi/ffi.nit:65 */
   fra.me.REG[7] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[7] = CALL_c_tools___CCompilationUnit___header_decl(fra.me.REG[7])(fra.me.REG[7]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-  /* ffi/ffi.nit:70 */
+  /* ffi/ffi.nit:66 */
   if (!once_value_20) {
     fra.me.REG[7] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_20 = fra.me.REG[7];
     register_static_object(&once_value_20);
   } else fra.me.REG[7] = once_value_20;
   fra.me.REG[7] = fra.me.REG[7];
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-  /* ffi/ffi.nit:71 */
+  /* ffi/ffi.nit:67 */
   CALL_standard___stream___IOS___close(fra.me.REG[6])(fra.me.REG[6]);
-  /* ffi/ffi.nit:74 */
+  /* ffi/ffi.nit:70 */
   REGB0 = TAG_Int(5);
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_21) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_21 = fra.me.REG[5];
     register_static_object(&once_value_21);
   } else fra.me.REG[5] = once_value_21;
@@ -378,7 +378,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_22) {
     fra.me.REG[2] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_22 = fra.me.REG[2];
     register_static_object(&once_value_22);
   } else fra.me.REG[2] = once_value_22;
@@ -388,7 +388,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_23) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_23 = fra.me.REG[3];
     register_static_object(&once_value_23);
   } else fra.me.REG[3] = once_value_23;
@@ -397,15 +397,15 @@ void ffi___FFIVisitor___compile(val_t p0){
   fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
   fra.me.REG[7] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[7]);
   fra.me.REG[6] = fra.me.REG[7];
-  /* ffi/ffi.nit:75 */
+  /* ffi/ffi.nit:71 */
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
-  /* ffi/ffi.nit:76 */
+  /* ffi/ffi.nit:72 */
   REGB0 = TAG_Int(3);
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_24) {
     fra.me.REG[7] = BOX_NativeString("#include \"");
     REGB0 = TAG_Int(10);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_24 = fra.me.REG[7];
     register_static_object(&once_value_24);
   } else fra.me.REG[7] = once_value_24;
@@ -415,7 +415,7 @@ void ffi___FFIVisitor___compile(val_t p0){
   if (!once_value_25) {
     fra.me.REG[4] = BOX_NativeString("\"\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_25 = fra.me.REG[4];
     register_static_object(&once_value_25);
   } else fra.me.REG[4] = once_value_25;
@@ -423,19 +423,19 @@ void ffi___FFIVisitor___compile(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___stream___OStream___write(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
-  /* ffi/ffi.nit:77 */
+  /* ffi/ffi.nit:73 */
   fra.me.REG[0] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_c_tools___CCompilationUnit___body_decl(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
-  /* ffi/ffi.nit:78 */
+  /* ffi/ffi.nit:74 */
   fra.me.REG[0] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_c_tools___CCompilationUnit___body_custom(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
-  /* ffi/ffi.nit:79 */
+  /* ffi/ffi.nit:75 */
   fra.me.REG[1] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_c_tools___CCompilationUnit___body_impl(fra.me.REG[1])(fra.me.REG[1]);
   CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* ffi/ffi.nit:80 */
+  /* ffi/ffi.nit:76 */
   CALL_standard___stream___IOS___close(fra.me.REG[6])(fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
   return;
index 08c5506..a83b172 100644 (file)
@@ -10,7 +10,6 @@ extern const int SFT_ffi[];
 void ffi___MMSrcModule___compile_separate_module(val_t p0, val_t p1);
 typedef void (*ffi___MMSrcModule___compile_separate_module_t)(val_t p0, val_t p1);
 val_t NEW_MMSrcModule_syntax___syntax_base___MMSrcModule___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
-val_t NEW_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2);
 void ffi___FFIVisitor___compile(val_t p0);
 typedef void (*ffi___FFIVisitor___compile_t)(val_t p0);
 val_t NEW_FFIVisitor_ffi___ffi_base___FFIVisitor___init(val_t p0, val_t p1);
index 2f169f3..e4694df 100644 (file)
@@ -42,7 +42,7 @@ val_t ffi___c___ExternCode___is_c(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("c");
       REGB1 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -70,7 +70,7 @@ val_t ffi___c___ExternCode___is_c(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("c ");
       REGB1 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_2 = fra.me.REG[2];
       register_static_object(&once_value_2);
     } else fra.me.REG[2] = once_value_2;
@@ -130,7 +130,7 @@ val_t ffi___c___ExternCode___is_c_body(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("c");
       REGB1 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -158,7 +158,7 @@ val_t ffi___c___ExternCode___is_c_body(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("c body");
       REGB1 = TAG_Int(6);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_2 = fra.me.REG[2];
       register_static_object(&once_value_2);
     } else fra.me.REG[2] = once_value_2;
@@ -205,7 +205,7 @@ val_t ffi___c___ExternCode___is_c_header(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("c header");
     REGB0 = TAG_Int(8);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -360,7 +360,7 @@ val_t ffi___c___Location___as_line_pragma(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("#line ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -372,7 +372,7 @@ val_t ffi___c___Location___as_line_pragma(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" \"");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -388,7 +388,7 @@ val_t ffi___c___Location___as_line_pragma(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("\"\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
index c57edb2..2d45b07 100644 (file)
@@ -67,7 +67,7 @@ void ffi___ffi_base___ExternCode___accept_ffi_visitor(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("language \"");
       REGB0 = TAG_Int(10);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -77,7 +77,7 @@ void ffi___ffi_base___ExternCode___accept_ffi_visitor(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("\" used to implement a code block in ");
       REGB0 = TAG_Int(36);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -89,7 +89,7 @@ void ffi___ffi_base___ExternCode___accept_ffi_visitor(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString(" is unknown.");
       REGB0 = TAG_Int(12);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -105,7 +105,7 @@ void ffi___ffi_base___ExternCode___accept_ffi_visitor(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[0] = BOX_NativeString("please specify a language to implement code blocks in ");
       REGB0 = TAG_Int(54);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_4 = fra.me.REG[0];
       register_static_object(&once_value_4);
     } else fra.me.REG[0] = once_value_4;
@@ -117,7 +117,7 @@ void ffi___ffi_base___ExternCode___accept_ffi_visitor(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[1] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_5 = fra.me.REG[1];
       register_static_object(&once_value_5);
     } else fra.me.REG[1] = once_value_5;
@@ -294,7 +294,7 @@ void ffi___ffi_base___MMMethod___accept_ffi_visitor(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[5] = BOX_NativeString("language \"");
         REGB0 = TAG_Int(10);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_1 = fra.me.REG[5];
         register_static_object(&once_value_1);
       } else fra.me.REG[5] = once_value_1;
@@ -304,7 +304,7 @@ void ffi___ffi_base___MMMethod___accept_ffi_visitor(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[2] = BOX_NativeString("\" used to implement ");
         REGB0 = TAG_Int(20);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -315,7 +315,7 @@ void ffi___ffi_base___MMMethod___accept_ffi_visitor(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[2] = BOX_NativeString(" is unknown.");
         REGB0 = TAG_Int(12);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_3 = fra.me.REG[2];
         register_static_object(&once_value_3);
       } else fra.me.REG[2] = once_value_3;
@@ -331,7 +331,7 @@ void ffi___ffi_base___MMMethod___accept_ffi_visitor(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString("please specify a language to implement ");
         REGB0 = TAG_Int(39);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
@@ -342,7 +342,7 @@ void ffi___ffi_base___MMMethod___accept_ffi_visitor(val_t p0, val_t p1){
       if (!once_value_5) {
         fra.me.REG[0] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_5 = fra.me.REG[0];
         register_static_object(&once_value_5);
       } else fra.me.REG[0] = once_value_5;
index d4c650b..d8e70ae 100644 (file)
@@ -45,7 +45,7 @@ return trans_return;
 val_t NativeString_file_stat___out( val_t recv )
 {
 char * trans_recv;
-void* orig_return;
+ struct stat *  orig_return;
 val_t trans_return;
 trans_recv = UNBOX_NativeString(recv);
 orig_return = string_NativeString_NativeString_file_stat_0( trans_recv );
@@ -53,6 +53,18 @@ trans_return = BOX_FileStat(orig_return);
 nitni_local_ref_clean(  );
 return trans_return;
 }
+/* out/indirect function for file::NativeString::file_lstat */
+val_t NativeString_file_lstat___out( val_t recv )
+{
+char * trans_recv;
+ struct stat *  orig_return;
+val_t trans_return;
+trans_recv = UNBOX_NativeString(recv);
+orig_return = NativeString_file_lstat___impl( trans_recv );
+trans_return = BOX_FileStat(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
 /* out/indirect function for file::NativeString::file_mkdir */
 val_t NativeString_file_mkdir___out( val_t recv )
 {
@@ -80,7 +92,7 @@ return trans_return;
 /* out/indirect function for file::FileStat::mode */
 val_t FileStat_mode___out( val_t recv )
 {
-void* trans_recv;
+ struct stat *  trans_recv;
 bigint orig_return;
 val_t trans_return;
 trans_recv = UNBOX_FileStat(recv);
@@ -92,7 +104,7 @@ return trans_return;
 /* out/indirect function for file::FileStat::atime */
 val_t FileStat_atime___out( val_t recv )
 {
-void* trans_recv;
+ struct stat *  trans_recv;
 bigint orig_return;
 val_t trans_return;
 trans_recv = UNBOX_FileStat(recv);
@@ -104,7 +116,7 @@ return trans_return;
 /* out/indirect function for file::FileStat::ctime */
 val_t FileStat_ctime___out( val_t recv )
 {
-void* trans_recv;
+ struct stat *  trans_recv;
 bigint orig_return;
 val_t trans_return;
 trans_recv = UNBOX_FileStat(recv);
@@ -116,7 +128,7 @@ return trans_return;
 /* out/indirect function for file::FileStat::mtime */
 val_t FileStat_mtime___out( val_t recv )
 {
-void* trans_recv;
+ struct stat *  trans_recv;
 bigint orig_return;
 val_t trans_return;
 trans_recv = UNBOX_FileStat(recv);
@@ -128,7 +140,7 @@ return trans_return;
 /* out/indirect function for file::FileStat::size */
 val_t FileStat_size___out( val_t recv )
 {
-void* trans_recv;
+ struct stat *  trans_recv;
 bigint orig_return;
 val_t trans_return;
 trans_recv = UNBOX_FileStat(recv);
@@ -137,6 +149,90 @@ trans_return = TAG_Int(orig_return);
 nitni_local_ref_clean(  );
 return trans_return;
 }
+/* out/indirect function for file::FileStat::is_reg */
+val_t FileStat_is_reg___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_reg___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for file::FileStat::is_dir */
+val_t FileStat_is_dir___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_dir___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for file::FileStat::is_chr */
+val_t FileStat_is_chr___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_chr___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for file::FileStat::is_blk */
+val_t FileStat_is_blk___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_blk___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for file::FileStat::is_fifo */
+val_t FileStat_is_fifo___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_fifo___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for file::FileStat::is_lnk */
+val_t FileStat_is_lnk___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_lnk___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for file::FileStat::is_sock */
+val_t FileStat_is_sock___out( val_t recv )
+{
+ struct stat *  trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_FileStat(recv);
+orig_return = FileStat_is_sock___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
 /* out/indirect function for file::NativeFile::io_read */
 val_t NativeFile_io_read___out( val_t recv, val_t buf, val_t len )
 {
@@ -181,7 +277,7 @@ return trans_return;
 val_t NativeFile_file_stat___out( val_t recv )
 {
 void* trans_recv;
-void* orig_return;
+ struct stat *  orig_return;
 val_t trans_return;
 trans_recv = UNBOX_NativeFile(recv);
 orig_return = file_NativeFile_NativeFile_file_stat_0( trans_recv );
@@ -265,18 +361,18 @@ trans_recv = recv->ref.val;
 trans___item = item->ref.val;
 CALL_standard___collection___abstract_collection___SimpleCollection___add( trans_recv )( trans_recv, trans___item );
 }
-/* friendly for string::String::from_cstring */
-String file_new_String_from_cstring( char * str )
+/* friendly for string::NativeString::(string::Object::to_s) */
+String file_NativeString_to_s( char * recv )
 {
-val_t trans___str;
+val_t trans_recv;
 val_t orig_return;
 String trans_return;
-trans___str = BOX_NativeString(str);
+trans_recv = BOX_NativeString(recv);
 trans_return = malloc( sizeof( struct s_String ) );
 trans_return->ref.val = NIT_NULL;
 trans_return->ref.count = 0;
 nitni_local_ref_add( (struct nitni_ref *)trans_return );
-orig_return = NEW_String_standard___string___String___from_cstring( trans___str );
+orig_return = CALL_standard___string___Object___to_s( trans_recv )( trans_recv );
 trans_return->ref.val = orig_return;
 return trans_return;
 }
index 7f0a8ca..47fef7c 100644 (file)
@@ -58,6 +58,7 @@ typedef struct s_HashSet *HashSet;
 #define HashSet_decr_ref( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )
 #endif
 #include "file_nit.h"
+#include <standard___file._ffi.h>
 
 /* out/indirect function for file::Stdin::poll_in */
 val_t Stdin_poll_in___out( val_t recv );
@@ -71,6 +72,9 @@ val_t NativeString_file_exists___out( val_t recv );
 /* out/indirect function for file::NativeString::file_stat */
 val_t NativeString_file_stat___out( val_t recv );
 
+/* out/indirect function for file::NativeString::file_lstat */
+val_t NativeString_file_lstat___out( val_t recv );
+
 /* out/indirect function for file::NativeString::file_mkdir */
 val_t NativeString_file_mkdir___out( val_t recv );
 
@@ -92,6 +96,27 @@ val_t FileStat_mtime___out( val_t recv );
 /* out/indirect function for file::FileStat::size */
 val_t FileStat_size___out( val_t recv );
 
+/* out/indirect function for file::FileStat::is_reg */
+val_t FileStat_is_reg___out( val_t recv );
+
+/* out/indirect function for file::FileStat::is_dir */
+val_t FileStat_is_dir___out( val_t recv );
+
+/* out/indirect function for file::FileStat::is_chr */
+val_t FileStat_is_chr___out( val_t recv );
+
+/* out/indirect function for file::FileStat::is_blk */
+val_t FileStat_is_blk___out( val_t recv );
+
+/* out/indirect function for file::FileStat::is_fifo */
+val_t FileStat_is_fifo___out( val_t recv );
+
+/* out/indirect function for file::FileStat::is_lnk */
+val_t FileStat_is_lnk___out( val_t recv );
+
+/* out/indirect function for file::FileStat::is_sock */
+val_t FileStat_is_sock___out( val_t recv );
+
 /* out/indirect function for file::NativeFile::io_read */
 val_t NativeFile_io_read___out( val_t recv, val_t buf, val_t len );
 
@@ -128,10 +153,10 @@ void file_HashSet_add( HashSet recv, Object item );
 #ifndef HashSet_add
 #define HashSet_add file_HashSet_add
 #endif
-/* friendly for string::String::from_cstring */
-String file_new_String_from_cstring( char * str );
-#ifndef new_String_from_cstring
-#define new_String_from_cstring file_new_String_from_cstring
+/* friendly for string::NativeString::(string::Object::to_s) */
+String file_NativeString_to_s( char * recv );
+#ifndef NativeString_to_s
+#define NativeString_to_s file_NativeString_to_s
 #endif
 /* friendly for string::String::to_cstring */
 char * file_String_to_cstring( String recv );
index 56b26da..ca02ba1 100644 (file)
@@ -31,7 +31,7 @@ C implementation of file::String::files
 Imported methods signatures:
        HashSet new_HashSet(  ) for hash_collection::HashSet::init
        void HashSet_add( HashSet recv, Object item ) for hash_collection::HashSet::(abstract_collection::SimpleCollection::add)
-       String new_String_from_cstring( char * str ) for string::String::from_cstring
+       String NativeString_to_s() for string::NativeString::to_s
        int HashSet_is_a_Set( HashSet value ) to check if a HashSet[String] is a Set[String]
        Set HashSet_as_Set( HashSet value ) to cast from HashSet[String] to Set[String]
 */
@@ -58,7 +58,7 @@ Set String_files___impl( String recv )
                        if ( strcmp( de->d_name, ".." ) != 0 &&
                                strcmp( de->d_name, "." ) != 0 )
                        {
-                               file_name = new_String_from_cstring( strdup( de->d_name ) );
+                               file_name = NativeString_to_s( strdup( de->d_name ) );
                                HashSet_add( results, String_as_Object( file_name ) );
                        }
 
index 0afcbb3..908a368 100644 (file)
@@ -333,7 +333,7 @@ void global___Program___do_global_analysis(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("cha");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -359,7 +359,7 @@ void global___Program___do_global_analysis(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("rta");
       REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
index 9b3fe30..aefc266 100644 (file)
@@ -97,7 +97,7 @@ void global___dead_method_removal___Program___optimize_dead_methods(val_t p0){
       /* global/dead_method_removal.nit:32 */
       REGB0 = CALL_global___dead_method_removal___Program___nb_removed_iroutines(closctx->REG[0])(closctx->REG[0]);
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* global/dead_method_removal.nit:32 */
       ATTR_global___dead_method_removal___Program____nb_removed_iroutines(closctx->REG[0]) = REGB1;
@@ -105,7 +105,7 @@ void global___dead_method_removal___Program___optimize_dead_methods(val_t p0){
       /* global/dead_method_removal.nit:34 */
       REGB1 = CALL_global___dead_method_removal___Program___nb_not_removed_iroutines(closctx->REG[0])(closctx->REG[0]);
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
       /* global/dead_method_removal.nit:34 */
       ATTR_global___dead_method_removal___Program____nb_not_removed_iroutines(closctx->REG[0]) = REGB0;
@@ -144,7 +144,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -154,7 +154,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -167,7 +167,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".dmr_opt.log");
     REGB0 = TAG_Int(12);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -181,7 +181,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("Nb. dead iroutines removed: ");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -193,7 +193,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -207,7 +207,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("Nb. live iroutines: ");
     REGB0 = TAG_Int(20);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_6 = fra.me.REG[3];
     register_static_object(&once_value_6);
   } else fra.me.REG[3] = once_value_6;
@@ -219,7 +219,7 @@ void global___dead_method_removal___Program___dump_dead_method_optimization(val_
   if (!once_value_7) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_7 = fra.me.REG[0];
     register_static_object(&once_value_7);
   } else fra.me.REG[0] = once_value_7;
@@ -262,7 +262,7 @@ void global___dead_method_removal___IRoutine___set_not_reachable(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("This method should not be called !");
     REGB0 = TAG_Int(34);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
index 4167906..b980065 100644 (file)
@@ -29,7 +29,7 @@ void global___inline_get_and_set___Program___dump_inline_get_set(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -39,7 +39,7 @@ void global___inline_get_and_set___Program___dump_inline_get_set(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -52,7 +52,7 @@ void global___inline_get_and_set___Program___dump_inline_get_set(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".inline_get_set.log");
     REGB0 = TAG_Int(19);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -66,7 +66,7 @@ void global___inline_get_and_set___Program___dump_inline_get_set(val_t p0, val_t
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("Number of getters and setters inlined: ");
     REGB0 = TAG_Int(39);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -83,7 +83,7 @@ void global___inline_get_and_set___Program___dump_inline_get_set(val_t p0, val_t
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -137,7 +137,7 @@ void global___inline_get_and_set___Program___inline_get_set(val_t p0){
     /* global/inline_get_and_set.nit:42 */
     REGB0 = ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(closctx->REG[0]);
     REGB1 = CALL_global___inline_get_and_set___InlineGetSetVisitor___number_inlined(fra.me.REG[1])(fra.me.REG[1]);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* global/inline_get_and_set.nit:42 */
     ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(closctx->REG[0]) = REGB1;
@@ -331,7 +331,7 @@ void global___inline_get_and_set___InlineGetSetVisitor___visit_icode(val_t p0, v
       /* global/inline_get_and_set.nit:72 */
       REGB0 = ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[2]);
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* global/inline_get_and_set.nit:72 */
       ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[2]) = REGB1;
index 7b64693..1a7701d 100644 (file)
@@ -65,7 +65,7 @@ void global___instantiated_type_analysis___Program___dump_instantiated_types(val
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -75,7 +75,7 @@ void global___instantiated_type_analysis___Program___dump_instantiated_types(val
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -88,7 +88,7 @@ void global___instantiated_type_analysis___Program___dump_instantiated_types(val
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".instantiated_types.log");
     REGB0 = TAG_Int(23);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -126,7 +126,7 @@ void global___instantiated_type_analysis___Program___dump_instantiated_types(val
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
@@ -137,7 +137,7 @@ void global___instantiated_type_analysis___Program___dump_instantiated_types(val
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_6 = fra.me.REG[0];
       register_static_object(&once_value_6);
     } else fra.me.REG[0] = once_value_6;
@@ -175,7 +175,7 @@ void global___instantiated_type_analysis___Program___dump_not_instantiated_types
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -185,7 +185,7 @@ void global___instantiated_type_analysis___Program___dump_not_instantiated_types
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -198,7 +198,7 @@ void global___instantiated_type_analysis___Program___dump_not_instantiated_types
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".not_instantiated_types.log");
     REGB0 = TAG_Int(27);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -251,7 +251,7 @@ void global___instantiated_type_analysis___Program___dump_not_instantiated_types
       if (!once_value_5) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_5 = fra.me.REG[2];
         register_static_object(&once_value_5);
       } else fra.me.REG[2] = once_value_5;
@@ -262,7 +262,7 @@ void global___instantiated_type_analysis___Program___dump_not_instantiated_types
       if (!once_value_6) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
       } else fra.me.REG[0] = once_value_6;
index a2ac9f3..f4ff25c 100644 (file)
@@ -65,7 +65,7 @@ void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -75,7 +75,7 @@ void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -88,7 +88,7 @@ void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".reachable_methods_as_init.log");
     REGB0 = TAG_Int(30);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -172,7 +172,7 @@ void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t
         if (!once_value_7) {
           fra.me.REG[2] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_7 = fra.me.REG[2];
           register_static_object(&once_value_7);
         } else fra.me.REG[2] = once_value_7;
@@ -183,7 +183,7 @@ void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t
         if (!once_value_8) {
           fra.me.REG[0] = BOX_NativeString("\n");
           REGB0 = TAG_Int(1);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
           once_value_8 = fra.me.REG[0];
           register_static_object(&once_value_8);
         } else fra.me.REG[0] = once_value_8;
index 5d43462..4b0d50c 100644 (file)
@@ -65,7 +65,7 @@ void global___reachable_from_init_method_analysis___Program___dump_reachable_met
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -75,7 +75,7 @@ void global___reachable_from_init_method_analysis___Program___dump_reachable_met
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -88,7 +88,7 @@ void global___reachable_from_init_method_analysis___Program___dump_reachable_met
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".reachable_methods_from_init.log");
     REGB0 = TAG_Int(32);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -134,7 +134,7 @@ void global___reachable_from_init_method_analysis___Program___dump_reachable_met
       if (!once_value_5) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_5 = fra.me.REG[2];
         register_static_object(&once_value_5);
       } else fra.me.REG[2] = once_value_5;
@@ -145,7 +145,7 @@ void global___reachable_from_init_method_analysis___Program___dump_reachable_met
       if (!once_value_6) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
       } else fra.me.REG[0] = once_value_6;
@@ -184,7 +184,7 @@ void global___reachable_from_init_method_analysis___Program___dump_unreachable_m
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -194,7 +194,7 @@ void global___reachable_from_init_method_analysis___Program___dump_unreachable_m
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -207,7 +207,7 @@ void global___reachable_from_init_method_analysis___Program___dump_unreachable_m
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".unreachable_methods_from_init.log");
     REGB0 = TAG_Int(34);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -266,7 +266,7 @@ void global___reachable_from_init_method_analysis___Program___dump_unreachable_m
       if (!once_value_5) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_5 = fra.me.REG[2];
         register_static_object(&once_value_5);
       } else fra.me.REG[2] = once_value_5;
@@ -277,7 +277,7 @@ void global___reachable_from_init_method_analysis___Program___dump_unreachable_m
       if (!once_value_6) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
       } else fra.me.REG[0] = once_value_6;
index badb9f0..89b49b3 100644 (file)
@@ -68,7 +68,7 @@ void global___reachable_method_analysis___Program___dump_reachable_methods(val_t
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -78,7 +78,7 @@ void global___reachable_method_analysis___Program___dump_reachable_methods(val_t
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -91,7 +91,7 @@ void global___reachable_method_analysis___Program___dump_reachable_methods(val_t
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".reachable_methods.");
     REGB0 = TAG_Int(19);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -101,7 +101,7 @@ void global___reachable_method_analysis___Program___dump_reachable_methods(val_t
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(".log");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -147,7 +147,7 @@ void global___reachable_method_analysis___Program___dump_reachable_methods(val_t
       if (!once_value_6) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_6 = fra.me.REG[2];
         register_static_object(&once_value_6);
       } else fra.me.REG[2] = once_value_6;
@@ -158,7 +158,7 @@ void global___reachable_method_analysis___Program___dump_reachable_methods(val_t
       if (!once_value_7) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_7 = fra.me.REG[0];
         register_static_object(&once_value_7);
       } else fra.me.REG[0] = once_value_7;
@@ -200,7 +200,7 @@ void global___reachable_method_analysis___Program___dump_unreachable_methods(val
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -210,7 +210,7 @@ void global___reachable_method_analysis___Program___dump_unreachable_methods(val
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -223,7 +223,7 @@ void global___reachable_method_analysis___Program___dump_unreachable_methods(val
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".unreachable_methods.");
     REGB0 = TAG_Int(21);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -233,7 +233,7 @@ void global___reachable_method_analysis___Program___dump_unreachable_methods(val
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(".log");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -280,7 +280,7 @@ void global___reachable_method_analysis___Program___dump_unreachable_methods(val
       if (!once_value_6) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_6 = fra.me.REG[2];
         register_static_object(&once_value_6);
       } else fra.me.REG[2] = once_value_6;
@@ -291,7 +291,7 @@ void global___reachable_method_analysis___Program___dump_unreachable_methods(val
       if (!once_value_7) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_7 = fra.me.REG[0];
         register_static_object(&once_value_7);
       } else fra.me.REG[0] = once_value_7;
index 27ff78b..13554cc 100644 (file)
@@ -74,7 +74,7 @@ void global___remove_out_of_init_get_test___Program___optimize_out_of_init_gette
       /* global/remove_out_of_init_get_test.nit:34 */
       REGB0 = CALL_global___remove_out_of_init_get_test___Program___nb_optimized_isset(closctx->REG[0])(closctx->REG[0]);
       REGB1 = CALL_global___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset(fra.me.REG[1])(fra.me.REG[1]);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* global/remove_out_of_init_get_test.nit:34 */
       ATTR_global___remove_out_of_init_get_test___Program____nb_optimized_isset(closctx->REG[0]) = REGB1;
@@ -114,7 +114,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -124,7 +124,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -137,7 +137,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".out_of_init_opt.log");
     REGB0 = TAG_Int(20);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -155,7 +155,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString("Nb. optimized isset: ");
     REGB0 = TAG_Int(21);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -167,7 +167,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_6) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_6 = fra.me.REG[0];
     register_static_object(&once_value_6);
   } else fra.me.REG[0] = once_value_6;
@@ -181,7 +181,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_7) {
     fra.me.REG[0] = BOX_NativeString("Nb. not optimized: ");
     REGB0 = TAG_Int(19);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_7 = fra.me.REG[0];
     register_static_object(&once_value_7);
   } else fra.me.REG[0] = once_value_7;
@@ -192,7 +192,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
   if (!once_value_8) {
     fra.me.REG[1] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_8 = fra.me.REG[1];
     register_static_object(&once_value_8);
   } else fra.me.REG[1] = once_value_8;
@@ -227,7 +227,7 @@ void global___remove_out_of_init_get_test___Program___dump_out_of_init_informati
     CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     /* global/remove_out_of_init_get_test.nit:47 */
     REGB0 = CALL_global___remove_out_of_init_get_test___IssetCounter___nb_isset(fra.me.REG[1])(fra.me.REG[1]);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(REGB0));
     /* global/remove_out_of_init_get_test.nit:47 */
     closctx->REG[1] = REGB0;
@@ -286,7 +286,7 @@ void global___remove_out_of_init_get_test___IssetCounter___visit_icode(val_t p0,
     /* global/remove_out_of_init_get_test.nit:64 */
     REGB0 = CALL_global___remove_out_of_init_get_test___IssetCounter___nb_isset(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* global/remove_out_of_init_get_test.nit:64 */
     ATTR_global___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[2]) = REGB1;
@@ -392,7 +392,7 @@ void global___remove_out_of_init_get_test___GetterTestRemover___visit_icode(val_
     /* global/remove_out_of_init_get_test.nit:85 */
     REGB0 = CALL_global___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* global/remove_out_of_init_get_test.nit:85 */
     ATTR_global___remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[2]) = REGB1;
index 8c4bb57..40be0c0 100644 (file)
@@ -699,7 +699,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Object");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -708,7 +708,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("Bool");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -717,7 +717,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("Float");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -726,7 +726,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("Int");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -735,7 +735,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("String");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -744,7 +744,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString("NativeString");
     REGB0 = TAG_Int(12);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -753,7 +753,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString("Range");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
   } else fra.me.REG[2] = once_value_7;
@@ -762,7 +762,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_8) {
     fra.me.REG[2] = BOX_NativeString("Array");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_8 = fra.me.REG[2];
     register_static_object(&once_value_8);
   } else fra.me.REG[2] = once_value_8;
@@ -771,7 +771,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_9) {
     fra.me.REG[2] = BOX_NativeString("ArrayIterator");
     REGB0 = TAG_Int(13);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_9 = fra.me.REG[2];
     register_static_object(&once_value_9);
   } else fra.me.REG[2] = once_value_9;
@@ -780,24 +780,24 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString("Inline__");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -811,16 +811,16 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* global/rta_analysis.nit:133 */
       fra.me.REG[4] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
@@ -839,14 +839,14 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
       /* global/rta_analysis.nit:135 */
       CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
       label11: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label12;
     }
   }
@@ -857,7 +857,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_13) {
     fra.me.REG[1] = BOX_NativeString("Inline__");
     REGB0 = TAG_Int(8);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_13 = fra.me.REG[1];
     register_static_object(&once_value_13);
   } else fra.me.REG[1] = once_value_13;
@@ -871,7 +871,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
     if (!once_value_14) {
       fra.me.REG[2] = BOX_NativeString("Inline__");
       REGB0 = TAG_Int(8);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_14 = fra.me.REG[2];
       register_static_object(&once_value_14);
     } else fra.me.REG[2] = once_value_14;
@@ -889,7 +889,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   if (!once_value_16) {
     fra.me.REG[1] = BOX_NativeString("Pointer");
     REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_16 = fra.me.REG[1];
     register_static_object(&once_value_16);
   } else fra.me.REG[1] = once_value_16;
@@ -903,7 +903,7 @@ void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
     if (!once_value_17) {
       fra.me.REG[2] = BOX_NativeString("Pointer");
       REGB0 = TAG_Int(7);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_17 = fra.me.REG[2];
       register_static_object(&once_value_17);
     } else fra.me.REG[2] = once_value_17;
@@ -1081,7 +1081,7 @@ void global___rta_analysis___RtaBuilder___work(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("Int");
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -1090,7 +1090,7 @@ void global___rta_analysis___RtaBuilder___work(val_t p0){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("Char");
       REGB0 = TAG_Int(4);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -1099,24 +1099,24 @@ void global___rta_analysis___RtaBuilder___work(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("Bool");
       REGB0 = TAG_Int(4);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -1130,16 +1130,16 @@ void global___rta_analysis___RtaBuilder___work(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
         /* global/rta_analysis.nit:177 */
         fra.me.REG[5] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
@@ -1154,14 +1154,14 @@ void global___rta_analysis___RtaBuilder___work(val_t p0){
           fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
           CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label4;
       }
     }
index db0fc01..3d9108a 100644 (file)
@@ -1685,13 +1685,13 @@ void icode___icode_base___INative___init(val_t p0, val_t p1, val_t p2, int* init
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* icode/icode_base.nit:338 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
     /* icode/icode_base.nit:338 */
     REGB1 = REGB2;
index 2210409..f4e5612 100644 (file)
@@ -146,7 +146,7 @@ void icode___icode_builder___ICodeBuilder___add_null_reciever_check(val_t p0, va
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("Reciever is null");
     REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -201,7 +201,7 @@ void icode___icode_builder___ICodeBuilder___add_type_cast(val_t p0, val_t p1, va
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("Cast failed");
     REGB0 = TAG_Int(11);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -268,7 +268,7 @@ void icode___icode_builder___ICodeBuilder___add_attr_check(val_t p0, val_t p1, v
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Uninitialized attribute %s");
       REGB0 = TAG_Int(26);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -429,7 +429,7 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("==");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -444,7 +444,7 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
     if (!once_value_4) {
       fra.me.REG[6] = BOX_NativeString("!=");
       REGB0 = TAG_Int(2);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_4 = fra.me.REG[6];
       register_static_object(&once_value_4);
     } else fra.me.REG[6] = once_value_4;
@@ -505,23 +505,23 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
     fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     /* icode/icode_builder.nit:128 */
     REGB0 = TAG_Int(0);
-    /* ../lib/standard/collection/array.nit:278 */
+    /* ../lib/standard/collection/array.nit:279 */
     fra.me.REG[3] = fra.me.REG[2];
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -529,47 +529,47 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label6;
     label6: while(0);
     /* icode/icode_builder.nit:128 */
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/collection/array.nit:278 */
+    /* ../lib/standard/collection/array.nit:279 */
     fra.me.REG[7] = fra.me.REG[2];
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -577,26 +577,26 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
     REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label7;
     label7: while(0);
     /* icode/icode_builder.nit:128 */
@@ -620,23 +620,23 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
     /* icode/icode_builder.nit:137 */
     REGB0 = TAG_Int(0);
-    /* ../lib/standard/collection/array.nit:278 */
+    /* ../lib/standard/collection/array.nit:279 */
     fra.me.REG[9] = fra.me.REG[2];
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -644,26 +644,26 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
     REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label8;
     label8: while(0);
     /* icode/icode_builder.nit:137 */
@@ -678,23 +678,23 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
       fra.me.REG[9] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[4])(fra.me.REG[4]);
       /* icode/icode_builder.nit:139 */
       REGB0 = TAG_Int(0);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[10] = fra.me.REG[2];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB1 = TAG_Int(0);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
         REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -702,26 +702,26 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[10]);
       REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[10] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label9;
       label9: while(0);
       /* icode/icode_builder.nit:139 */
@@ -1158,16 +1158,16 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
   /* icode/icode_builder.nit:230 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* icode/icode_builder.nit:230 */
       REGB2 = REGB0;
@@ -1175,14 +1175,14 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
       fra.me.REG[2] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
       fra.me.REG[2] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[2]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label1;
     }
   }
@@ -1224,18 +1224,18 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
     fra.me.REG[3] = fra.me.REG[4];
     /* icode/icode_builder.nit:242 */
     fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1249,16 +1249,16 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* icode/icode_builder.nit:243 */
         fra.me.REG[6] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[6]);
@@ -1267,14 +1267,14 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
           nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 243);
         }
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label2;
       }
     }
@@ -1289,16 +1289,16 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
   /* icode/icode_builder.nit:249 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* icode/icode_builder.nit:249 */
       REGB2 = REGB0;
@@ -1309,25 +1309,25 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
       if (UNTAG_Bool(REGB3)) {
         /* icode/icode_builder.nit:252 */
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[4] = fra.me.REG[1];
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB2 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
           REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1335,39 +1335,39 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Bool(0);
           REGB2 = REGB4;
         }
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
         REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label3;
         label3: while(0);
         /* icode/icode_builder.nit:252 */
         CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
@@ -1404,16 +1404,16 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
   /* icode/icode_builder.nit:262 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* icode/icode_builder.nit:262 */
       REGB2 = REGB0;
@@ -1421,14 +1421,14 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
       fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
       fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label1;
     }
   }
@@ -1470,18 +1470,18 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
     fra.me.REG[2] = fra.me.REG[4];
     /* icode/icode_builder.nit:274 */
     fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1495,16 +1495,16 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
         /* icode/icode_builder.nit:275 */
         fra.me.REG[1] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[1]);
@@ -1513,14 +1513,14 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
           nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 275);
         }
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label2;
       }
     }
index 2f4554e..ee7b6f5 100644 (file)
@@ -441,7 +441,7 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* icode/icode_tools.nit:102 */
     REGB2 = REGB1;
@@ -505,7 +505,7 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
   /* icode/icode_tools.nit:106 */
   if (UNTAG_Bool(REGB0)) {
@@ -554,16 +554,16 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   /* icode/icode_tools.nit:120 */
   REGB0 = TAG_Int(0);
   REGB3 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB4)) {
       /* icode/icode_tools.nit:120 */
       REGB4 = REGB0;
@@ -572,14 +572,14 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
       fra.me.REG[8] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB4);
       fra.me.REG[9] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8], fra.me.REG[9]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB4;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -611,18 +611,18 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
     fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[4]);
     /* icode/icode_tools.nit:137 */
     REGB0 = TAG_Int(0);
-    /* ../lib/standard/kernel.nit:350 */
+    /* ../lib/standard/kernel.nit:399 */
     REGB3 = REGB2;
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB4)) {
         /* icode/icode_tools.nit:137 */
         REGB4 = REGB0;
@@ -638,28 +638,28 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
         }
         fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB4);
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[2]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB4 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = REGB4;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label4;
       }
     }
     label4: while(0);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB0)) {
         /* icode/icode_tools.nit:140 */
         REGB0 = REGB2;
@@ -670,14 +670,14 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
         }
         fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB0);
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], NIT_NULL);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = REGB0;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label5;
       }
     }
index be2524c..54d013d 100644 (file)
@@ -406,23 +406,23 @@ val_t location___Location___text(val_t p0){
   fra.me.REG[4] = CALL_location___SourceFile___line_starts(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = CALL_location___Location___line_start(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB0 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -430,26 +430,26 @@ val_t location___Location___text(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB0 = REGB2;
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label2;
   label2: while(0);
   /* location.nit:73 */
@@ -458,11 +458,11 @@ val_t location___Location___text(val_t p0){
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_location, 73);
   }
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(fra.me.REG[4])+UNTAG_Int(REGB1));
   /* location.nit:73 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
   /* location.nit:74 */
   fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
@@ -473,23 +473,23 @@ val_t location___Location___text(val_t p0){
   fra.me.REG[4] = CALL_location___SourceFile___line_starts(fra.me.REG[4])(fra.me.REG[4]);
   REGB1 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -497,26 +497,26 @@ val_t location___Location___text(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB3 = TAG_Bool(0);
     REGB1 = REGB3;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label3;
   label3: while(0);
   /* location.nit:74 */
@@ -525,11 +525,11 @@ val_t location___Location___text(val_t p0){
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_location, 74);
   }
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(fra.me.REG[4])+UNTAG_Int(REGB2));
   /* location.nit:74 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
   /* location.nit:75 */
   fra.me.REG[3] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
@@ -538,11 +538,11 @@ val_t location___Location___text(val_t p0){
     nit_abort("Reciever is null", NULL, LOCATE_location, 75);
   }
   fra.me.REG[3] = CALL_location___SourceFile___string(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
   /* location.nit:75 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* location.nit:75 */
   fra.me.REG[3] = CALL_standard___string___AbstractString___substring(fra.me.REG[3])(fra.me.REG[3], REGB0, REGB2);
@@ -706,7 +706,7 @@ val_t location___Location_____eqeq(val_t p0, val_t p1){
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* location.nit:89 */
     REGB3 = REGB2;
@@ -727,7 +727,7 @@ val_t location___Location_____eqeq(val_t p0, val_t p1){
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB3)==(REGB2));
     /* location.nit:90 */
     REGB1 = REGB2;
@@ -748,7 +748,7 @@ val_t location___Location_____eqeq(val_t p0, val_t p1){
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* location.nit:91 */
     REGB3 = REGB2;
@@ -769,7 +769,7 @@ val_t location___Location_____eqeq(val_t p0, val_t p1){
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB3)==(REGB2));
     /* location.nit:92 */
     REGB1 = REGB2;
@@ -836,7 +836,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   /* location.nit:100 */
   if (UNTAG_Bool(REGB2)) {
@@ -856,7 +856,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
   /* location.nit:101 */
   if (UNTAG_Bool(REGB1)) {
@@ -876,7 +876,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* location.nit:103 */
   if (UNTAG_Bool(REGB2)) {
@@ -894,7 +894,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB2)==(REGB1));
     /* location.nit:105 */
     REGB3 = REGB1;
@@ -912,7 +912,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
     /* location.nit:106 */
     if (UNTAG_Bool(REGB1)) {
@@ -932,7 +932,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
     /* location.nit:107 */
     if (UNTAG_Bool(REGB3)) {
@@ -951,7 +951,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB3)==(REGB1));
     /* location.nit:110 */
     REGB2 = REGB1;
@@ -968,7 +968,7 @@ val_t location___Location___located_in(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
   } else {
     /* location.nit:110 */
@@ -1029,7 +1029,7 @@ val_t location___Location___to_s(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -1079,14 +1079,14 @@ val_t location___Location___to_s(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* location.nit:119 */
     if (UNTAG_Bool(REGB1)) {
       if (!once_value_2) {
         fra.me.REG[2] = BOX_NativeString(":");
         REGB1 = TAG_Int(1);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
         once_value_2 = fra.me.REG[2];
         register_static_object(&once_value_2);
       } else fra.me.REG[2] = once_value_2;
@@ -1101,7 +1101,7 @@ val_t location___Location___to_s(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB0 = TAG_Bool((REGB1)==(REGB0));
     /* location.nit:122 */
     REGB2 = REGB0;
@@ -1113,7 +1113,7 @@ val_t location___Location___to_s(val_t p0){
     REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB0 = TAG_Bool((REGB2)==(REGB0));
       /* location.nit:123 */
       REGB1 = REGB0;
@@ -1125,7 +1125,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_3) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_3 = fra.me.REG[3];
         register_static_object(&once_value_3);
       } else fra.me.REG[3] = once_value_3;
@@ -1135,7 +1135,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
@@ -1147,7 +1147,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_5) {
         fra.me.REG[3] = BOX_NativeString(",");
         REGB1 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_5 = fra.me.REG[3];
         register_static_object(&once_value_5);
       } else fra.me.REG[3] = once_value_5;
@@ -1159,7 +1159,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_6) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_6 = fra.me.REG[3];
         register_static_object(&once_value_6);
       } else fra.me.REG[3] = once_value_6;
@@ -1174,7 +1174,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_8) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_8 = fra.me.REG[4];
         register_static_object(&once_value_8);
       } else fra.me.REG[4] = once_value_8;
@@ -1184,7 +1184,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_9) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_9 = fra.me.REG[4];
         register_static_object(&once_value_9);
       } else fra.me.REG[4] = once_value_9;
@@ -1196,7 +1196,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_10) {
         fra.me.REG[4] = BOX_NativeString(",");
         REGB1 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_10 = fra.me.REG[4];
         register_static_object(&once_value_10);
       } else fra.me.REG[4] = once_value_10;
@@ -1208,7 +1208,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_11) {
         fra.me.REG[4] = BOX_NativeString("--");
         REGB1 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_11 = fra.me.REG[4];
         register_static_object(&once_value_11);
       } else fra.me.REG[4] = once_value_11;
@@ -1220,7 +1220,7 @@ val_t location___Location___to_s(val_t p0){
       if (!once_value_12) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_12 = fra.me.REG[4];
         register_static_object(&once_value_12);
       } else fra.me.REG[4] = once_value_12;
@@ -1237,7 +1237,7 @@ val_t location___Location___to_s(val_t p0){
     if (!once_value_13) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_13 = fra.me.REG[4];
       register_static_object(&once_value_13);
     } else fra.me.REG[4] = once_value_13;
@@ -1247,7 +1247,7 @@ val_t location___Location___to_s(val_t p0){
     if (!once_value_14) {
       fra.me.REG[1] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_14 = fra.me.REG[1];
       register_static_object(&once_value_14);
     } else fra.me.REG[1] = once_value_14;
@@ -1259,7 +1259,7 @@ val_t location___Location___to_s(val_t p0){
     if (!once_value_15) {
       fra.me.REG[1] = BOX_NativeString(",");
       REGB1 = TAG_Int(1);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_15 = fra.me.REG[1];
       register_static_object(&once_value_15);
     } else fra.me.REG[1] = once_value_15;
@@ -1271,7 +1271,7 @@ val_t location___Location___to_s(val_t p0){
     if (!once_value_16) {
       fra.me.REG[1] = BOX_NativeString("--");
       REGB1 = TAG_Int(2);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_16 = fra.me.REG[1];
       register_static_object(&once_value_16);
     } else fra.me.REG[1] = once_value_16;
@@ -1283,7 +1283,7 @@ val_t location___Location___to_s(val_t p0){
     if (!once_value_17) {
       fra.me.REG[1] = BOX_NativeString(",");
       REGB1 = TAG_Int(1);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_17 = fra.me.REG[1];
       register_static_object(&once_value_17);
     } else fra.me.REG[1] = once_value_17;
@@ -1295,7 +1295,7 @@ val_t location___Location___to_s(val_t p0){
     if (!once_value_18) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
       once_value_18 = fra.me.REG[0];
       register_static_object(&once_value_18);
     } else fra.me.REG[0] = once_value_18;
@@ -1445,7 +1445,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* location.nit:148 */
     REGB3 = REGB2;
@@ -1459,7 +1459,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
     /* location.nit:148 */
     REGB0 = REGB2;
@@ -1471,7 +1471,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB3 = TAG_Bool((REGB2)==(REGB3));
     /* location.nit:149 */
     REGB1 = REGB3;
@@ -1485,7 +1485,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
     /* location.nit:149 */
     REGB0 = REGB3;
@@ -1497,7 +1497,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB3)==(REGB1));
     /* location.nit:150 */
     REGB2 = REGB1;
@@ -1511,7 +1511,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
     /* location.nit:150 */
     REGB0 = REGB1;
@@ -1525,7 +1525,7 @@ val_t location___Location_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   /* location.nit:152 */
   REGB0 = REGB2;
@@ -1577,7 +1577,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   fra.me.REG[1] = p1;
   /* location.nit:162 */
   REGB0 = TAG_Int(27);
-  /* ../lib/standard/kernel.nit:300 */
+  /* ../lib/standard/kernel.nit:318 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
   /* location.nit:163 */
   REGB1 = TAG_Int(3);
@@ -1585,7 +1585,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1596,7 +1596,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("[0m");
     REGB1 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -1609,7 +1609,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -1620,7 +1620,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[4] = BOX_NativeString("[");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_4 = fra.me.REG[4];
     register_static_object(&once_value_4);
   } else fra.me.REG[4] = once_value_4;
@@ -1630,7 +1630,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_5) {
     fra.me.REG[1] = BOX_NativeString("m");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_5 = fra.me.REG[1];
     register_static_object(&once_value_5);
   } else fra.me.REG[1] = once_value_5;
@@ -1647,23 +1647,23 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   }
   fra.me.REG[1] = CALL_location___SourceFile___line_starts(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1671,26 +1671,26 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB3 = TAG_Bool(0);
     REGB2 = REGB3;
   }
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label6;
   label6: while(0);
   /* location.nit:168 */
@@ -1707,7 +1707,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   /* location.nit:171 */
   while(1) {
     REGB3 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
     /* ../lib/standard/collection/array.nit:24 */
     REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1721,12 +1721,12 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
     /* location.nit:171 */
     if (UNTAG_Bool(REGB4)) {
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
       /* location.nit:171 */
       REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB4);
@@ -1734,7 +1734,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB3 = TAG_Bool((REGB4)==(REGB3));
         /* location.nit:171 */
         REGB5 = REGB3;
@@ -1746,7 +1746,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     }
     if (UNTAG_Bool(REGB5)) {
       REGB5 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
       /* location.nit:171 */
       REGB5 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB5);
@@ -1754,7 +1754,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB5,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB3 = TAG_Bool((REGB5)==(REGB3));
         /* location.nit:171 */
         REGB4 = REGB3;
@@ -1767,7 +1767,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB4)) {
       /* location.nit:172 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
       /* location.nit:172 */
       REGB2 = REGB4;
@@ -1780,7 +1780,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   /* location.nit:174 */
   REGB4 = CALL_location___Location___column_start(fra.me.REG[0])(fra.me.REG[0]);
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB3));
   /* location.nit:174 */
   fra.me.REG[4] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB1, REGB3);
@@ -1789,18 +1789,18 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   REGB4 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
   if (UNTAG_Bool(REGB4)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB3 = TAG_Bool((REGB0)==(REGB3));
     /* location.nit:176 */
     REGB4 = REGB3;
   }
   REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
   if (UNTAG_Bool(REGB4)) {
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
     /* location.nit:177 */
     REGB3 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB3 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB3));
     /* location.nit:177 */
     fra.me.REG[5] = REGB3;
@@ -1809,7 +1809,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     REGB3 = CALL_location___Location___column_end(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[5] = REGB3;
   }
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(fra.me.REG[5]));
   /* ../lib/standard/collection/array.nit:24 */
   REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1823,17 +1823,17 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB4));
   /* location.nit:183 */
   if (UNTAG_Bool(REGB4)) {
     /* location.nit:184 */
     REGB4 = CALL_location___Location___column_start(fra.me.REG[0])(fra.me.REG[0]);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
     /* location.nit:184 */
     REGB3 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB3 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB3));
     /* location.nit:184 */
     REGB4 = CALL_location___Location___column_start(fra.me.REG[0])(fra.me.REG[0]);
@@ -1841,22 +1841,22 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_location, 184);
     }
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB4 = TAG_Int(UNTAG_Int(fra.me.REG[5])-UNTAG_Int(REGB4));
     /* location.nit:184 */
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
     /* location.nit:184 */
     fra.me.REG[6] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB3, REGB0);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(fra.me.REG[5]));
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
     REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(fra.me.REG[5]));
     /* location.nit:185 */
     REGB3 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
     /* location.nit:185 */
     fra.me.REG[5] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB3);
@@ -1865,7 +1865,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB3 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB3);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB3);
       once_value_8 = fra.me.REG[7];
       register_static_object(&once_value_8);
     } else fra.me.REG[7] = once_value_8;
@@ -1875,7 +1875,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB3 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB3);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB3);
       once_value_9 = fra.me.REG[7];
       register_static_object(&once_value_9);
     } else fra.me.REG[7] = once_value_9;
@@ -1886,22 +1886,22 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   fra.me.REG[7] = NEW_Buffer_standard___string___Buffer___init();
   /* location.nit:191 */
   REGB3 = CALL_location___Location___column_start(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
   /* location.nit:191 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB0));
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB3)) {
       /* location.nit:191 */
       REGB3 = REGB1;
@@ -1911,7 +1911,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB2));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB2 = TAG_Bool((REGB3)==(REGB2));
         /* location.nit:192 */
         REGB4 = REGB2;
@@ -1925,14 +1925,14 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
         REGB4 = TAG_Char(' ');
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], REGB4);
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB1 = REGB4;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label10;
     }
   }
@@ -1943,7 +1943,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_11) {
     fra.me.REG[0] = BOX_NativeString("\t");
     REGB1 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
     once_value_11 = fra.me.REG[0];
     register_static_object(&once_value_11);
   } else fra.me.REG[0] = once_value_11;
@@ -1953,7 +1953,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -1963,7 +1963,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_13) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_13 = fra.me.REG[3];
     register_static_object(&once_value_13);
   } else fra.me.REG[3] = once_value_13;
@@ -1973,7 +1973,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_14) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
     once_value_14 = fra.me.REG[6];
     register_static_object(&once_value_14);
   } else fra.me.REG[6] = once_value_14;
@@ -1983,7 +1983,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_15) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_15 = fra.me.REG[2];
     register_static_object(&once_value_15);
   } else fra.me.REG[2] = once_value_15;
@@ -1993,7 +1993,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_16) {
     fra.me.REG[5] = BOX_NativeString("\n\t");
     REGB1 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_16 = fra.me.REG[5];
     register_static_object(&once_value_16);
   } else fra.me.REG[5] = once_value_16;
@@ -2004,7 +2004,7 @@ val_t location___Location___colored_line(val_t p0, val_t p1){
   if (!once_value_17) {
     fra.me.REG[7] = BOX_NativeString("^");
     REGB1 = TAG_Int(1);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
     once_value_17 = fra.me.REG[7];
     register_static_object(&once_value_17);
   } else fra.me.REG[7] = once_value_17;
index 4b1d2bc..c24fded 100644 (file)
@@ -201,18 +201,18 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
   fra.me.REG[2] = p2;
   /* metamodel/abstractmetamodel.nit:57 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -226,16 +226,16 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* metamodel/abstractmetamodel.nit:59 */
       REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
@@ -246,18 +246,18 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
         /* metamodel/abstractmetamodel.nit:62 */
         fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[5])(fra.me.REG[5]);
         fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB1 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -271,16 +271,16 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB2)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
             /* metamodel/abstractmetamodel.nit:63 */
             REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
@@ -290,27 +290,27 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
             /* metamodel/abstractmetamodel.nit:64 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
             label1: while(0);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB2 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = REGB2;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label2;
           }
         }
         label2: while(0);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -558,7 +558,7 @@ val_t metamodel___abstractmetamodel___MMDirectory___full_name_for(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -570,7 +570,7 @@ val_t metamodel___abstractmetamodel___MMDirectory___full_name_for(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -581,7 +581,7 @@ val_t metamodel___abstractmetamodel___MMDirectory___full_name_for(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -960,7 +960,7 @@ void metamodel___abstractmetamodel___MMModule___add_super_module(val_t p0, val_t
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* metamodel/abstractmetamodel.nit:181 */
     REGB2 = REGB1;
@@ -1022,7 +1022,7 @@ void metamodel___abstractmetamodel___MMModule___add_super_module(val_t p0, val_t
     REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* metamodel/abstractmetamodel.nit:186 */
       REGB1 = REGB2;
@@ -2354,7 +2354,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* metamodel/abstractmetamodel.nit:414 */
       REGB2 = REGB1;
@@ -2560,18 +2560,18 @@ val_t metamodel___abstractmetamodel___MMLocalClass___super_methods_named(val_t p
   fra.me.REG[2] = fra.me.REG[0];
   /* metamodel/abstractmetamodel.nit:469 */
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -2585,30 +2585,30 @@ val_t metamodel___abstractmetamodel___MMLocalClass___super_methods_named(val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* metamodel/abstractmetamodel.nit:471 */
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       /* metamodel/abstractmetamodel.nit:473 */
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -2931,7 +2931,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___total_order_compare(val_t p
       if (UNTAG_Bool(REGB1)) {
         /* metamodel/abstractmetamodel.nit:530 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:239 */
+        /* ../lib/standard/kernel.nit:246 */
         REGB1 = TAG_Int(-UNTAG_Int(REGB1));
         /* metamodel/abstractmetamodel.nit:530 */
         REGB0 = REGB1;
@@ -2950,7 +2950,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___total_order_compare(val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* metamodel/abstractmetamodel.nit:534 */
   if (UNTAG_Bool(REGB3)) {
@@ -2964,13 +2964,13 @@ val_t metamodel___abstractmetamodel___MMLocalClass___total_order_compare(val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
     /* metamodel/abstractmetamodel.nit:536 */
     if (UNTAG_Bool(REGB1)) {
       /* metamodel/abstractmetamodel.nit:537 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB1 = TAG_Int(-UNTAG_Int(REGB1));
       /* metamodel/abstractmetamodel.nit:537 */
       REGB0 = REGB1;
@@ -3542,7 +3542,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -3555,7 +3555,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -3567,7 +3567,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("::(?::");
       REGB0 = TAG_Int(6);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -3579,7 +3579,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString(")");
       REGB0 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_4 = fra.me.REG[2];
       register_static_object(&once_value_4);
     } else fra.me.REG[2] = once_value_4;
@@ -3604,7 +3604,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_6) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_6 = fra.me.REG[3];
         register_static_object(&once_value_6);
       } else fra.me.REG[3] = once_value_6;
@@ -3617,7 +3617,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_7) {
         fra.me.REG[3] = BOX_NativeString("::");
         REGB0 = TAG_Int(2);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_7 = fra.me.REG[3];
         register_static_object(&once_value_7);
       } else fra.me.REG[3] = once_value_7;
@@ -3629,7 +3629,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_8) {
         fra.me.REG[3] = BOX_NativeString("::");
         REGB0 = TAG_Int(2);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_8 = fra.me.REG[3];
         register_static_object(&once_value_8);
       } else fra.me.REG[3] = once_value_8;
@@ -3641,7 +3641,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_9) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_9 = fra.me.REG[3];
         register_static_object(&once_value_9);
       } else fra.me.REG[3] = once_value_9;
@@ -3657,7 +3657,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_10) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_10 = fra.me.REG[3];
         register_static_object(&once_value_10);
       } else fra.me.REG[3] = once_value_10;
@@ -3670,7 +3670,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_11) {
         fra.me.REG[3] = BOX_NativeString("::");
         REGB0 = TAG_Int(2);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_11 = fra.me.REG[3];
         register_static_object(&once_value_11);
       } else fra.me.REG[3] = once_value_11;
@@ -3682,7 +3682,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_12) {
         fra.me.REG[3] = BOX_NativeString("::(");
         REGB0 = TAG_Int(3);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_12 = fra.me.REG[3];
         register_static_object(&once_value_12);
       } else fra.me.REG[3] = once_value_12;
@@ -3695,7 +3695,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___full_name(val_t p0){
       if (!once_value_13) {
         fra.me.REG[0] = BOX_NativeString(")");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_13 = fra.me.REG[0];
         register_static_object(&once_value_13);
       } else fra.me.REG[0] = once_value_13;
index a616ce4..7968d14 100644 (file)
@@ -19,21 +19,21 @@ val_t metamodel___genericity___MMLocalClass___get_formal(val_t p0, val_t p1){
   REGB0 = p1;
   /* metamodel/genericity.nit:28 */
   fra.me.REG[0] = CALL_metamodel___genericity___MMLocalClass___formals_types(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -41,26 +41,26 @@ val_t metamodel___genericity___MMLocalClass___get_formal(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* metamodel/genericity.nit:28 */
@@ -119,7 +119,7 @@ void metamodel___genericity___MMLocalClass___register_formal(val_t p0, val_t p1)
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* metamodel/genericity.nit:36 */
     REGB2 = REGB1;
@@ -167,18 +167,18 @@ val_t metamodel___genericity___MMLocalClass___get_instantiate_type(val_t p0, val
     nit_abort("Uninitialized attribute %s", "_types", LOCATE_metamodel___genericity, 46);
   }
   fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -192,30 +192,30 @@ val_t metamodel___genericity___MMLocalClass___get_instantiate_type(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* metamodel/genericity.nit:47 */
       REGB1 = CALL_metamodel___genericity___MMTypeGeneric___params_equals(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       if (UNTAG_Bool(REGB1)) {
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -277,16 +277,16 @@ val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
     /* metamodel/genericity.nit:65 */
     REGB0 = TAG_Int(0);
     REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* metamodel/genericity.nit:65 */
         REGB2 = REGB0;
@@ -299,14 +299,14 @@ val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
         fra.me.REG[1] = NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[1], REGB2, fra.me.REG[0]);
         /* metamodel/genericity.nit:68 */
         CALL_metamodel___genericity___MMLocalClass___register_formal(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label1;
       }
     }
@@ -314,16 +314,16 @@ val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
     /* metamodel/genericity.nit:71 */
     REGB0 = TAG_Int(0);
     REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* metamodel/genericity.nit:71 */
         REGB2 = REGB0;
@@ -338,21 +338,21 @@ val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
           nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 73);
         }
         fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -360,26 +360,26 @@ val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Bool(0);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label2;
         label2: while(0);
         /* metamodel/genericity.nit:74 */
@@ -387,14 +387,14 @@ val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
         fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[3] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
         CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label3;
       }
     }
@@ -498,7 +498,7 @@ val_t metamodel___genericity___MMLocalClass___is_generic(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* metamodel/genericity.nit:91 */
   goto label1;
@@ -753,18 +753,18 @@ val_t metamodel___genericity___MMTypeGeneric___for_module(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 139);
     }
     fra.me.REG[4] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -778,28 +778,28 @@ val_t metamodel___genericity___MMTypeGeneric___for_module(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* metamodel/genericity.nit:140 */
         fra.me.REG[6] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label1;
       }
     }
@@ -853,18 +853,18 @@ val_t metamodel___genericity___MMTypeGeneric___adapt_to(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 151);
   }
   fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -878,28 +878,28 @@ val_t metamodel___genericity___MMTypeGeneric___adapt_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* metamodel/genericity.nit:152 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -967,7 +967,7 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* metamodel/genericity.nit:160 */
     REGB2 = REGB1;
@@ -987,16 +987,16 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB3)) {
       /* metamodel/genericity.nit:163 */
       REGB3 = REGB1;
@@ -1007,23 +1007,23 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
         nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 164);
       }
       fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB4 = REGB3;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB5 = TAG_Int(0);
       REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB6)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -1031,45 +1031,45 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB6 = TAG_Bool(0);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label2;
       label2: while(0);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[3] = fra.me.REG[1];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1077,26 +1077,26 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label3;
       label3: while(0);
       /* metamodel/genericity.nit:164 */
@@ -1119,14 +1119,14 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
         REGB2 = REGB3;
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
@@ -1168,7 +1168,7 @@ val_t metamodel___genericity___MMTypeGeneric___to_s(val_t p0){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1179,7 +1179,7 @@ val_t metamodel___genericity___MMTypeGeneric___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("[");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -1194,7 +1194,7 @@ val_t metamodel___genericity___MMTypeGeneric___to_s(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -1204,7 +1204,7 @@ val_t metamodel___genericity___MMTypeGeneric___to_s(val_t p0){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("]");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -1254,38 +1254,38 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* metamodel/genericity.nit:180 */
       REGB2 = REGB0;
       /* metamodel/genericity.nit:182 */
       fra.me.REG[2] = CALL_metamodel___genericity___MMTypeGeneric___params(fra.me.REG[1])(fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB3 = REGB2;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1293,26 +1293,26 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
       /* metamodel/genericity.nit:182 */
@@ -1322,21 +1322,21 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 182);
       }
       fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1344,26 +1344,26 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label2;
       label2: while(0);
       /* metamodel/genericity.nit:182 */
@@ -1378,14 +1378,14 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
         REGB2 = TAG_Bool(0);
         goto label3;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
@@ -1423,18 +1423,18 @@ val_t metamodel___genericity___MMTypeGeneric___has_formal(val_t p0){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 191);
   }
   fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1448,16 +1448,16 @@ val_t metamodel___genericity___MMTypeGeneric___has_formal(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
       /* metamodel/genericity.nit:192 */
       REGB1 = CALL_metamodel___type_formal___MMType___has_formal(fra.me.REG[2])(fra.me.REG[2]);
@@ -1465,14 +1465,14 @@ val_t metamodel___genericity___MMTypeGeneric___has_formal(val_t p0){
         REGB1 = TAG_Bool(1);
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1743,21 +1743,21 @@ val_t metamodel___genericity___MMTypeFormalParameter___adapt_to(val_t p0, val_t
   /* metamodel/genericity.nit:240 */
   fra.me.REG[2] = CALL_metamodel___genericity___MMTypeGeneric___params(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1765,26 +1765,26 @@ val_t metamodel___genericity___MMTypeFormalParameter___adapt_to(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* metamodel/genericity.nit:241 */
index ce2006a..70c6d11 100644 (file)
@@ -47,7 +47,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("Fatal error: inherit_local_property error\n");
     REGB0 = TAG_Int(42);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -59,7 +59,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("------- ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -71,7 +71,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("::");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -82,7 +82,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_4) {
     fra.me.REG[1] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_4 = fra.me.REG[1];
     register_static_object(&once_value_4);
   } else fra.me.REG[1] = once_value_4;
@@ -94,7 +94,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_5) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_5 = fra.me.REG[1];
     register_static_object(&once_value_5);
   } else fra.me.REG[1] = once_value_5;
@@ -102,18 +102,18 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
   CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -127,16 +127,16 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:32 */
       REGB1 = TAG_Int(3);
@@ -144,7 +144,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
       if (!once_value_6) {
         fra.me.REG[6] = BOX_NativeString("   ");
         REGB1 = TAG_Int(3);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
@@ -155,7 +155,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
       if (!once_value_7) {
         fra.me.REG[1] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
         once_value_7 = fra.me.REG[1];
         register_static_object(&once_value_7);
       } else fra.me.REG[1] = once_value_7;
@@ -163,14 +163,14 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label8;
     }
   }
@@ -181,7 +181,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_9) {
     fra.me.REG[2] = BOX_NativeString("------- ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_9 = fra.me.REG[2];
     register_static_object(&once_value_9);
   } else fra.me.REG[2] = once_value_9;
@@ -194,7 +194,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
@@ -208,7 +208,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_11) {
     fra.me.REG[2] = BOX_NativeString("------- ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_11 = fra.me.REG[2];
     register_static_object(&once_value_11);
   } else fra.me.REG[2] = once_value_11;
@@ -220,7 +220,7 @@ void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, va
   if (!once_value_12) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_12 = fra.me.REG[3];
     register_static_object(&once_value_12);
   } else fra.me.REG[3] = once_value_12;
@@ -256,7 +256,7 @@ val_t metamodel___inheritance___MMModule___type_any(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
       REGB0 = TAG_Int(6);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -296,7 +296,7 @@ val_t metamodel___inheritance___MMModule___type_any_extern(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Pointer");
       REGB0 = TAG_Int(7);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -361,18 +361,18 @@ void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
     nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 60);
   }
   fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -386,28 +386,28 @@ void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:61 */
       fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(fra.me.REG[3])(fra.me.REG[3]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMModule___import_global_classes_1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -559,7 +559,7 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
       if (!once_value_2) {
         fra.me.REG[3] = BOX_NativeString("Fatal error: Inheritance loop for class ");
         REGB0 = TAG_Int(40);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
       } else fra.me.REG[3] = once_value_2;
@@ -570,7 +570,7 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
       if (!once_value_3) {
         fra.me.REG[3] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_3 = fra.me.REG[3];
         register_static_object(&once_value_3);
       } else fra.me.REG[3] = once_value_3;
@@ -716,7 +716,7 @@ void metamodel___inheritance___MMLocalClass___compute_ancestors(val_t p0){
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* metamodel/inheritance.nit:124 */
       REGB2 = REGB1;
@@ -785,18 +785,18 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
   /* metamodel/inheritance.nit:143 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -810,28 +810,28 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:144 */
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMLocalClass___inherit_global_properties_2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label4;
     }
   }
@@ -896,7 +896,7 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
         REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
         if (UNTAG_Bool(REGB2)) {
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
           /* metamodel/inheritance.nit:157 */
           REGB2 = REGB1;
@@ -1008,18 +1008,18 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property(val_t p0, val
   /* metamodel/inheritance.nit:180 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1033,16 +1033,16 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
       /* metamodel/inheritance.nit:181 */
       REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
@@ -1054,14 +1054,14 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property(val_t p0, val
         REGB0 = REGB2;
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1143,7 +1143,7 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
       /* metamodel/inheritance.nit:199 */
       REGB3 = REGB2;
@@ -1191,18 +1191,18 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
   /* metamodel/inheritance.nit:209 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB3 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB3 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1216,16 +1216,16 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
       /* metamodel/inheritance.nit:210 */
       REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
@@ -1273,7 +1273,7 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
             REGB4 = TAG_Bool(0);
             REGB1 = REGB4;
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
             /* metamodel/inheritance.nit:214 */
             REGB1 = REGB2;
@@ -1299,14 +1299,14 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
       }
       label2: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -1328,7 +1328,7 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB3)==(REGB1));
     /* metamodel/inheritance.nit:219 */
     REGB2 = REGB1;
@@ -1727,7 +1727,7 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("Object");
       REGB0 = TAG_Int(6);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -1761,20 +1761,20 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
         /* metamodel/inheritance.nit:304 */
         REGB1 = TAG_Bool(1);
         REGB0 = REGB1;
-        /* ../lib/standard/collection/array.nit:266 */
+        /* ../lib/standard/collection/array.nit:267 */
         fra.me.REG[3] = fra.me.REG[1];
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB1 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1788,16 +1788,16 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB2)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
             /* metamodel/inheritance.nit:306 */
             fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
@@ -1809,14 +1809,14 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
               /* metamodel/inheritance.nit:308 */
               goto label3;
             }
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB2 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = REGB2;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label4;
           }
         }
@@ -1832,7 +1832,7 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
         if (!once_value_6) {
           fra.me.REG[3] = BOX_NativeString("Pointer");
           REGB0 = TAG_Int(7);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_6 = fra.me.REG[3];
           register_static_object(&once_value_6);
         } else fra.me.REG[3] = once_value_6;
@@ -1933,18 +1933,18 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
     nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 331);
   }
   fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -1958,32 +1958,32 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:332 */
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[4])(fra.me.REG[4]);
       fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB1 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB1 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1997,16 +1997,16 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
           /* metamodel/inheritance.nit:333 */
           REGB2 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
@@ -2018,26 +2018,26 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
           fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           /* metamodel/inheritance.nit:334 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = REGB2;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -2072,18 +2072,18 @@ void metamodel___inheritance___MMLocalClass___add_explicit_classes(val_t p0, val
     nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 342);
   }
   fra.me.REG[0] = ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -2097,28 +2097,28 @@ void metamodel___inheritance___MMLocalClass___add_explicit_classes(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:343 */
       fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[3])(fra.me.REG[3]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -2145,18 +2145,18 @@ void metamodel___inheritance___MMLocalClass___compute_super_parents(val_t p0, va
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -2170,27 +2170,27 @@ void metamodel___inheritance___MMLocalClass___compute_super_parents(val_t p0, va
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:351 */
       CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -2247,18 +2247,18 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
     nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 361);
   }
   fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -2272,16 +2272,16 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:362 */
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[0]));
@@ -2299,14 +2299,14 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
       fra.me.REG[4] = NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[0], fra.me.REG[4]);
       /* metamodel/inheritance.nit:364 */
       CALL_metamodel___inheritance___MMAncestor___add_in(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -2318,18 +2318,18 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
     nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 366);
   }
   fra.me.REG[3] = ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -2343,16 +2343,16 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:367 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[4])(fra.me.REG[4]);
@@ -2369,14 +2369,14 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
       }
       /* metamodel/inheritance.nit:368 */
       CALL_metamodel___inheritance___MMAncestor___add_in(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -2412,18 +2412,18 @@ val_t metamodel___inheritance___MMLocalClass___group_ancestors(val_t p0, val_t p
   fra.me.REG[1] = p1;
   /* metamodel/inheritance.nit:377 */
   fra.me.REG[0] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -2437,16 +2437,16 @@ val_t metamodel___inheritance___MMLocalClass___group_ancestors(val_t p0, val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:379 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[3])(fra.me.REG[3]);
@@ -2466,14 +2466,14 @@ val_t metamodel___inheritance___MMLocalClass___group_ancestors(val_t p0, val_t p
       }
       /* metamodel/inheritance.nit:390 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -2528,7 +2528,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* metamodel/inheritance.nit:421 */
   if (UNTAG_Bool(REGB1)) {
@@ -2539,7 +2539,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("Fatal error: Incompatibles ancestors for ");
       REGB1 = TAG_Int(41);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -2551,7 +2551,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString(": ");
       REGB1 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -2560,7 +2560,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(", ");
       REGB1 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -2570,7 +2570,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("\n");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -2750,7 +2750,7 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* metamodel/inheritance.nit:439 */
     REGB2 = REGB1;
@@ -2771,7 +2771,7 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* metamodel/inheritance.nit:442 */
       REGB0 = REGB1;
@@ -2788,18 +2788,18 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
     } else {
       /* metamodel/inheritance.nit:448 */
       fra.me.REG[5] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB0 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB0 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -2813,16 +2813,16 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB1)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
           /* metamodel/inheritance.nit:450 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1]);
@@ -2830,14 +2830,14 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
             fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
           }
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB0 = REGB1;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label1;
         }
       }
@@ -2856,7 +2856,7 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* metamodel/inheritance.nit:455 */
         REGB2 = REGB1;
@@ -2917,18 +2917,18 @@ void metamodel___inheritance___MMLocalProperty___inherit_global(val_t p0, val_t
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -2942,16 +2942,16 @@ void metamodel___inheritance___MMLocalProperty___inherit_global(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* metamodel/inheritance.nit:481 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
@@ -2963,14 +2963,14 @@ void metamodel___inheritance___MMLocalProperty___inherit_global(val_t p0, val_t
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
       label1: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
index 3f1a2c8..c494f68 100644 (file)
@@ -165,7 +165,7 @@ val_t metamodel___partial_order___PartialOrder___has_only(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* metamodel/partial_order.nit:43 */
     REGB2 = REGB1;
@@ -324,7 +324,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("}\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -366,18 +366,18 @@ val_t metamodel___partial_order___PartialOrder___to_dot(val_t p0){
     CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
     /* metamodel/partial_order.nit:71 */
     fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -391,29 +391,29 @@ val_t metamodel___partial_order___PartialOrder___to_dot(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
         /* metamodel/partial_order.nit:72 */
         fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrder___to_dot_edge(closctx->REG[0])(closctx->REG[0], fra.me.REG[4], fra.me.REG[3]);
         CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[1])(closctx->REG[1], fra.me.REG[3]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label2;
       }
     }
@@ -440,7 +440,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot_header(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("digraph G {\ngraph [rankdir=BT];\n");
     REGB0 = TAG_Int(32);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -475,7 +475,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot_node(val_t p0, val_t p1)
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("\"");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -486,7 +486,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot_node(val_t p0, val_t p1)
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("\";\n");
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -526,7 +526,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot_edge(val_t p0, val_t p1,
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("\"");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -537,7 +537,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot_edge(val_t p0, val_t p1,
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("\" -> \"");
     REGB0 = TAG_Int(6);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -548,7 +548,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot_edge(val_t p0, val_t p1,
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\";\n");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -884,18 +884,18 @@ val_t metamodel___partial_order___PartialOrder___add_to_smallests(val_t p0, val_
   CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
   /* metamodel/partial_order.nit:158 */
   fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -909,16 +909,16 @@ val_t metamodel___partial_order___PartialOrder___add_to_smallests(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* metamodel/partial_order.nit:160 */
       REGB1 = CALL_metamodel___partial_order___PartialOrderElement_____g(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
@@ -934,14 +934,14 @@ val_t metamodel___partial_order___PartialOrder___add_to_smallests(val_t p0, val_
         /* metamodel/partial_order.nit:164 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1295,7 +1295,7 @@ val_t metamodel___partial_order___PartialOrderElement___smallers(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* metamodel/partial_order.nit:233 */
   if (UNTAG_Bool(REGB1)) {
@@ -1387,18 +1387,18 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     /* metamodel/partial_order.nit:251 */
     fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1412,16 +1412,16 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* metamodel/partial_order.nit:252 */
         fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[1])(fra.me.REG[1]);
@@ -1429,20 +1429,20 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
         fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[6])(fra.me.REG[6]);
         /* metamodel/partial_order.nit:253 */
         CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
-        /* ../lib/standard/collection/array.nit:266 */
+        /* ../lib/standard/collection/array.nit:267 */
         fra.me.REG[7] = fra.me.REG[2];
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB1 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -1456,16 +1456,16 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB2)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
             /* metamodel/partial_order.nit:255 */
             REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
@@ -1473,14 +1473,14 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
             if (UNTAG_Bool(REGB2)) {
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
             }
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB2 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = REGB2;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label1;
           }
         }
@@ -1493,14 +1493,14 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
         fra.me.REG[2] = fra.me.REG[3];
         /* metamodel/partial_order.nit:261 */
         fra.me.REG[3] = fra.me.REG[6];
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label2;
       }
     }
@@ -1563,18 +1563,18 @@ val_t metamodel___partial_order___PartialOrderElement___reverse_linear_extension
     fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
     /* metamodel/partial_order.nit:277 */
     fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1588,16 +1588,16 @@ val_t metamodel___partial_order___PartialOrderElement___reverse_linear_extension
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
         /* metamodel/partial_order.nit:278 */
         fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[1])(fra.me.REG[1]);
@@ -1605,14 +1605,14 @@ val_t metamodel___partial_order___PartialOrderElement___reverse_linear_extension
         fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[5])(fra.me.REG[5]);
         /* metamodel/partial_order.nit:279 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label1;
       }
     }
@@ -1884,18 +1884,18 @@ void metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1,
   fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
   /* metamodel/partial_order.nit:327 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1909,16 +1909,16 @@ void metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1,
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
       /* metamodel/partial_order.nit:329 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
@@ -1937,14 +1937,14 @@ void metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1,
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
       /* metamodel/partial_order.nit:331 */
       if (UNTAG_Bool(REGB2)) {
         /* metamodel/partial_order.nit:332 */
         REGB2 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[5])(fra.me.REG[5]);
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
         /* metamodel/partial_order.nit:332 */
         REGB0 = REGB3;
@@ -1954,14 +1954,14 @@ void metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1,
       /* metamodel/partial_order.nit:335 */
       fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___greaters(fra.me.REG[5])(fra.me.REG[5]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrderElement___init_1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
index d01f0da..2abc9a7 100644 (file)
@@ -414,7 +414,7 @@ val_t metamodel___static_type___MMParam___to_s(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -426,7 +426,7 @@ val_t metamodel___static_type___MMParam___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(": ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -438,7 +438,7 @@ val_t metamodel___static_type___MMParam___to_s(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -568,18 +568,18 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 100);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -593,16 +593,16 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* metamodel/static_type.nit:101 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[3])(fra.me.REG[3]);
@@ -615,14 +615,14 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB1)) {
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -737,7 +737,7 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* metamodel/static_type.nit:121 */
     REGB3 = REGB2;
@@ -773,7 +773,7 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB4)) {
     } else {
-      /* ../lib/standard/kernel.nit:198 */
+      /* ../lib/standard/kernel.nit:199 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* metamodel/static_type.nit:121 */
       REGB4 = REGB1;
@@ -825,16 +825,16 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   /* metamodel/static_type.nit:126 */
   REGB3 = TAG_Int(0);
   REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB1 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB1)) {
       /* metamodel/static_type.nit:126 */
       REGB1 = REGB3;
@@ -849,14 +849,14 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         REGB0 = REGB1;
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = REGB1;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -883,7 +883,7 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB4 = TAG_Bool((REGB3)==(REGB4));
     /* metamodel/static_type.nit:132 */
     REGB1 = REGB4;
@@ -904,38 +904,38 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB4));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB3)) {
       /* metamodel/static_type.nit:133 */
       REGB3 = REGB1;
       /* metamodel/static_type.nit:134 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB2 = REGB3;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB5 = TAG_Int(0);
       REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB6)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB5));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -943,45 +943,45 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB5));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB6 = TAG_Bool(0);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       REGB5 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label3;
       label3: while(0);
       /* metamodel/static_type.nit:134 */
       fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB5 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -989,26 +989,26 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB2 = REGB5;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label4;
       label4: while(0);
       /* metamodel/static_type.nit:134 */
@@ -1023,14 +1023,14 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         REGB0 = REGB3;
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label5;
     }
   }
@@ -1080,7 +1080,7 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
   /* metamodel/static_type.nit:142 */
   if (UNTAG_Bool(REGB1)) {
@@ -1094,21 +1094,21 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 143);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1116,26 +1116,26 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* metamodel/static_type.nit:143 */
@@ -1199,7 +1199,7 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* metamodel/static_type.nit:149 */
   if (UNTAG_Bool(REGB1)) {
@@ -1234,16 +1234,16 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* metamodel/static_type.nit:152 */
         REGB2 = REGB1;
@@ -1254,21 +1254,21 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
           nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 153);
         }
         fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1276,39 +1276,39 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Bool(0);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
         REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label1;
         label1: while(0);
         /* metamodel/static_type.nit:154 */
         fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB1 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label2;
       }
     }
@@ -1319,7 +1319,7 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("(");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -1328,7 +1328,7 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString(", ");
       REGB1 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -1338,7 +1338,7 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(")");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -1369,7 +1369,7 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString(": ");
       REGB1 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -1380,7 +1380,7 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     if (!once_value_7) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
       once_value_7 = fra.me.REG[0];
       register_static_object(&once_value_7);
     } else fra.me.REG[0] = once_value_7;
@@ -1451,18 +1451,18 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 171);
   }
   fra.me.REG[5] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -1476,16 +1476,16 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
       /* metamodel/static_type.nit:172 */
       fra.me.REG[8] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[7])(fra.me.REG[7]);
@@ -1510,14 +1510,14 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
       }
       /* metamodel/static_type.nit:180 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1557,18 +1557,18 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 187);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1582,29 +1582,29 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* metamodel/static_type.nit:188 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[6])(fra.me.REG[6]);
       fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___adaptation_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -1678,18 +1678,18 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 203);
   }
   fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1703,16 +1703,16 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
       /* metamodel/static_type.nit:204 */
       fra.me.REG[6] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[5])(fra.me.REG[5]);
@@ -1739,14 +1739,14 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
       }
       /* metamodel/static_type.nit:213 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1804,18 +1804,18 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 223);
   }
   fra.me.REG[7] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -1829,16 +1829,16 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
       /* metamodel/static_type.nit:224 */
       fra.me.REG[8] = CALL_metamodel___static_type___MMClosure___not_for_self(fra.me.REG[6])(fra.me.REG[6]);
@@ -1856,14 +1856,14 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
       }
       /* metamodel/static_type.nit:226 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -3077,7 +3077,7 @@ val_t metamodel___static_type___MMNullableType___to_s(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("nullable ");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3094,7 +3094,7 @@ val_t metamodel___static_type___MMNullableType___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -3649,7 +3649,7 @@ val_t metamodel___static_type___MMTypeNone___to_s(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("null");
     REGB0 = TAG_Int(4);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -3829,7 +3829,7 @@ val_t metamodel___static_type___MMModule___type_bool(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Bool");
       REGB0 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
index d0a04ac..8939508 100644 (file)
@@ -73,7 +73,7 @@ val_t metamodel___vararg___MMSignature___has_vararg(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* metamodel/vararg.nit:30 */
   goto label1;
@@ -178,7 +178,7 @@ void metamodel___vararg___MMSignature___init(val_t p0, val_t p1, val_t p2, val_t
   CALL_SUPER_metamodel___vararg___MMSignature___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
   /* metamodel/vararg.nit:50 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* metamodel/vararg.nit:50 */
   ATTR_metamodel___vararg___MMSignature____vararg_rank(fra.me.REG[4]) = REGB0;
index fcede1c..94e1b05 100644 (file)
@@ -170,7 +170,7 @@ void mmloader___ToolContext___process_options(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("NIT_PATH");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -190,7 +190,7 @@ void mmloader___ToolContext___process_options(val_t p0){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("NIT_DIR");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -207,7 +207,7 @@ void mmloader___ToolContext___process_options(val_t p0){
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -217,7 +217,7 @@ void mmloader___ToolContext___process_options(val_t p0){
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("/lib");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_4 = fra.me.REG[2];
       register_static_object(&once_value_4);
     } else fra.me.REG[2] = once_value_4;
@@ -237,7 +237,7 @@ void mmloader___ToolContext___process_options(val_t p0){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -250,7 +250,7 @@ void mmloader___ToolContext___process_options(val_t p0){
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString("/../lib");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -311,18 +311,18 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
     nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 85);
   }
   fra.me.REG[4] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -336,16 +336,16 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* mmloader.nit:86 */
       fra.me.REG[7] = CALL_mmloader___ModuleLoader___try_to_load_dir(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[2]);
@@ -414,7 +414,7 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
           if (!once_value_4) {
             fra.me.REG[9] = BOX_NativeString("Error: Dependency loop for module ");
             REGB1 = TAG_Int(34);
-            fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+            fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
             once_value_4 = fra.me.REG[9];
             register_static_object(&once_value_4);
           } else fra.me.REG[9] = once_value_4;
@@ -425,7 +425,7 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
           if (!once_value_5) {
             fra.me.REG[9] = BOX_NativeString("");
             REGB1 = TAG_Int(0);
-            fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+            fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
             once_value_5 = fra.me.REG[9];
             register_static_object(&once_value_5);
           } else fra.me.REG[9] = once_value_5;
@@ -458,14 +458,14 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
         fra.me.REG[3] = fra.me.REG[6];
         goto label3;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -546,7 +546,7 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString(".nit");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -598,7 +598,7 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[6] = BOX_NativeString("Error: File ");
       REGB0 = TAG_Int(12);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_3 = fra.me.REG[6];
       register_static_object(&once_value_3);
     } else fra.me.REG[6] = once_value_3;
@@ -608,7 +608,7 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[6] = BOX_NativeString(" not found.");
       REGB0 = TAG_Int(11);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_4 = fra.me.REG[6];
       register_static_object(&once_value_4);
     } else fra.me.REG[6] = once_value_4;
@@ -645,7 +645,7 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString("Error: ");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -655,7 +655,7 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
   if (!once_value_6) {
     fra.me.REG[1] = BOX_NativeString(" is not a NIT source module.");
     REGB0 = TAG_Int(28);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_6 = fra.me.REG[1];
     register_static_object(&once_value_6);
   } else fra.me.REG[1] = once_value_6;
@@ -766,18 +766,18 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   }
   /* mmloader.nit:163 */
   fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -791,16 +791,16 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* mmloader.nit:164 */
       fra.me.REG[5] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
@@ -823,14 +823,14 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
         fra.me.REG[3] = fra.me.REG[5];
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -841,7 +841,7 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("Error: No ressource found for module ");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -852,7 +852,7 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   if (!once_value_5) {
     fra.me.REG[1] = BOX_NativeString(".");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_5 = fra.me.REG[1];
     register_static_object(&once_value_5);
   } else fra.me.REG[1] = once_value_5;
@@ -991,7 +991,7 @@ val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1002,7 +1002,7 @@ val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -1013,7 +1013,7 @@ val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -1068,7 +1068,7 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1079,7 +1079,7 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -1090,7 +1090,7 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(".");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -1101,7 +1101,7 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -1154,7 +1154,7 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -1165,7 +1165,7 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   if (!once_value_2) {
     fra.me.REG[5] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
   } else fra.me.REG[5] = once_value_2;
@@ -1176,7 +1176,7 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   if (!once_value_3) {
     fra.me.REG[5] = BOX_NativeString(".");
     REGB0 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_3 = fra.me.REG[5];
     register_static_object(&once_value_3);
   } else fra.me.REG[5] = once_value_3;
@@ -1187,7 +1187,7 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   if (!once_value_4) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_4 = fra.me.REG[5];
     register_static_object(&once_value_4);
   } else fra.me.REG[5] = once_value_4;
@@ -1243,7 +1243,7 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("-");
     REGB0 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -1272,7 +1272,7 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
     if (!once_value_2) {
       fra.me.REG[7] = BOX_NativeString("Error: Problem in opening file ");
       REGB0 = TAG_Int(31);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_2 = fra.me.REG[7];
       register_static_object(&once_value_2);
     } else fra.me.REG[7] = once_value_2;
@@ -1282,7 +1282,7 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
     if (!once_value_3) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_3 = fra.me.REG[7];
       register_static_object(&once_value_3);
     } else fra.me.REG[7] = once_value_3;
index 047fa74..e41259c 100644 (file)
@@ -40,7 +40,7 @@ void native_interface___MMSrcModule___compile_separate_module(val_t p0, val_t p1
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -51,7 +51,7 @@ void native_interface___MMSrcModule___compile_separate_module(val_t p0, val_t p1
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("/");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -63,7 +63,7 @@ void native_interface___MMSrcModule___compile_separate_module(val_t p0, val_t p1
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
index dae1caf..365adaa 100644 (file)
@@ -143,7 +143,7 @@ void native_interface___frontier___NiVariable___prepare_for_nit(val_t p0, val_t
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("val_t ");
       REGB0 = TAG_Int(6);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -154,7 +154,7 @@ void native_interface___frontier___NiVariable___prepare_for_nit(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -169,7 +169,7 @@ void native_interface___frontier___NiVariable___prepare_for_nit(val_t p0, val_t
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -183,7 +183,7 @@ void native_interface___frontier___NiVariable___prepare_for_nit(val_t p0, val_t
     if (!once_value_4) {
       fra.me.REG[0] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_4 = fra.me.REG[0];
       register_static_object(&once_value_4);
     } else fra.me.REG[0] = once_value_4;
@@ -232,7 +232,7 @@ void native_interface___frontier___NiVariable___prepare_for_c(val_t p0, val_t p1
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -246,7 +246,7 @@ void native_interface___frontier___NiVariable___prepare_for_c(val_t p0, val_t p1
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -335,7 +335,7 @@ val_t native_interface___frontier___NiVariable___as_arg_to_nit(val_t p0){
       if (!once_value_2) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -346,7 +346,7 @@ val_t native_interface___frontier___NiVariable___as_arg_to_nit(val_t p0){
       if (!once_value_3) {
         fra.me.REG[0] = BOX_NativeString("->ref.val");
         REGB0 = TAG_Int(9);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_3 = fra.me.REG[0];
         register_static_object(&once_value_3);
       } else fra.me.REG[0] = once_value_3;
@@ -457,7 +457,7 @@ val_t native_interface___frontier___MMParam___ni_to_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("trans___");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -469,7 +469,7 @@ val_t native_interface___frontier___MMParam___ni_to_name(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -520,7 +520,7 @@ val_t native_interface___frontier___ReceiverVariable___ni_from_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("recv");
     REGB0 = TAG_Int(4);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -549,7 +549,7 @@ val_t native_interface___frontier___ReceiverVariable___ni_to_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("trans_recv");
     REGB0 = TAG_Int(10);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -648,7 +648,7 @@ val_t native_interface___frontier___ReturnVariable___ni_from_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("orig_return");
     REGB0 = TAG_Int(11);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -677,7 +677,7 @@ val_t native_interface___frontier___ReturnVariable___ni_to_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("trans_return");
     REGB0 = TAG_Int(12);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -785,7 +785,7 @@ void native_interface___frontier___ReturnVariable___prepare_for_c(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("val_t ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -796,7 +796,7 @@ void native_interface___frontier___ReturnVariable___prepare_for_c(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -844,7 +844,7 @@ void native_interface___frontier___ReturnVariable___prepare_for_nit(val_t p0, va
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("val_t ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -855,7 +855,7 @@ void native_interface___frontier___ReturnVariable___prepare_for_nit(val_t p0, va
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -918,7 +918,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("#include \"");
     REGB0 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -930,7 +930,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("._nitni.h\"\n");
     REGB0 = TAG_Int(11);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -943,7 +943,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("#include <nit_common.h>\n");
     REGB0 = TAG_Int(24);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -956,7 +956,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_4) {
     fra.me.REG[4] = BOX_NativeString("#include \"");
     REGB0 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_4 = fra.me.REG[4];
     register_static_object(&once_value_4);
   } else fra.me.REG[4] = once_value_4;
@@ -968,7 +968,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString("\"\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -982,7 +982,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -995,7 +995,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString("_NITNI_H");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
   } else fra.me.REG[2] = once_value_7;
@@ -1009,7 +1009,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_8) {
     fra.me.REG[5] = BOX_NativeString("#ifndef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_8 = fra.me.REG[5];
     register_static_object(&once_value_8);
   } else fra.me.REG[5] = once_value_8;
@@ -1019,7 +1019,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_9) {
     fra.me.REG[5] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_9 = fra.me.REG[5];
     register_static_object(&once_value_9);
   } else fra.me.REG[5] = once_value_9;
@@ -1034,7 +1034,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_10) {
     fra.me.REG[5] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_10 = fra.me.REG[5];
     register_static_object(&once_value_10);
   } else fra.me.REG[5] = once_value_10;
@@ -1044,7 +1044,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_11) {
     fra.me.REG[3] = BOX_NativeString("\n\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_11 = fra.me.REG[3];
     register_static_object(&once_value_11);
   } else fra.me.REG[3] = once_value_11;
@@ -1058,7 +1058,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -1070,7 +1070,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_13) {
     fra.me.REG[4] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_13 = fra.me.REG[4];
     register_static_object(&once_value_13);
   } else fra.me.REG[4] = once_value_13;
@@ -1082,7 +1082,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_14) {
     fra.me.REG[4] = BOX_NativeString(".nit.h");
     REGB0 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_14 = fra.me.REG[4];
     register_static_object(&once_value_14);
   } else fra.me.REG[4] = once_value_14;
@@ -1099,7 +1099,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_15) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_15 = fra.me.REG[3];
       register_static_object(&once_value_15);
     } else fra.me.REG[3] = once_value_15;
@@ -1111,7 +1111,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_16) {
       fra.me.REG[3] = BOX_NativeString("/");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_16 = fra.me.REG[3];
       register_static_object(&once_value_16);
     } else fra.me.REG[3] = once_value_16;
@@ -1123,7 +1123,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_17) {
       fra.me.REG[3] = BOX_NativeString("_nit.h");
       REGB0 = TAG_Int(6);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_17 = fra.me.REG[3];
       register_static_object(&once_value_17);
     } else fra.me.REG[3] = once_value_17;
@@ -1139,7 +1139,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_18) {
       fra.me.REG[4] = BOX_NativeString("..");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_18 = fra.me.REG[4];
       register_static_object(&once_value_18);
     } else fra.me.REG[4] = once_value_18;
@@ -1153,7 +1153,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_19) {
       fra.me.REG[5] = BOX_NativeString("#include \"");
       REGB0 = TAG_Int(10);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_19 = fra.me.REG[5];
       register_static_object(&once_value_19);
     } else fra.me.REG[5] = once_value_19;
@@ -1163,7 +1163,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_20) {
       fra.me.REG[5] = BOX_NativeString("\"\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_20 = fra.me.REG[5];
       register_static_object(&once_value_20);
     } else fra.me.REG[5] = once_value_20;
@@ -1178,7 +1178,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_21) {
       fra.me.REG[5] = BOX_NativeString("#include \"");
       REGB0 = TAG_Int(10);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_21 = fra.me.REG[5];
       register_static_object(&once_value_21);
     } else fra.me.REG[5] = once_value_21;
@@ -1188,7 +1188,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_22) {
       fra.me.REG[2] = BOX_NativeString("\"\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_22 = fra.me.REG[2];
       register_static_object(&once_value_22);
     } else fra.me.REG[2] = once_value_22;
@@ -1207,7 +1207,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_23) {
       fra.me.REG[2] = BOX_NativeString("#include <");
       REGB0 = TAG_Int(10);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_23 = fra.me.REG[2];
       register_static_object(&once_value_23);
     } else fra.me.REG[2] = once_value_23;
@@ -1218,7 +1218,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     if (!once_value_24) {
       fra.me.REG[2] = BOX_NativeString("._ffi.h>\n");
       REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_24 = fra.me.REG[2];
       register_static_object(&once_value_24);
     } else fra.me.REG[2] = once_value_24;
@@ -1237,7 +1237,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   if (!once_value_27) {
     fra.me.REG[0] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_27 = fra.me.REG[0];
     register_static_object(&once_value_27);
   } else fra.me.REG[0] = once_value_27;
@@ -1492,7 +1492,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("\n/* friendly for super of ");
     REGB0 = TAG_Int(26);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1503,7 +1503,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -1518,7 +1518,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -1530,7 +1530,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_4) {
     fra.me.REG[4] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_4 = fra.me.REG[4];
     register_static_object(&once_value_4);
   } else fra.me.REG[4] = once_value_4;
@@ -1545,7 +1545,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_5) {
     fra.me.REG[4] = BOX_NativeString("#ifndef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_5 = fra.me.REG[4];
     register_static_object(&once_value_5);
   } else fra.me.REG[4] = once_value_5;
@@ -1556,7 +1556,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -1571,7 +1571,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -1582,7 +1582,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_8) {
     fra.me.REG[4] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_8 = fra.me.REG[4];
     register_static_object(&once_value_8);
   } else fra.me.REG[4] = once_value_8;
@@ -1594,7 +1594,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_9) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_9 = fra.me.REG[4];
     register_static_object(&once_value_9);
   } else fra.me.REG[4] = once_value_9;
@@ -1607,7 +1607,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_10) {
     fra.me.REG[3] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_10 = fra.me.REG[3];
     register_static_object(&once_value_10);
   } else fra.me.REG[3] = once_value_10;
@@ -1620,7 +1620,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_11) {
     fra.me.REG[4] = BOX_NativeString("\n/* friendly for super of ");
     REGB0 = TAG_Int(26);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_11 = fra.me.REG[4];
     register_static_object(&once_value_11);
   } else fra.me.REG[4] = once_value_11;
@@ -1631,7 +1631,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -1660,20 +1660,20 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   }
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[4])(fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[4] = fra.me.REG[3];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1687,45 +1687,45 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* native_interface/frontier.nit:229 */
       CALL_native_interface___frontier___NiVariable___prepare_for_nit(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label13;
     }
   }
   label13: while(0);
   /* native_interface/frontier.nit:232 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1739,28 +1739,28 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* native_interface/frontier.nit:233 */
       fra.me.REG[6] = CALL_native_interface___frontier___NiVariable___as_arg_to_nit(fra.me.REG[6])(fra.me.REG[6]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label14;
     }
   }
@@ -1801,7 +1801,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     if (!once_value_15) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_15 = fra.me.REG[7];
       register_static_object(&once_value_15);
     } else fra.me.REG[7] = once_value_15;
@@ -1816,7 +1816,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     if (!once_value_16) {
       fra.me.REG[7] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_16 = fra.me.REG[7];
       register_static_object(&once_value_16);
     } else fra.me.REG[7] = once_value_16;
@@ -1831,7 +1831,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_17) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_17 = fra.me.REG[7];
     register_static_object(&once_value_17);
   } else fra.me.REG[7] = once_value_17;
@@ -1842,7 +1842,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_18) {
     fra.me.REG[7] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_18 = fra.me.REG[7];
     register_static_object(&once_value_18);
   } else fra.me.REG[7] = once_value_18;
@@ -1859,7 +1859,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_19) {
     fra.me.REG[0] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_19 = fra.me.REG[0];
     register_static_object(&once_value_19);
   } else fra.me.REG[0] = once_value_19;
@@ -1873,7 +1873,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_20) {
     fra.me.REG[0] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_20 = fra.me.REG[0];
     register_static_object(&once_value_20);
   } else fra.me.REG[0] = once_value_20;
@@ -1882,7 +1882,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_21) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_21 = fra.me.REG[0];
     register_static_object(&once_value_21);
   } else fra.me.REG[0] = once_value_21;
@@ -1892,7 +1892,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   if (!once_value_22) {
     fra.me.REG[0] = BOX_NativeString(" );\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_22 = fra.me.REG[0];
     register_static_object(&once_value_22);
   } else fra.me.REG[0] = once_value_22;
@@ -1926,7 +1926,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     if (!once_value_23) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_23 = fra.me.REG[0];
       register_static_object(&once_value_23);
     } else fra.me.REG[0] = once_value_23;
@@ -1952,7 +1952,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     if (!once_value_24) {
       fra.me.REG[7] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_24 = fra.me.REG[7];
       register_static_object(&once_value_24);
     } else fra.me.REG[7] = once_value_24;
@@ -1967,7 +1967,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     if (!once_value_25) {
       fra.me.REG[7] = BOX_NativeString("return ");
       REGB0 = TAG_Int(7);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_25 = fra.me.REG[7];
       register_static_object(&once_value_25);
     } else fra.me.REG[7] = once_value_25;
@@ -1982,7 +1982,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     if (!once_value_26) {
       fra.me.REG[4] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_26 = fra.me.REG[4];
       register_static_object(&once_value_26);
     } else fra.me.REG[4] = once_value_26;
@@ -2126,7 +2126,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_1) {
     fra.me.REG[6] = BOX_NativeString("\n/* out/indirect function for ");
     REGB0 = TAG_Int(30);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
   } else fra.me.REG[6] = once_value_1;
@@ -2137,7 +2137,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_2) {
     fra.me.REG[6] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
   } else fra.me.REG[6] = once_value_2;
@@ -2152,7 +2152,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_3) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
   } else fra.me.REG[6] = once_value_3;
@@ -2163,7 +2163,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_4) {
     fra.me.REG[6] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_4 = fra.me.REG[6];
     register_static_object(&once_value_4);
   } else fra.me.REG[6] = once_value_4;
@@ -2178,7 +2178,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_5) {
     fra.me.REG[6] = BOX_NativeString("/* out/indirect function for ");
     REGB0 = TAG_Int(29);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_5 = fra.me.REG[6];
     register_static_object(&once_value_5);
   } else fra.me.REG[6] = once_value_5;
@@ -2189,7 +2189,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_6) {
     fra.me.REG[6] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_6 = fra.me.REG[6];
     register_static_object(&once_value_6);
   } else fra.me.REG[6] = once_value_6;
@@ -2291,7 +2291,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     if (!once_value_9) {
       fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_9 = fra.me.REG[8];
       register_static_object(&once_value_9);
     } else fra.me.REG[8] = once_value_9;
@@ -2306,7 +2306,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     if (!once_value_10) {
       fra.me.REG[8] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_10 = fra.me.REG[8];
       register_static_object(&once_value_10);
     } else fra.me.REG[8] = once_value_10;
@@ -2321,7 +2321,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_11) {
     fra.me.REG[8] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
     once_value_11 = fra.me.REG[8];
     register_static_object(&once_value_11);
   } else fra.me.REG[8] = once_value_11;
@@ -2337,7 +2337,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_12) {
     fra.me.REG[2] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_12 = fra.me.REG[2];
     register_static_object(&once_value_12);
   } else fra.me.REG[2] = once_value_12;
@@ -2346,7 +2346,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_13) {
     fra.me.REG[2] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_13 = fra.me.REG[2];
     register_static_object(&once_value_13);
   } else fra.me.REG[2] = once_value_13;
@@ -2356,7 +2356,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_14) {
     fra.me.REG[2] = BOX_NativeString(" );\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_14 = fra.me.REG[2];
     register_static_object(&once_value_14);
   } else fra.me.REG[2] = once_value_14;
@@ -2390,7 +2390,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     if (!once_value_15) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_15 = fra.me.REG[2];
       register_static_object(&once_value_15);
     } else fra.me.REG[2] = once_value_15;
@@ -2416,7 +2416,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     if (!once_value_16) {
       fra.me.REG[0] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_16 = fra.me.REG[0];
       register_static_object(&once_value_16);
     } else fra.me.REG[0] = once_value_16;
@@ -2430,7 +2430,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   if (!once_value_17) {
     fra.me.REG[4] = BOX_NativeString("nitni_local_ref_clean(  );\n");
     REGB0 = TAG_Int(27);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_17 = fra.me.REG[4];
     register_static_object(&once_value_17);
   } else fra.me.REG[4] = once_value_17;
@@ -2458,7 +2458,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     if (!once_value_18) {
       fra.me.REG[0] = BOX_NativeString("return ");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_18 = fra.me.REG[0];
       register_static_object(&once_value_18);
     } else fra.me.REG[0] = once_value_18;
@@ -2473,7 +2473,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     if (!once_value_19) {
       fra.me.REG[3] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_19 = fra.me.REG[3];
       register_static_object(&once_value_19);
     } else fra.me.REG[3] = once_value_19;
@@ -2545,7 +2545,7 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
       if (!once_value_8) {
         fra.me.REG[0] = BOX_NativeString("NULL");
         REGB0 = TAG_Int(4);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_8 = fra.me.REG[0];
         register_static_object(&once_value_8);
       } else fra.me.REG[0] = once_value_8;
@@ -2727,18 +2727,18 @@ void native_interface___frontier___MMSignature___compile_frontier(val_t p0, val_
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   /* native_interface/frontier.nit:347 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -2752,30 +2752,30 @@ void native_interface___frontier___MMSignature___compile_frontier(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* native_interface/frontier.nit:347 */
       fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[4] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[4])(fra.me.REG[4]);
       fra.me.REG[4] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -3277,7 +3277,7 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -3287,7 +3287,7 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("._nitni.h");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -3310,7 +3310,7 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   if (!once_value_3) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_3 = fra.me.REG[5];
     register_static_object(&once_value_3);
   } else fra.me.REG[5] = once_value_3;
@@ -3320,7 +3320,7 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   if (!once_value_4) {
     fra.me.REG[1] = BOX_NativeString("._nitni.c");
     REGB0 = TAG_Int(9);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_4 = fra.me.REG[1];
     register_static_object(&once_value_4);
   } else fra.me.REG[1] = once_value_4;
@@ -3423,7 +3423,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("\n/* Type check for ");
       REGB0 = TAG_Int(19);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -3435,7 +3435,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(" with ");
       REGB0 = TAG_Int(6);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -3447,7 +3447,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString(" */\n");
       REGB0 = TAG_Int(4);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -3462,7 +3462,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -3474,7 +3474,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -3489,7 +3489,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("#ifndef ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -3500,7 +3500,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_7) {
       fra.me.REG[4] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_7 = fra.me.REG[4];
       register_static_object(&once_value_7);
     } else fra.me.REG[4] = once_value_7;
@@ -3515,7 +3515,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_8) {
       fra.me.REG[4] = BOX_NativeString("#define ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_8 = fra.me.REG[4];
       register_static_object(&once_value_8);
     } else fra.me.REG[4] = once_value_8;
@@ -3526,7 +3526,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_9) {
       fra.me.REG[4] = BOX_NativeString(" ");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_9 = fra.me.REG[4];
       register_static_object(&once_value_9);
     } else fra.me.REG[4] = once_value_9;
@@ -3538,7 +3538,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_10) {
       fra.me.REG[4] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_10 = fra.me.REG[4];
       register_static_object(&once_value_10);
     } else fra.me.REG[4] = once_value_10;
@@ -3551,7 +3551,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     if (!once_value_11) {
       fra.me.REG[3] = BOX_NativeString("#endif\n");
       REGB0 = TAG_Int(7);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_11 = fra.me.REG[3];
       register_static_object(&once_value_11);
     } else fra.me.REG[3] = once_value_11;
@@ -3572,7 +3572,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString("\n/* Cast for ");
     REGB0 = TAG_Int(13);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -3584,7 +3584,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_13) {
     fra.me.REG[4] = BOX_NativeString(" to ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_13 = fra.me.REG[4];
     register_static_object(&once_value_13);
   } else fra.me.REG[4] = once_value_13;
@@ -3596,7 +3596,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_14) {
     fra.me.REG[4] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_14 = fra.me.REG[4];
     register_static_object(&once_value_14);
   } else fra.me.REG[4] = once_value_14;
@@ -3611,7 +3611,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_15) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_15 = fra.me.REG[4];
     register_static_object(&once_value_15);
   } else fra.me.REG[4] = once_value_15;
@@ -3623,7 +3623,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_16) {
     fra.me.REG[4] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_16 = fra.me.REG[4];
     register_static_object(&once_value_16);
   } else fra.me.REG[4] = once_value_16;
@@ -3638,7 +3638,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_17) {
     fra.me.REG[4] = BOX_NativeString("#ifndef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_17 = fra.me.REG[4];
     register_static_object(&once_value_17);
   } else fra.me.REG[4] = once_value_17;
@@ -3649,7 +3649,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_18) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_18 = fra.me.REG[4];
     register_static_object(&once_value_18);
   } else fra.me.REG[4] = once_value_18;
@@ -3664,7 +3664,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_19) {
     fra.me.REG[4] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_19 = fra.me.REG[4];
     register_static_object(&once_value_19);
   } else fra.me.REG[4] = once_value_19;
@@ -3675,7 +3675,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_20) {
     fra.me.REG[4] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_20 = fra.me.REG[4];
     register_static_object(&once_value_20);
   } else fra.me.REG[4] = once_value_20;
@@ -3687,7 +3687,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_21) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_21 = fra.me.REG[4];
     register_static_object(&once_value_21);
   } else fra.me.REG[4] = once_value_21;
@@ -3700,7 +3700,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   if (!once_value_22) {
     fra.me.REG[2] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_22 = fra.me.REG[2];
     register_static_object(&once_value_22);
   } else fra.me.REG[2] = once_value_22;
@@ -3755,7 +3755,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("out");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3764,7 +3764,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("temp");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -3776,7 +3776,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[6] = BOX_NativeString("val_t ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
   } else fra.me.REG[6] = once_value_3;
@@ -3786,7 +3786,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_4) {
     fra.me.REG[6] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_4 = fra.me.REG[6];
     register_static_object(&once_value_4);
   } else fra.me.REG[6] = once_value_4;
@@ -3805,7 +3805,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_5) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_5 = fra.me.REG[6];
     register_static_object(&once_value_5);
   } else fra.me.REG[6] = once_value_5;
@@ -3818,7 +3818,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_6) {
     fra.me.REG[7] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_6 = fra.me.REG[7];
     register_static_object(&once_value_6);
   } else fra.me.REG[7] = once_value_6;
@@ -3849,7 +3849,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_7) {
     fra.me.REG[7] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+    fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
     once_value_7 = fra.me.REG[7];
     register_static_object(&once_value_7);
   } else fra.me.REG[7] = once_value_7;
@@ -3861,7 +3861,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_8) {
     fra.me.REG[3] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_8 = fra.me.REG[3];
     register_static_object(&once_value_8);
   } else fra.me.REG[3] = once_value_8;
@@ -3876,7 +3876,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_9) {
     fra.me.REG[3] = BOX_NativeString("return ");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_9 = fra.me.REG[3];
     register_static_object(&once_value_9);
   } else fra.me.REG[3] = once_value_9;
@@ -3886,7 +3886,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
@@ -3940,7 +3940,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("temp");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3952,7 +3952,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[5] = BOX_NativeString("val_t ");
     REGB0 = TAG_Int(6);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
   } else fra.me.REG[5] = once_value_2;
@@ -3962,7 +3962,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[5] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_3 = fra.me.REG[5];
     register_static_object(&once_value_3);
   } else fra.me.REG[5] = once_value_3;
@@ -3977,7 +3977,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   if (!once_value_4) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_4 = fra.me.REG[5];
     register_static_object(&once_value_4);
   } else fra.me.REG[5] = once_value_4;
@@ -3990,7 +3990,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   if (!once_value_5) {
     fra.me.REG[6] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_5 = fra.me.REG[6];
     register_static_object(&once_value_5);
   } else fra.me.REG[6] = once_value_5;
@@ -4011,7 +4011,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
       if (!once_value_6) {
         fra.me.REG[6] = BOX_NativeString("if ( ! ISNULL(");
         REGB0 = TAG_Int(14);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
@@ -4021,7 +4021,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
       if (!once_value_7) {
         fra.me.REG[6] = BOX_NativeString(") ) return 0;\n");
         REGB0 = TAG_Int(14);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_7 = fra.me.REG[6];
         register_static_object(&once_value_7);
       } else fra.me.REG[6] = once_value_7;
@@ -4037,7 +4037,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
       if (!once_value_8) {
         fra.me.REG[6] = BOX_NativeString("if ( ISNULL(");
         REGB0 = TAG_Int(12);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_8 = fra.me.REG[6];
         register_static_object(&once_value_8);
       } else fra.me.REG[6] = once_value_8;
@@ -4047,7 +4047,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
       if (!once_value_9) {
         fra.me.REG[6] = BOX_NativeString(") ) return 0;\n");
         REGB0 = TAG_Int(14);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_9 = fra.me.REG[6];
         register_static_object(&once_value_9);
       } else fra.me.REG[6] = once_value_9;
@@ -4068,7 +4068,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
     if (!once_value_10) {
       fra.me.REG[6] = BOX_NativeString("if ( ! ");
       REGB0 = TAG_Int(7);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_10 = fra.me.REG[6];
       register_static_object(&once_value_10);
     } else fra.me.REG[6] = once_value_10;
@@ -4080,7 +4080,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
     if (!once_value_11) {
       fra.me.REG[2] = BOX_NativeString(" ) return 0;\n");
       REGB0 = TAG_Int(13);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_11 = fra.me.REG[2];
       register_static_object(&once_value_11);
     } else fra.me.REG[2] = once_value_11;
@@ -4094,7 +4094,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   if (!once_value_12) {
     fra.me.REG[3] = BOX_NativeString("return 1;\n");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_12 = fra.me.REG[3];
     register_static_object(&once_value_12);
   } else fra.me.REG[3] = once_value_12;
@@ -4141,7 +4141,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("if ( ISNULL(");
     REGB0 = TAG_Int(12);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -4151,7 +4151,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(") ){");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -4166,7 +4166,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\tfprintf( stderr, \"Casting from ");
     REGB0 = TAG_Int(32);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -4178,7 +4178,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(" to ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -4190,7 +4190,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(" failed because value is null.\" );\n");
     REGB0 = TAG_Int(35);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -4203,7 +4203,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("\tabort();\n");
     REGB0 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -4214,7 +4214,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -4308,7 +4308,7 @@ val_t native_interface___frontier___MMImportedCast___hash(val_t p0){
   REGB0 = CALL_standard___hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* native_interface/frontier.nit:515 */
   goto label1;
@@ -4351,7 +4351,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("if ( ! ");
     REGB0 = TAG_Int(7);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -4362,7 +4362,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" ){\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -4377,7 +4377,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\tfprintf( stderr, \"Casting to ");
     REGB0 = TAG_Int(30);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -4388,7 +4388,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(" failed because value is not a ");
     REGB0 = TAG_Int(31);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -4399,7 +4399,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(".\" );\n");
     REGB0 = TAG_Int(6);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -4412,7 +4412,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("\tabort();\n");
     REGB0 = TAG_Int(10);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_6 = fra.me.REG[4];
     register_static_object(&once_value_6);
   } else fra.me.REG[4] = once_value_6;
@@ -4423,7 +4423,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("}\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -4463,7 +4463,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("( ISOBJ( ");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -4473,7 +4473,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(" ) ? ISNULL( ");
     REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -4483,7 +4483,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(" ) || OBJISA( ");
     REGB0 = TAG_Int(14);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -4493,7 +4493,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -4505,7 +4505,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString(" ): VALISA( ");
     REGB0 = TAG_Int(12);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -4515,7 +4515,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_6) {
     fra.me.REG[1] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_6 = fra.me.REG[1];
     register_static_object(&once_value_6);
   } else fra.me.REG[1] = once_value_6;
@@ -4527,7 +4527,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   if (!once_value_7) {
     fra.me.REG[0] = BOX_NativeString(" ) )");
     REGB0 = TAG_Int(4);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_7 = fra.me.REG[0];
     register_static_object(&once_value_7);
   } else fra.me.REG[0] = once_value_7;
@@ -4628,7 +4628,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -4640,7 +4640,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("_TYPE");
       REGB0 = TAG_Int(5);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -4654,7 +4654,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_3) {
       fra.me.REG[6] = BOX_NativeString("#ifndef ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_3 = fra.me.REG[6];
       register_static_object(&once_value_3);
     } else fra.me.REG[6] = once_value_3;
@@ -4664,7 +4664,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_4) {
       fra.me.REG[6] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_4 = fra.me.REG[6];
       register_static_object(&once_value_4);
     } else fra.me.REG[6] = once_value_4;
@@ -4679,7 +4679,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_5) {
       fra.me.REG[6] = BOX_NativeString("#define ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_5 = fra.me.REG[6];
       register_static_object(&once_value_5);
     } else fra.me.REG[6] = once_value_5;
@@ -4689,7 +4689,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -4704,7 +4704,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("struct s_");
       REGB0 = TAG_Int(9);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_7 = fra.me.REG[3];
       register_static_object(&once_value_7);
     } else fra.me.REG[3] = once_value_7;
@@ -4714,7 +4714,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_8) {
       fra.me.REG[3] = BOX_NativeString("{\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_8 = fra.me.REG[3];
       register_static_object(&once_value_8);
     } else fra.me.REG[3] = once_value_8;
@@ -4727,7 +4727,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_9) {
       fra.me.REG[4] = BOX_NativeString("\t\tstruct nitni_ref ref; /* real ref struct, must be first */\n");
       REGB0 = TAG_Int(61);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_9 = fra.me.REG[4];
       register_static_object(&once_value_9);
     } else fra.me.REG[4] = once_value_9;
@@ -4738,7 +4738,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_10) {
       fra.me.REG[5] = BOX_NativeString("};\n");
       REGB0 = TAG_Int(3);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_10 = fra.me.REG[5];
       register_static_object(&once_value_10);
     } else fra.me.REG[5] = once_value_10;
@@ -4751,7 +4751,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_11) {
       fra.me.REG[3] = BOX_NativeString("typedef struct s_");
       REGB0 = TAG_Int(17);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_11 = fra.me.REG[3];
       register_static_object(&once_value_11);
     } else fra.me.REG[3] = once_value_11;
@@ -4761,7 +4761,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_12) {
       fra.me.REG[3] = BOX_NativeString(" *");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_12 = fra.me.REG[3];
       register_static_object(&once_value_12);
     } else fra.me.REG[3] = once_value_12;
@@ -4771,7 +4771,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_13) {
       fra.me.REG[3] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_13 = fra.me.REG[3];
       register_static_object(&once_value_13);
     } else fra.me.REG[3] = once_value_13;
@@ -4792,7 +4792,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_14) {
         fra.me.REG[6] = BOX_NativeString("#ifndef ");
         REGB0 = TAG_Int(8);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_14 = fra.me.REG[6];
         register_static_object(&once_value_14);
       } else fra.me.REG[6] = once_value_14;
@@ -4803,7 +4803,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_15) {
         fra.me.REG[6] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_15 = fra.me.REG[6];
         register_static_object(&once_value_15);
       } else fra.me.REG[6] = once_value_15;
@@ -4818,7 +4818,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_16) {
         fra.me.REG[6] = BOX_NativeString("#define ");
         REGB0 = TAG_Int(8);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_16 = fra.me.REG[6];
         register_static_object(&once_value_16);
       } else fra.me.REG[6] = once_value_16;
@@ -4829,7 +4829,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_17) {
         fra.me.REG[6] = BOX_NativeString(" ");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_17 = fra.me.REG[6];
         register_static_object(&once_value_17);
       } else fra.me.REG[6] = once_value_17;
@@ -4839,7 +4839,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_18) {
         fra.me.REG[6] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_18 = fra.me.REG[6];
         register_static_object(&once_value_18);
       } else fra.me.REG[6] = once_value_18;
@@ -4852,7 +4852,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_19) {
         fra.me.REG[3] = BOX_NativeString("#endif\n");
         REGB0 = TAG_Int(7);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_19 = fra.me.REG[3];
         register_static_object(&once_value_19);
       } else fra.me.REG[3] = once_value_19;
@@ -4865,7 +4865,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_20) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_20 = fra.me.REG[6];
         register_static_object(&once_value_20);
       } else fra.me.REG[6] = once_value_20;
@@ -4875,7 +4875,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_21) {
         fra.me.REG[6] = BOX_NativeString(" ");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_21 = fra.me.REG[6];
         register_static_object(&once_value_21);
       } else fra.me.REG[6] = once_value_21;
@@ -4885,7 +4885,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_22) {
         fra.me.REG[6] = BOX_NativeString("();\n");
         REGB0 = TAG_Int(4);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_22 = fra.me.REG[6];
         register_static_object(&once_value_22);
       } else fra.me.REG[6] = once_value_22;
@@ -4899,7 +4899,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_23) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_23 = fra.me.REG[3];
         register_static_object(&once_value_23);
       } else fra.me.REG[3] = once_value_23;
@@ -4909,7 +4909,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_24) {
         fra.me.REG[2] = BOX_NativeString(" ");
         REGB0 = TAG_Int(1);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_24 = fra.me.REG[2];
         register_static_object(&once_value_24);
       } else fra.me.REG[2] = once_value_24;
@@ -4919,7 +4919,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_25) {
         fra.me.REG[4] = BOX_NativeString("()");
         REGB0 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_25 = fra.me.REG[4];
         register_static_object(&once_value_25);
       } else fra.me.REG[4] = once_value_25;
@@ -4931,7 +4931,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_26) {
         fra.me.REG[4] = BOX_NativeString("n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_26 = fra.me.REG[4];
         register_static_object(&once_value_26);
       } else fra.me.REG[4] = once_value_26;
@@ -4943,7 +4943,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       if (!once_value_27) {
         fra.me.REG[2] = BOX_NativeString("return n;\n");
         REGB0 = TAG_Int(10);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_27 = fra.me.REG[2];
         register_static_object(&once_value_27);
       } else fra.me.REG[2] = once_value_27;
@@ -4960,7 +4960,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_28) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_28 = fra.me.REG[2];
       register_static_object(&once_value_28);
     } else fra.me.REG[2] = once_value_28;
@@ -4972,7 +4972,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_29) {
       fra.me.REG[2] = BOX_NativeString("_incr_ref");
       REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_29 = fra.me.REG[2];
       register_static_object(&once_value_29);
     } else fra.me.REG[2] = once_value_29;
@@ -4986,7 +4986,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_30) {
       fra.me.REG[3] = BOX_NativeString("#define ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_30 = fra.me.REG[3];
       register_static_object(&once_value_30);
     } else fra.me.REG[3] = once_value_30;
@@ -4996,7 +4996,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_31) {
       fra.me.REG[5] = BOX_NativeString("( x ) nitni_global_ref_incr( (struct nitni_ref*)(x) )\n");
       REGB0 = TAG_Int(54);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_31 = fra.me.REG[5];
       register_static_object(&once_value_31);
     } else fra.me.REG[5] = once_value_31;
@@ -5010,7 +5010,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_32) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_32 = fra.me.REG[2];
       register_static_object(&once_value_32);
     } else fra.me.REG[2] = once_value_32;
@@ -5022,7 +5022,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_33) {
       fra.me.REG[0] = BOX_NativeString("_decr_ref");
       REGB0 = TAG_Int(9);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_33 = fra.me.REG[0];
       register_static_object(&once_value_33);
     } else fra.me.REG[0] = once_value_33;
@@ -5036,7 +5036,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_34) {
       fra.me.REG[5] = BOX_NativeString("#define ");
       REGB0 = TAG_Int(8);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_34 = fra.me.REG[5];
       register_static_object(&once_value_34);
     } else fra.me.REG[5] = once_value_34;
@@ -5046,7 +5046,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_35) {
       fra.me.REG[4] = BOX_NativeString("( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )\n");
       REGB0 = TAG_Int(54);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_35 = fra.me.REG[4];
       register_static_object(&once_value_35);
     } else fra.me.REG[4] = once_value_35;
@@ -5059,7 +5059,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     if (!once_value_36) {
       fra.me.REG[2] = BOX_NativeString("#endif\n");
       REGB0 = TAG_Int(7);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_36 = fra.me.REG[2];
       register_static_object(&once_value_36);
     } else fra.me.REG[2] = once_value_36;
@@ -5114,7 +5114,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
   if (!once_value_1) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
     once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
   } else fra.me.REG[6] = once_value_1;
@@ -5124,7 +5124,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
   if (!once_value_2) {
     fra.me.REG[6] = BOX_NativeString(" ");
     REGB1 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
     once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
   } else fra.me.REG[6] = once_value_2;
@@ -5134,7 +5134,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
   if (!once_value_3) {
     fra.me.REG[6] = BOX_NativeString(";\n");
     REGB1 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
     once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
   } else fra.me.REG[6] = once_value_3;
@@ -5152,7 +5152,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -5162,7 +5162,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(" = malloc( sizeof( struct s_");
       REGB1 = TAG_Int(28);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -5172,7 +5172,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString(" ) );\n");
       REGB1 = TAG_Int(6);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -5187,7 +5187,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_7 = fra.me.REG[3];
       register_static_object(&once_value_7);
     } else fra.me.REG[3] = once_value_7;
@@ -5197,7 +5197,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_8) {
       fra.me.REG[3] = BOX_NativeString("->ref.val = NIT_NULL;\n");
       REGB1 = TAG_Int(22);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_8 = fra.me.REG[3];
       register_static_object(&once_value_8);
     } else fra.me.REG[3] = once_value_8;
@@ -5212,7 +5212,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_9) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_9 = fra.me.REG[3];
       register_static_object(&once_value_9);
     } else fra.me.REG[3] = once_value_9;
@@ -5222,7 +5222,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
     if (!once_value_10) {
       fra.me.REG[3] = BOX_NativeString("->ref.count = 0;\n");
       REGB1 = TAG_Int(17);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_10 = fra.me.REG[3];
       register_static_object(&once_value_10);
     } else fra.me.REG[3] = once_value_10;
@@ -5239,7 +5239,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
       if (!once_value_11) {
         fra.me.REG[0] = BOX_NativeString("nitni_local_ref_add( (struct nitni_ref *)");
         REGB0 = TAG_Int(41);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_11 = fra.me.REG[0];
         register_static_object(&once_value_11);
       } else fra.me.REG[0] = once_value_11;
@@ -5249,7 +5249,7 @@ void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_
       if (!once_value_12) {
         fra.me.REG[1] = BOX_NativeString(" );\n");
         REGB0 = TAG_Int(4);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_12 = fra.me.REG[1];
         register_static_object(&once_value_12);
       } else fra.me.REG[1] = once_value_12;
@@ -5299,7 +5299,7 @@ void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val
   if (!once_value_1) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
   } else fra.me.REG[6] = once_value_1;
@@ -5309,7 +5309,7 @@ void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val
   if (!once_value_2) {
     fra.me.REG[6] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
   } else fra.me.REG[6] = once_value_2;
@@ -5319,7 +5319,7 @@ void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val
   if (!once_value_3) {
     fra.me.REG[6] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
   } else fra.me.REG[6] = once_value_3;
@@ -5337,7 +5337,7 @@ void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_4 = fra.me.REG[5];
       register_static_object(&once_value_4);
     } else fra.me.REG[5] = once_value_4;
@@ -5347,7 +5347,7 @@ void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val
     if (!once_value_5) {
       fra.me.REG[1] = BOX_NativeString(" = (");
       REGB0 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_5 = fra.me.REG[1];
       register_static_object(&once_value_5);
     } else fra.me.REG[1] = once_value_5;
@@ -5357,7 +5357,7 @@ void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString(")NULL;\n");
       REGB0 = TAG_Int(7);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -5427,7 +5427,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("/* friendly for ");
     REGB0 = TAG_Int(16);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -5439,7 +5439,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -5454,7 +5454,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_3) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
   } else fra.me.REG[4] = once_value_3;
@@ -5468,7 +5468,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_4) {
     fra.me.REG[6] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_4 = fra.me.REG[6];
     register_static_object(&once_value_4);
   } else fra.me.REG[6] = once_value_4;
@@ -5483,7 +5483,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_5) {
     fra.me.REG[6] = BOX_NativeString("#ifndef ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_5 = fra.me.REG[6];
     register_static_object(&once_value_5);
   } else fra.me.REG[6] = once_value_5;
@@ -5496,7 +5496,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_6) {
     fra.me.REG[5] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_6 = fra.me.REG[5];
     register_static_object(&once_value_6);
   } else fra.me.REG[5] = once_value_6;
@@ -5511,7 +5511,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_7) {
     fra.me.REG[5] = BOX_NativeString("#define ");
     REGB0 = TAG_Int(8);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_7 = fra.me.REG[5];
     register_static_object(&once_value_7);
   } else fra.me.REG[5] = once_value_7;
@@ -5524,7 +5524,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_8) {
     fra.me.REG[6] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
     once_value_8 = fra.me.REG[6];
     register_static_object(&once_value_8);
   } else fra.me.REG[6] = once_value_8;
@@ -5538,7 +5538,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_9) {
     fra.me.REG[4] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_9 = fra.me.REG[4];
     register_static_object(&once_value_9);
   } else fra.me.REG[4] = once_value_9;
@@ -5551,7 +5551,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_10) {
     fra.me.REG[3] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_10 = fra.me.REG[3];
     register_static_object(&once_value_10);
   } else fra.me.REG[3] = once_value_10;
@@ -5564,7 +5564,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_11) {
     fra.me.REG[4] = BOX_NativeString("/* friendly for ");
     REGB0 = TAG_Int(16);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_11 = fra.me.REG[4];
     register_static_object(&once_value_11);
   } else fra.me.REG[4] = once_value_11;
@@ -5576,7 +5576,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -5605,20 +5605,20 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   fra.me.REG[2] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -5632,27 +5632,27 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* native_interface/frontier.nit:634 */
       CALL_native_interface___frontier___NiVariable___prepare_for_nit(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label13;
     }
   }
@@ -5716,7 +5716,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_14) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_14 = fra.me.REG[7];
       register_static_object(&once_value_14);
     } else fra.me.REG[7] = once_value_14;
@@ -5731,7 +5731,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_15) {
       fra.me.REG[7] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_15 = fra.me.REG[7];
       register_static_object(&once_value_15);
     } else fra.me.REG[7] = once_value_15;
@@ -5750,7 +5750,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_16) {
       fra.me.REG[7] = BOX_NativeString("NEW_");
       REGB0 = TAG_Int(4);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_16 = fra.me.REG[7];
       register_static_object(&once_value_16);
     } else fra.me.REG[7] = once_value_16;
@@ -5762,7 +5762,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_17) {
       fra.me.REG[7] = BOX_NativeString("_");
       REGB0 = TAG_Int(1);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_17 = fra.me.REG[7];
       register_static_object(&once_value_17);
     } else fra.me.REG[7] = once_value_17;
@@ -5776,7 +5776,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_18) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_18 = fra.me.REG[7];
       register_static_object(&once_value_18);
     } else fra.me.REG[7] = once_value_18;
@@ -5791,7 +5791,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_19) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_19 = fra.me.REG[7];
       register_static_object(&once_value_19);
     } else fra.me.REG[7] = once_value_19;
@@ -5804,7 +5804,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_20) {
       fra.me.REG[7] = BOX_NativeString("( ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_20 = fra.me.REG[7];
       register_static_object(&once_value_20);
     } else fra.me.REG[7] = once_value_20;
@@ -5817,7 +5817,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_21) {
       fra.me.REG[0] = BOX_NativeString(" )");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_21 = fra.me.REG[0];
       register_static_object(&once_value_21);
     } else fra.me.REG[0] = once_value_21;
@@ -5828,18 +5828,18 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   }
   /* native_interface/frontier.nit:654 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -5853,28 +5853,28 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
       /* native_interface/frontier.nit:655 */
       fra.me.REG[7] = CALL_native_interface___frontier___NiVariable___as_arg_to_nit(fra.me.REG[7])(fra.me.REG[7]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label22;
     }
   }
@@ -5885,7 +5885,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_23) {
     fra.me.REG[3] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_23 = fra.me.REG[3];
     register_static_object(&once_value_23);
   } else fra.me.REG[3] = once_value_23;
@@ -5894,7 +5894,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_24) {
     fra.me.REG[3] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_24 = fra.me.REG[3];
     register_static_object(&once_value_24);
   } else fra.me.REG[3] = once_value_24;
@@ -5904,7 +5904,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   if (!once_value_25) {
     fra.me.REG[3] = BOX_NativeString(" );\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_25 = fra.me.REG[3];
     register_static_object(&once_value_25);
   } else fra.me.REG[3] = once_value_25;
@@ -5938,7 +5938,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_26) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_26 = fra.me.REG[3];
       register_static_object(&once_value_26);
     } else fra.me.REG[3] = once_value_26;
@@ -5964,7 +5964,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_27) {
       fra.me.REG[7] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_27 = fra.me.REG[7];
       register_static_object(&once_value_27);
     } else fra.me.REG[7] = once_value_27;
@@ -5979,7 +5979,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_28) {
       fra.me.REG[7] = BOX_NativeString("return ");
       REGB0 = TAG_Int(7);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_28 = fra.me.REG[7];
       register_static_object(&once_value_28);
     } else fra.me.REG[7] = once_value_28;
@@ -5994,7 +5994,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     if (!once_value_29) {
       fra.me.REG[5] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_29 = fra.me.REG[5];
       register_static_object(&once_value_29);
     } else fra.me.REG[5] = once_value_29;
@@ -6034,7 +6034,7 @@ val_t native_interface___frontier___MMExplicitImport___hash(val_t p0){
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* native_interface/frontier.nit:672 */
   goto label1;
index fa444ef..51fd894 100644 (file)
@@ -32,7 +32,7 @@ val_t native_interface___ni_metamodel___MMType___friendly_extern_name(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("nullable_");
       REGB0 = TAG_Int(9);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -45,7 +45,7 @@ val_t native_interface___ni_metamodel___MMType___friendly_extern_name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -119,7 +119,7 @@ val_t native_interface___ni_metamodel___MMType___mangled_name(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("nullable_");
       REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -132,7 +132,7 @@ val_t native_interface___ni_metamodel___MMType___mangled_name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -218,7 +218,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -228,7 +228,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
     if (!once_value_3) {
       fra.me.REG[1] = BOX_NativeString("->ref.val");
       REGB0 = TAG_Int(9);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_3 = fra.me.REG[1];
       register_static_object(&once_value_3);
     } else fra.me.REG[1] = once_value_3;
@@ -312,7 +312,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -322,7 +322,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -333,7 +333,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -348,7 +348,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     if (!once_value_5) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_5 = fra.me.REG[5];
       register_static_object(&once_value_5);
     } else fra.me.REG[5] = once_value_5;
@@ -358,7 +358,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     if (!once_value_6) {
       fra.me.REG[1] = BOX_NativeString("->ref.val = ");
       REGB0 = TAG_Int(12);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_6 = fra.me.REG[1];
       register_static_object(&once_value_6);
     } else fra.me.REG[1] = once_value_6;
@@ -369,7 +369,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     if (!once_value_7) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_7 = fra.me.REG[2];
       register_static_object(&once_value_7);
     } else fra.me.REG[2] = once_value_7;
@@ -450,7 +450,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -460,7 +460,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -471,7 +471,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -486,7 +486,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -496,7 +496,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     if (!once_value_6) {
       fra.me.REG[1] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_6 = fra.me.REG[1];
       register_static_object(&once_value_6);
     } else fra.me.REG[1] = once_value_6;
@@ -506,7 +506,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     if (!once_value_7) {
       fra.me.REG[2] = BOX_NativeString("->ref.val");
       REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_7 = fra.me.REG[2];
       register_static_object(&once_value_7);
     } else fra.me.REG[2] = once_value_7;
@@ -586,7 +586,7 @@ val_t native_interface___ni_metamodel___MMType___friendly_null_getter(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("null_");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -598,7 +598,7 @@ val_t native_interface___ni_metamodel___MMType___friendly_null_getter(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -637,7 +637,7 @@ val_t native_interface___ni_metamodel___MMType___local_friendly_null_getter_from
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -648,7 +648,7 @@ val_t native_interface___ni_metamodel___MMType___local_friendly_null_getter_from
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("_");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -659,7 +659,7 @@ val_t native_interface___ni_metamodel___MMType___local_friendly_null_getter_from
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -700,7 +700,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -711,7 +711,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("_");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -722,7 +722,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -758,7 +758,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(val_t p0
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -770,7 +770,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(val_t p0
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("___super");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -809,7 +809,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_super_name_fro
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -820,7 +820,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_super_name_fro
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("_");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -831,7 +831,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_super_name_fro
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -883,7 +883,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -895,7 +895,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString(" recv");
       REGB0 = TAG_Int(5);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -911,18 +911,18 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
     nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 126);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -936,16 +936,16 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* native_interface/ni_metamodel.nit:127 */
       REGB1 = TAG_Int(5);
@@ -953,7 +953,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -965,7 +965,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
       if (!once_value_4) {
         fra.me.REG[5] = BOX_NativeString(" ");
         REGB1 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_4 = fra.me.REG[5];
         register_static_object(&once_value_4);
       } else fra.me.REG[5] = once_value_4;
@@ -977,7 +977,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
       if (!once_value_5) {
         fra.me.REG[1] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
         once_value_5 = fra.me.REG[1];
         register_static_object(&once_value_5);
       } else fra.me.REG[1] = once_value_5;
@@ -985,14 +985,14 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -1032,7 +1032,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1043,7 +1043,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -1053,7 +1053,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -1126,7 +1126,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
@@ -1147,7 +1147,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString(" ");
       REGB0 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -1166,7 +1166,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -1178,7 +1178,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
       if (!once_value_4) {
         fra.me.REG[5] = BOX_NativeString(" ");
         REGB0 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_4 = fra.me.REG[5];
         register_static_object(&once_value_4);
       } else fra.me.REG[5] = once_value_4;
@@ -1191,7 +1191,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
       if (!once_value_5) {
         fra.me.REG[4] = BOX_NativeString("void ");
         REGB0 = TAG_Int(5);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_5 = fra.me.REG[4];
         register_static_object(&once_value_5);
       } else fra.me.REG[4] = once_value_5;
@@ -1228,7 +1228,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   if (!once_value_6) {
     fra.me.REG[1] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_6 = fra.me.REG[1];
     register_static_object(&once_value_6);
   } else fra.me.REG[1] = once_value_6;
@@ -1237,7 +1237,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   if (!once_value_7) {
     fra.me.REG[1] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_7 = fra.me.REG[1];
     register_static_object(&once_value_7);
   } else fra.me.REG[1] = once_value_7;
@@ -1247,7 +1247,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   if (!once_value_8) {
     fra.me.REG[1] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_8 = fra.me.REG[1];
     register_static_object(&once_value_8);
   } else fra.me.REG[1] = once_value_8;
@@ -1330,7 +1330,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_csignature(val
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("___super");
     REGB0 = TAG_Int(8);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -1388,7 +1388,7 @@ val_t native_interface___ni_metamodel___MMMethod___impl_csignature(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("___impl");
     REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -1434,7 +1434,7 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("val_t recv");
       REGB0 = TAG_Int(10);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -1448,18 +1448,18 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
     nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 198);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1473,16 +1473,16 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* native_interface/ni_metamodel.nit:198 */
       REGB1 = TAG_Int(3);
@@ -1490,7 +1490,7 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("val_t ");
         REGB1 = TAG_Int(6);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -1502,7 +1502,7 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
       if (!once_value_3) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_3 = fra.me.REG[3];
         register_static_object(&once_value_3);
       } else fra.me.REG[3] = once_value_3;
@@ -1510,14 +1510,14 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label4;
     }
   }
@@ -1590,7 +1590,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("val_t ");
       REGB0 = TAG_Int(6);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -1601,7 +1601,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("void ");
       REGB0 = TAG_Int(5);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -1618,7 +1618,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("NEW_");
       REGB0 = TAG_Int(4);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -1630,7 +1630,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString("_");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -1641,7 +1641,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_5) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
     } else fra.me.REG[3] = once_value_5;
@@ -1656,7 +1656,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -1668,7 +1668,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("___out");
       REGB0 = TAG_Int(6);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_7 = fra.me.REG[3];
       register_static_object(&once_value_7);
     } else fra.me.REG[3] = once_value_7;
@@ -1683,7 +1683,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   if (!once_value_8) {
     fra.me.REG[3] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_8 = fra.me.REG[3];
     register_static_object(&once_value_8);
   } else fra.me.REG[3] = once_value_8;
@@ -1693,7 +1693,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   if (!once_value_9) {
     fra.me.REG[3] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_9 = fra.me.REG[3];
     register_static_object(&once_value_9);
   } else fra.me.REG[3] = once_value_9;
@@ -1703,7 +1703,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   if (!once_value_10) {
     fra.me.REG[3] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_10 = fra.me.REG[3];
     register_static_object(&once_value_10);
   } else fra.me.REG[3] = once_value_10;
@@ -1798,7 +1798,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
       if (!once_value_1) {
         fra.me.REG[2] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_1 = fra.me.REG[2];
         register_static_object(&once_value_1);
       } else fra.me.REG[2] = once_value_1;
@@ -1810,7 +1810,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
       if (!once_value_2) {
         fra.me.REG[2] = BOX_NativeString("_as_nullable");
         REGB0 = TAG_Int(12);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -1828,7 +1828,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
         if (!once_value_4) {
           fra.me.REG[3] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_4 = fra.me.REG[3];
           register_static_object(&once_value_4);
         } else fra.me.REG[3] = once_value_4;
@@ -1840,7 +1840,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
         if (!once_value_5) {
           fra.me.REG[3] = BOX_NativeString("_as_not_null");
           REGB0 = TAG_Int(12);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_5 = fra.me.REG[3];
           register_static_object(&once_value_5);
         } else fra.me.REG[3] = once_value_5;
@@ -1861,7 +1861,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
     if (!once_value_6) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
     } else fra.me.REG[3] = once_value_6;
@@ -1873,7 +1873,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("_as_");
       REGB0 = TAG_Int(4);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_7 = fra.me.REG[3];
       register_static_object(&once_value_7);
     } else fra.me.REG[3] = once_value_7;
@@ -1885,7 +1885,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
     if (!once_value_8) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_8 = fra.me.REG[0];
       register_static_object(&once_value_8);
     } else fra.me.REG[0] = once_value_8;
@@ -1926,7 +1926,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_cname(val_t p0
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -1937,7 +1937,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_cname(val_t p0
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("_");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -1948,7 +1948,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_cname(val_t p0
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -1989,7 +1989,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2001,7 +2001,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -2012,7 +2012,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -2024,7 +2024,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   if (!once_value_4) {
     fra.me.REG[1] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_4 = fra.me.REG[1];
     register_static_object(&once_value_4);
   } else fra.me.REG[1] = once_value_4;
@@ -2035,7 +2035,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -2074,7 +2074,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2086,7 +2086,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2097,7 +2097,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -2109,7 +2109,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -2120,7 +2120,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   if (!once_value_5) {
     fra.me.REG[0] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
@@ -2172,7 +2172,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
         if (!once_value_1) {
           fra.me.REG[2] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_1 = fra.me.REG[2];
           register_static_object(&once_value_1);
         } else fra.me.REG[2] = once_value_1;
@@ -2184,7 +2184,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
         if (!once_value_2) {
           fra.me.REG[2] = BOX_NativeString("_is_null");
           REGB0 = TAG_Int(8);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2204,7 +2204,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -2216,7 +2216,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
     if (!once_value_5) {
       fra.me.REG[3] = BOX_NativeString("_is_a_");
       REGB0 = TAG_Int(6);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
     } else fra.me.REG[3] = once_value_5;
@@ -2228,7 +2228,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_6 = fra.me.REG[0];
       register_static_object(&once_value_6);
     } else fra.me.REG[0] = once_value_6;
@@ -2269,7 +2269,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(val_t
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2280,7 +2280,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(val_t
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("_");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -2291,7 +2291,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(val_t
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -2331,7 +2331,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(v
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("int ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -2342,7 +2342,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(v
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -2354,7 +2354,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(v
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -2365,7 +2365,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(v
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -2403,7 +2403,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignatur
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("int ");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2414,7 +2414,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignatur
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2426,7 +2426,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignatur
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -2437,7 +2437,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignatur
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(" )");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -2470,7 +2470,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___hash(val_t p0){
   REGB0 = CALL_standard___hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* native_interface/ni_metamodel.nit:297 */
   goto label1;
index 085345a..171de75 100644 (file)
@@ -160,7 +160,7 @@ val_t native_interface___ni_tools___FunctionCompiler___to_writer(val_t p0){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -171,7 +171,7 @@ val_t native_interface___ni_tools___FunctionCompiler___to_writer(val_t p0){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("\n{\n");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -189,7 +189,7 @@ val_t native_interface___ni_tools___FunctionCompiler___to_writer(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("}\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
index 9b6891b..93c8e0b 100644 (file)
@@ -17,9 +17,9 @@ 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.6-5-g36c7240_nc3");
-    REGB0 = TAG_Int(19);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = BOX_NativeString("v0.5-1396-gd55a2f1_nc3_dirty");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
index b79dbdb..57e559b 100755 (executable)
@@ -38,15 +38,17 @@ CLIBDIR="clib"
   standard___collection___array._sep.c\
   standard___collection___hash_collection._sep.c\
   standard___hash._sep.c\
-  time._nitni.c\
-  time_nit.c\
-  standard___time._sep.c\
   file._nitni.c\
   file_nit.c\
+  standard___file._ffi.c\
   standard___file._sep.c\
   stream._nitni.c\
   stream_nit.c\
   standard___stream._sep.c\
+  time._nitni.c\
+  time_nit.c\
+  standard___time._ffi.c\
+  standard___time._sep.c\
   standard___string_search._sep.c\
   exec._nitni.c\
   exec_nit.c\
index 2ddb42b..e1ce401 100644 (file)
@@ -242,7 +242,7 @@ void nitc___NitCompiler___init(val_t p0, int* init_table){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("nitc");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -373,7 +373,7 @@ void nitc___NitCompiler___process_options(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -403,7 +403,7 @@ void nitc___NitCompiler___process_options(val_t p0){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("NIT_COMPDIR");
       REGB0 = TAG_Int(11);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -435,7 +435,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_3) {
         fra.me.REG[2] = BOX_NativeString(".nit_compile");
         REGB0 = TAG_Int(12);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_3 = fra.me.REG[2];
         register_static_object(&once_value_3);
       } else fra.me.REG[2] = once_value_3;
@@ -479,7 +479,7 @@ void nitc___NitCompiler___process_options(val_t p0){
     if (!once_value_4) {
       fra.me.REG[0] = BOX_NativeString("NIT_DIR");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_4 = fra.me.REG[0];
       register_static_object(&once_value_4);
     } else fra.me.REG[0] = once_value_4;
@@ -494,7 +494,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_5) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_5 = fra.me.REG[3];
         register_static_object(&once_value_5);
       } else fra.me.REG[3] = once_value_5;
@@ -507,7 +507,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_6) {
         fra.me.REG[3] = BOX_NativeString("/../clib");
         REGB0 = TAG_Int(8);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_6 = fra.me.REG[3];
         register_static_object(&once_value_6);
       } else fra.me.REG[3] = once_value_6;
@@ -527,7 +527,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_7) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_7 = fra.me.REG[3];
         register_static_object(&once_value_7);
       } else fra.me.REG[3] = once_value_7;
@@ -537,7 +537,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_8) {
         fra.me.REG[3] = BOX_NativeString("/clib");
         REGB0 = TAG_Int(5);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_8 = fra.me.REG[3];
         register_static_object(&once_value_8);
       } else fra.me.REG[3] = once_value_8;
@@ -570,7 +570,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_9) {
         fra.me.REG[0] = BOX_NativeString("Error: Cannot locate NIT C library directory. Uses --clibdir or envvar NIT_DIR.");
         REGB0 = TAG_Int(79);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_9 = fra.me.REG[0];
         register_static_object(&once_value_9);
       } else fra.me.REG[0] = once_value_9;
@@ -609,7 +609,7 @@ void nitc___NitCompiler___process_options(val_t p0){
     if (!once_value_10) {
       fra.me.REG[0] = BOX_NativeString("NIT_DIR");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_10 = fra.me.REG[0];
       register_static_object(&once_value_10);
     } else fra.me.REG[0] = once_value_10;
@@ -624,7 +624,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_11) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_11 = fra.me.REG[3];
         register_static_object(&once_value_11);
       } else fra.me.REG[3] = once_value_11;
@@ -637,7 +637,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_12) {
         fra.me.REG[3] = BOX_NativeString("/../bin");
         REGB0 = TAG_Int(7);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_12 = fra.me.REG[3];
         register_static_object(&once_value_12);
       } else fra.me.REG[3] = once_value_12;
@@ -657,7 +657,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_13) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_13 = fra.me.REG[3];
         register_static_object(&once_value_13);
       } else fra.me.REG[3] = once_value_13;
@@ -667,7 +667,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_14) {
         fra.me.REG[3] = BOX_NativeString("/bin");
         REGB0 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_14 = fra.me.REG[3];
         register_static_object(&once_value_14);
       } else fra.me.REG[3] = once_value_14;
@@ -700,7 +700,7 @@ void nitc___NitCompiler___process_options(val_t p0){
       if (!once_value_15) {
         fra.me.REG[0] = BOX_NativeString("Error: Cannot locate NIT tools directory. Uses --bindir or envvar NIT_DIR.");
         REGB0 = TAG_Int(74);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_15 = fra.me.REG[0];
         register_static_object(&once_value_15);
       } else fra.me.REG[0] = once_value_15;
@@ -740,18 +740,18 @@ void nitc___NitCompiler___perform_work(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -765,16 +765,16 @@ void nitc___NitCompiler___perform_work(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* nitc.nit:110 */
       fra.me.REG[3] = NEW_Program_program___Program___init(fra.me.REG[3], fra.me.REG[0]);
@@ -795,14 +795,14 @@ void nitc___NitCompiler___perform_work(val_t p0, val_t p1){
       CALL_compiling___table_computation___Program___do_table_computation(fra.me.REG[3])(fra.me.REG[3]);
       /* nitc.nit:116 */
       CALL_compiling___Program___compile_prog(fra.me.REG[3])(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
index 3c3dce9..7d8ae04 100644 (file)
@@ -27,9 +27,9 @@
 #include "standard___collection___array._sep.h"
 #include "standard___collection___hash_collection._sep.h"
 #include "standard___hash._sep.h"
-#include "standard___time._sep.h"
 #include "standard___file._sep.h"
 #include "standard___stream._sep.h"
+#include "standard___time._sep.h"
 #include "standard___string_search._sep.h"
 #include "standard___exec._sep.h"
 #include "standard___math._sep.h"
@@ -322,14 +322,10 @@ typedef void (*INIT_ATTRIBUTES__standard___string___String_t)(val_t p0);
 val_t NEW_standard___string___String(void);
 void CHECKNEW_standard___string___String(val_t p0);
 typedef void (*CHECKNEW_standard___string___String_t)(val_t p0);
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
-typedef val_t (*NEW_String_standard___string___String___with_native_t)(val_t p0, val_t p1);
-val_t NEW_String_standard___string___String___from_cstring(val_t p0);
-typedef val_t (*NEW_String_standard___string___String___from_cstring_t)(val_t p0);
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_String_standard___string___String___from_substring_t)(val_t p0, val_t p1, val_t p2);
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
-typedef val_t (*NEW_String_standard___string___String___copy_from_native_t)(val_t p0);
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_String_standard___string___String___with_infos_t)(val_t p0, val_t p1, val_t p2, val_t p3);
 void INIT_ATTRIBUTES__standard___string___Buffer(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___string___Buffer_t)(val_t p0);
 val_t NEW_standard___string___Buffer(void);
@@ -869,6 +865,13 @@ void CHECKNEW_icode___icode_tools___ICodeDupContext(val_t p0);
 typedef void (*CHECKNEW_icode___icode_tools___ICodeDupContext_t)(val_t p0);
 val_t NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(val_t p0);
 typedef val_t (*NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___parser_nodes___ANodes(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANodes_t)(val_t p0);
+val_t NEW_parser___parser_nodes___ANodes(void);
+void CHECKNEW_parser___parser_nodes___ANodes(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___ANodes_t)(val_t p0);
+val_t NEW_ANodes_parser___parser_nodes___ANodes___init(val_t p0);
+typedef val_t (*NEW_ANodes_parser___parser_nodes___ANodes___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___parser_nodes___TEol(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TEol_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TEol(void);
@@ -8607,8 +8610,8 @@ typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator_t)(val_t
 val_t NEW_syntax___mmbuilder___MethidAccumulator(void);
 void CHECKNEW_syntax___mmbuilder___MethidAccumulator(val_t p0);
 typedef void (*CHECKNEW_syntax___mmbuilder___MethidAccumulator_t)(val_t p0);
-val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init(void);
-typedef val_t (*NEW_MethidAccumulator_parser___parser_prod___Visitor___init_t)(void);
+val_t NEW_MethidAccumulator_parser___parser_nodes___Visitor___init(void);
+typedef val_t (*NEW_MethidAccumulator_parser___parser_nodes___Visitor___init_t)(void);
 void INIT_ATTRIBUTES__syntax___extern_inline___ExternCode(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___extern_inline___ExternCode_t)(val_t p0);
 val_t NEW_syntax___extern_inline___ExternCode(void);
@@ -9056,19 +9059,19 @@ const int SFT_syntax___icode_generation[27] = {
   3859 /* Id of A2IVisitor */,
   6 /* Color of A2IVisitor */,
   7 /* Group of ? */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   68 /* Group of ? */,
+  111 /* Group of ? */,
   100 /* Group of ? */,
-  94 /* Group of ? */,
-  85 /* Group of ? */,
-  104 /* Group of ? */,
-  104 /* Group of ? */,
-  82 /* Group of ? */,
-  12 /* Group of ? */,
   89 /* Group of ? */,
-  97 /* Group of ? */,
+  113 /* Group of ? */,
+  113 /* Group of ? */,
+  84 /* Group of ? */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  102 /* Group of ? */,
   8 /* Group of ? */,
-  77 /* Group of ? */,
+  79 /* Group of ? */,
 };
 const char LOCATE_icode[] = "icode/icode.nit";
 const char LOCATE_icode___icode_tools[] = "icode/icode_tools.nit";
@@ -9405,7 +9408,7 @@ const char LOCATE_standard[] = "../lib/standard/standard.nit";
 const char LOCATE_standard___environ[] = "../lib/standard/environ.nit";
 const int SFT_standard___environ[2] = {
   127 /* Group of ? */,
-  50 /* Group of ? */,
+  52 /* Group of ? */,
 };
 const char LOCATE_standard___string[] = "../lib/standard/string.nit";
 const int SFT_standard___string[26] = {
@@ -9417,24 +9420,24 @@ const int SFT_standard___string[26] = {
   9 /* Color of String */,
   4 /* Group of ? */,
   129 /* Group of ? */,
-  4823 /* Id of Buffer */,
+  4827 /* Id of Buffer */,
   5 /* Color of Buffer */,
   4 /* Group of ? */,
   126 /* Group of ? */,
-  37 /* Group of ? */,
+  26 /* Group of ? */,
   74 /* Group of ? */,
   50 /* Group of ? */,
   74 /* Group of ? */,
   68 /* Group of ? */,
-  61 /* Group of ? */,
-  -5 /* Id of NativeString */,
-  4 /* Color of NativeString */,
-  52 /* Group of ? */,
+  62 /* Group of ? */,
+  -21 /* Id of NativeString */,
+  5 /* Color of NativeString */,
+  54 /* Group of ? */,
   35 /* Id of StringCapable */,
   4 /* Color of StringCapable */,
   50 /* Group of ? */,
   2 /* Group of ? */,
-  55 /* Group of ? */,
+  51 /* Group of ? */,
 };
 const char LOCATE_standard___collection[] = "../lib/standard/collection/collection.nit";
 const int SFT_standard___collection[1] = {
@@ -9462,11 +9465,11 @@ const int SFT_standard___collection___abstract_collection[63] = {
   187 /* Id of Iterator */,
   4 /* Color of Iterator */,
   51 /* Group of ? */,
-  3267 /* Id of Container */,
+  3271 /* Id of Container */,
   8 /* Color of Container */,
   2 /* Group of ? */,
   80 /* Group of ? */,
-  3271 /* Id of ContainerIterator */,
+  3267 /* Id of ContainerIterator */,
   5 /* Color of ContainerIterator */,
   2 /* Group of ? */,
   55 /* Group of ? */,
@@ -9482,9 +9485,9 @@ const int SFT_standard___collection___abstract_collection[63] = {
   135 /* Id of MapRead */,
   4 /* Color of MapRead */,
   50 /* Group of ? */,
-  3079 /* Id of Map */,
+  3075 /* Id of Map */,
   6 /* Color of Map */,
-  62 /* Group of ? */,
+  63 /* Group of ? */,
   139 /* Id of MapIterator */,
   4 /* Color of MapIterator */,
   50 /* Group of ? */,
@@ -9492,7 +9495,7 @@ const int SFT_standard___collection___abstract_collection[63] = {
   5 /* Color of MapKeysIterator */,
   2 /* Group of ? */,
   55 /* Group of ? */,
-  3075 /* Id of MapValuesIterator */,
+  3079 /* Id of MapValuesIterator */,
   5 /* Color of MapValuesIterator */,
   2 /* Group of ? */,
   55 /* Group of ? */,
@@ -9507,7 +9510,7 @@ const int SFT_standard___collection___abstract_collection[63] = {
   55 /* Group of ? */,
   3679 /* Id of CoupleMap */,
   7 /* Color of CoupleMap */,
-  66 /* Group of ? */,
+  67 /* Group of ? */,
   3263 /* Id of CoupleMapIterator */,
   5 /* Color of CoupleMapIterator */,
   2 /* Group of ? */,
@@ -9521,26 +9524,26 @@ const char LOCATE_standard___kernel[] = "../lib/standard/kernel.nit";
 const int SFT_standard___kernel[27] = {
   3 /* Id of Object */,
   3 /* Color of Object */,
-  19 /* Group of ? */,
+  33 /* Group of ? */,
   27 /* Id of Sys */,
   4 /* Color of Sys */,
-  51 /* Group of ? */,
+  55 /* Group of ? */,
   275 /* Id of Comparable */,
   6 /* Color of Comparable */,
   57 /* Group of ? */,
   3243 /* Id of Discrete */,
   4 /* Color of Discrete */,
   68 /* Group of ? */,
-  -13 /* Id of Bool */,
+  -9 /* Id of Bool */,
   4 /* Color of Bool */,
   50 /* Group of ? */,
-  -9 /* Id of Float */,
+  -5 /* Id of Float */,
   4 /* Color of Float */,
   52 /* Group of ? */,
-  -29 /* Id of Int */,
+  -37 /* Id of Int */,
   7 /* Color of Int */,
-  77 /* Group of ? */,
-  -33 /* Id of Char */,
+  78 /* Group of ? */,
+  -41 /* Id of Char */,
   7 /* Color of Char */,
   77 /* Group of ? */,
   -1 /* Id of Pointer */,
@@ -9580,7 +9583,7 @@ const int SFT_standard___collection___array[43] = {
   4635 /* Id of AbstractArray */,
   14 /* Color of AbstractArray */,
   84 /* Group of ? */,
-  4827 /* Id of Array */,
+  4831 /* Id of Array */,
   4 /* Color of Array */,
   3 /* Group of ? */,
   111 /* Group of ? */,
@@ -9599,7 +9602,7 @@ const int SFT_standard___collection___array[43] = {
   4251 /* Id of ArrayMap */,
   8 /* Color of ArrayMap */,
   2 /* Group of ? */,
-  68 /* Group of ? */,
+  69 /* Group of ? */,
   3715 /* Id of ArrayMapKeys */,
   10 /* Color of ArrayMapKeys */,
   2 /* Group of ? */,
@@ -9612,7 +9615,7 @@ const int SFT_standard___collection___array[43] = {
   69 /* Group of ? */,
   303 /* Id of ArrayCapable */,
   5 /* Color of ArrayCapable */,
-  59 /* Group of ? */,
+  60 /* Group of ? */,
   123 /* Id of NativeArray */,
   4 /* Color of NativeArray */,
   50 /* Group of ? */,
@@ -9627,15 +9630,15 @@ const int SFT_standard___collection___hash_collection[38] = {
   4 /* Color of HashNode */,
   2 /* Group of ? */,
   50 /* Group of ? */,
-  3651 /* Id of HashMap */,
+  3655 /* Id of HashMap */,
   7 /* Color of HashMap */,
   9 /* Group of ? */,
-  66 /* Group of ? */,
+  67 /* Group of ? */,
   3659 /* Id of HashMapKeys */,
   10 /* Color of HashMapKeys */,
   2 /* Group of ? */,
   80 /* Group of ? */,
-  3655 /* Id of HashMapValues */,
+  3651 /* Id of HashMapValues */,
   10 /* Color of HashMapValues */,
   2 /* Group of ? */,
   80 /* Group of ? */,
@@ -9660,16 +9663,11 @@ const int SFT_standard___collection___hash_collection[38] = {
 };
 const char LOCATE_standard___hash[] = "../lib/standard/hash.nit";
 const int SFT_standard___hash[1] = {
-  43 /* Group of ? */,
-};
-const char LOCATE_standard___time[] = "../lib/standard/time.nit";
-const int SFT_standard___time[2] = {
-  18 /* Group of ? */,
-  50 /* Group of ? */,
+  32 /* Group of ? */,
 };
 const char LOCATE_standard___file[] = "../lib/standard/file.nit";
 const int SFT_standard___file[30] = {
-  28 /* Group of ? */,
+  18 /* Group of ? */,
   3227 /* Id of FStream */,
   4 /* Color of FStream */,
   2 /* Group of ? */,
@@ -9691,12 +9689,12 @@ const int SFT_standard___file[30] = {
   4191 /* Id of Stderr */,
   8 /* Color of Stderr */,
   66 /* Group of ? */,
-  139 /* Group of ? */,
-  60 /* Group of ? */,
-  -25 /* Id of FileStat */,
+  137 /* Group of ? */,
+  64 /* Group of ? */,
+  -33 /* Id of FileStat */,
   5 /* Color of FileStat */,
   51 /* Group of ? */,
-  -21 /* Id of NativeFile */,
+  -29 /* Id of NativeFile */,
   5 /* Color of NativeFile */,
   51 /* Group of ? */,
 };
@@ -9733,7 +9731,18 @@ const int SFT_standard___stream[32] = {
   4247 /* Id of FDIOStream */,
   11 /* Color of FDIOStream */,
   59 /* Group of ? */,
-  35 /* Group of ? */,
+  42 /* Group of ? */,
+};
+const char LOCATE_standard___time[] = "../lib/standard/time.nit";
+const int SFT_standard___time[8] = {
+  25 /* Group of ? */,
+  50 /* Group of ? */,
+  -17 /* Id of TimeT */,
+  5 /* Color of TimeT */,
+  51 /* Group of ? */,
+  -13 /* Id of Tm */,
+  5 /* Color of Tm */,
+  51 /* Group of ? */,
 };
 const char LOCATE_standard___string_search[] = "../lib/standard/string_search.nit";
 const int SFT_standard___string_search[12] = {
@@ -9748,7 +9757,7 @@ const int SFT_standard___string_search[12] = {
   4 /* Color of Match */,
   2 /* Group of ? */,
   50 /* Group of ? */,
-  150 /* Group of ? */,
+  149 /* Group of ? */,
 };
 const char LOCATE_standard___exec[] = "../lib/standard/exec.nit";
 const int SFT_standard___exec[20] = {
@@ -9767,15 +9776,15 @@ const int SFT_standard___exec[20] = {
   4227 /* Id of IOProcess */,
   11 /* Color of IOProcess */,
   84 /* Group of ? */,
-  54 /* Group of ? */,
-  64 /* Group of ? */,
-  -17 /* Id of NativeProcess */,
+  58 /* Group of ? */,
+  69 /* Group of ? */,
+  -25 /* Id of NativeProcess */,
   5 /* Color of NativeProcess */,
   51 /* Group of ? */,
 };
 const char LOCATE_standard___math[] = "../lib/standard/math.nit";
 const int SFT_standard___math[4] = {
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   63 /* Group of ? */,
   79 /* Group of ? */,
   44 /* Group of ? */,
@@ -9822,57 +9831,57 @@ const int SFT_syntax___typing[55] = {
   3327 /* Id of TypingVisitor */,
   6 /* Color of TypingVisitor */,
   7 /* Group of ? */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   69 /* Group of ? */,
-  88 /* Group of ? */,
+  89 /* Group of ? */,
   8 /* Group of ? */,
-  101 /* Group of ? */,
-  96 /* Group of ? */,
-  98 /* Group of ? */,
+  112 /* Group of ? */,
+  102 /* Group of ? */,
   104 /* Group of ? */,
-  105 /* Group of ? */,
+  112 /* Group of ? */,
+  114 /* Group of ? */,
   14 /* Group of ? */,
-  86 /* Group of ? */,
+  92 /* Group of ? */,
   12 /* Group of ? */,
   8 /* Group of ? */,
-  83 /* Group of ? */,
+  85 /* Group of ? */,
   12 /* Group of ? */,
   4591 /* Id of AAbsControl */,
   8 /* Color of AAbsControl */,
   12 /* Group of ? */,
-  89 /* Group of ? */,
+  91 /* Group of ? */,
   13 /* Group of ? */,
-  93 /* Group of ? */,
+  95 /* Group of ? */,
   12 /* Group of ? */,
   14 /* Group of ? */,
-  92 /* Group of ? */,
-  75 /* Group of ? */,
+  95 /* Group of ? */,
+  76 /* Group of ? */,
   12 /* Group of ? */,
   12 /* Group of ? */,
-  89 /* Group of ? */,
+  91 /* Group of ? */,
   19 /* Group of ? */,
-  75 /* Group of ? */,
-  80 /* Group of ? */,
+  76 /* Group of ? */,
+  81 /* Group of ? */,
   17 /* Group of ? */,
-  97 /* Group of ? */,
+  102 /* Group of ? */,
   12 /* Group of ? */,
-  98 /* Group of ? */,
+  103 /* Group of ? */,
   17 /* Group of ? */,
-  104 /* Group of ? */,
-  75 /* Group of ? */,
-  110 /* Group of ? */,
+  109 /* Group of ? */,
+  76 /* Group of ? */,
+  115 /* Group of ? */,
   7 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  118 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  124 /* Group of ? */,
   14 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
   9 /* Group of ? */,
-  78 /* Group of ? */,
+  80 /* Group of ? */,
   4275 /* Id of ATypeCheckExpr */,
   6 /* Color of ATypeCheckExpr */,
-  75 /* Group of ? */,
-  91 /* Group of ? */,
+  76 /* Group of ? */,
+  94 /* Group of ? */,
 };
 const char LOCATE_syntax___scope[] = "syntax/scope.nit";
 const int SFT_syntax___scope[23] = {
@@ -9898,7 +9907,7 @@ const int SFT_syntax___scope[23] = {
   4495 /* Id of AEscapeExpr */,
   8 /* Color of AEscapeExpr */,
   12 /* Group of ? */,
-  89 /* Group of ? */,
+  91 /* Group of ? */,
 };
 const char LOCATE_syntax___flow[] = "syntax/flow.nit";
 const int SFT_syntax___flow[20] = {
@@ -9983,49 +9992,49 @@ const int SFT_syntax___syntax_base[101] = {
   3319 /* Id of AbsSyntaxVisitor */,
   5 /* Color of AbsSyntaxVisitor */,
   3 /* Group of ? */,
-  55 /* Group of ? */,
+  56 /* Group of ? */,
   56 /* Group of ? */,
   4 /* Group of ? */,
   71 /* Group of ? */,
   8 /* Group of ? */,
-  83 /* Group of ? */,
-  79 /* Group of ? */,
-  85 /* Group of ? */,
+  84 /* Group of ? */,
+  80 /* Group of ? */,
+  87 /* Group of ? */,
   17 /* Group of ? */,
-  106 /* Group of ? */,
-  86 /* Group of ? */,
-  85 /* Group of ? */,
-  79 /* Group of ? */,
-  76 /* Group of ? */,
+  114 /* Group of ? */,
+  88 /* Group of ? */,
+  87 /* Group of ? */,
+  80 /* Group of ? */,
+  77 /* Group of ? */,
   7 /* Group of ? */,
-  76 /* Group of ? */,
-  78 /* Group of ? */,
+  77 /* Group of ? */,
+  80 /* Group of ? */,
   4595 /* Id of AAbsAbsSendExpr */,
   6 /* Color of AAbsAbsSendExpr */,
-  101 /* Group of ? */,
-  4819 /* Id of AAbsSendExpr */,
+  106 /* Group of ? */,
+  4823 /* Id of AAbsSendExpr */,
   9 /* Color of AAbsSendExpr */,
-  107 /* Group of ? */,
-  4831 /* Id of ASuperInitCall */,
-  10 /* Color of ASuperInitCall */,
-  76 /* Group of ? */,
-  110 /* Group of ? */,
   112 /* Group of ? */,
-  93 /* Group of ? */,
-  4871 /* Id of ASendReassignExpr */,
+  4835 /* Id of ASuperInitCall */,
+  10 /* Color of ASuperInitCall */,
+  77 /* Group of ? */,
+  115 /* Group of ? */,
+  117 /* Group of ? */,
+  96 /* Group of ? */,
+  4875 /* Id of ASendReassignExpr */,
   13 /* Color of ASendReassignExpr */,
-  90 /* Group of ? */,
-  98 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  94 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  104 /* Group of ? */,
+  91 /* Group of ? */,
+  103 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  96 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  109 /* Group of ? */,
   12 /* Group of ? */,
-  81 /* Group of ? */,
+  83 /* Group of ? */,
+  77 /* Group of ? */,
   76 /* Group of ? */,
-  75 /* Group of ? */,
 };
 const char LOCATE_parser[] = "parser/parser.nit";
 const int SFT_parser[1979] = {
@@ -10041,7 +10050,7 @@ const int SFT_parser[1979] = {
   3275 /* Id of ComputeProdLocationVisitor */,
   5 /* Color of ComputeProdLocationVisitor */,
   3 /* Group of ? */,
-  55 /* Group of ? */,
+  56 /* Group of ? */,
   67 /* Id of ReduceAction */,
   4 /* Color of ReduceAction */,
   2 /* Group of ? */,
@@ -12010,175 +12019,168 @@ const int SFT_parser[1979] = {
   54 /* Group of ? */,
 };
 const char LOCATE_parser___parser_prod[] = "parser/parser_prod.nit";
-const int SFT_parser___parser_prod[168] = {
-  2 /* Group of ? */,
-  57 /* Group of ? */,
-  71 /* Group of ? */,
-  15 /* Id of Visitor */,
-  4 /* Color of Visitor */,
-  2 /* Group of ? */,
-  50 /* Group of ? */,
-  76 /* Group of ? */,
-  75 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  92 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
+const int SFT_parser___parser_prod[161] = {
   77 /* Group of ? */,
+  76 /* Group of ? */,
+  79 /* Group of ? */,
   79 /* Group of ? */,
-  88 /* Group of ? */,
-  87 /* Group of ? */,
-  97 /* Group of ? */,
-  97 /* Group of ? */,
-  105 /* Group of ? */,
-  99 /* Group of ? */,
-  108 /* Group of ? */,
-  107 /* Group of ? */,
-  104 /* Group of ? */,
-  86 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
   78 /* Group of ? */,
   78 /* Group of ? */,
   78 /* Group of ? */,
   78 /* Group of ? */,
-  77 /* Group of ? */,
+  93 /* Group of ? */,
+  90 /* Group of ? */,
+  90 /* Group of ? */,
+  81 /* Group of ? */,
+  81 /* Group of ? */,
+  81 /* Group of ? */,
+  81 /* Group of ? */,
   81 /* Group of ? */,
   78 /* Group of ? */,
-  82 /* Group of ? */,
-  75 /* Group of ? */,
-  89 /* Group of ? */,
+  80 /* Group of ? */,
   90 /* Group of ? */,
   89 /* Group of ? */,
-  93 /* Group of ? */,
-  89 /* Group of ? */,
-  93 /* Group of ? */,
-  93 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  93 /* Group of ? */,
-  93 /* Group of ? */,
-  95 /* Group of ? */,
-  89 /* Group of ? */,
+  103 /* Group of ? */,
+  103 /* Group of ? */,
+  114 /* Group of ? */,
+  105 /* Group of ? */,
+  116 /* Group of ? */,
+  116 /* Group of ? */,
+  112 /* Group of ? */,
+  88 /* Group of ? */,
+  81 /* Group of ? */,
+  81 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  78 /* Group of ? */,
+  82 /* Group of ? */,
+  79 /* Group of ? */,
+  83 /* Group of ? */,
+  76 /* Group of ? */,
+  91 /* Group of ? */,
   92 /* Group of ? */,
-  113 /* Group of ? */,
+  91 /* Group of ? */,
+  95 /* Group of ? */,
+  91 /* Group of ? */,
+  95 /* Group of ? */,
+  95 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  95 /* Group of ? */,
+  95 /* Group of ? */,
+  97 /* Group of ? */,
+  91 /* Group of ? */,
+  95 /* Group of ? */,
   118 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
   124 /* Group of ? */,
-  90 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  131 /* Group of ? */,
+  91 /* Group of ? */,
+  131 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  91 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
+  129 /* Group of ? */,
   124 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  90 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  118 /* Group of ? */,
+  115 /* Group of ? */,
+  110 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  131 /* Group of ? */,
+  91 /* Group of ? */,
+  131 /* Group of ? */,
+  116 /* Group of ? */,
+  124 /* Group of ? */,
+  127 /* Group of ? */,
+  91 /* Group of ? */,
+  127 /* Group of ? */,
   110 /* Group of ? */,
-  103 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  123 /* Group of ? */,
-  89 /* Group of ? */,
-  123 /* Group of ? */,
-  111 /* Group of ? */,
-  118 /* Group of ? */,
-  120 /* Group of ? */,
-  89 /* Group of ? */,
-  120 /* Group of ? */,
-  105 /* Group of ? */,
-  92 /* Group of ? */,
   95 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  91 /* Group of ? */,
+  98 /* Group of ? */,
+  98 /* Group of ? */,
+  92 /* Group of ? */,
+  92 /* Group of ? */,
   97 /* Group of ? */,
-  89 /* Group of ? */,
-  94 /* Group of ? */,
-  94 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  91 /* Group of ? */,
+  96 /* Group of ? */,
+  96 /* Group of ? */,
+  96 /* Group of ? */,
+  96 /* Group of ? */,
+  92 /* Group of ? */,
   94 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  93 /* Group of ? */,
-  93 /* Group of ? */,
-  93 /* Group of ? */,
-  93 /* Group of ? */,
-  90 /* Group of ? */,
   91 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  103 /* Group of ? */,
-  89 /* Group of ? */,
+  91 /* Group of ? */,
+  110 /* Group of ? */,
+  91 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
   78 /* Group of ? */,
   78 /* Group of ? */,
+  86 /* Group of ? */,
   78 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  78 /* Group of ? */,
+  81 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
   84 /* Group of ? */,
+  84 /* Group of ? */,
+  84 /* Group of ? */,
+  76 /* Group of ? */,
   77 /* Group of ? */,
-  77 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  77 /* Group of ? */,
-  80 /* Group of ? */,
-  81 /* Group of ? */,
-  81 /* Group of ? */,
-  81 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  75 /* Group of ? */,
   76 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
   76 /* Group of ? */,
   76 /* Group of ? */,
   76 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
 };
 const char LOCATE_parser___lexer[] = "parser/lexer.nit";
 const int SFT_parser___lexer[106] = {
@@ -12290,18 +12292,26 @@ const int SFT_parser___lexer[106] = {
   55 /* Group of ? */,
 };
 const char LOCATE_parser___parser_nodes[] = "parser/parser_nodes.nit";
-const int SFT_parser___parser_nodes[1014] = {
+const int SFT_parser___parser_nodes[1022] = {
   315 /* Id of ANode */,
   4 /* Color of ANode */,
-  3 /* Group of ? */,
-  63 /* Group of ? */,
+  2 /* Group of ? */,
+  57 /* Group of ? */,
+  4695 /* Id of ANodes */,
+  13 /* Color of ANodes */,
+  2 /* Group of ? */,
+  111 /* Group of ? */,
   335 /* Id of Token */,
   5 /* Color of Token */,
   73 /* Group of ? */,
   3019 /* Id of Prod */,
   5 /* Color of Prod */,
   6 /* Group of ? */,
-  72 /* Group of ? */,
+  71 /* Group of ? */,
+  15 /* Id of Visitor */,
+  4 /* Color of Visitor */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
   3403 /* Id of TEol */,
   6 /* Color of TEol */,
   77 /* Group of ? */,
@@ -12596,7 +12606,7 @@ const int SFT_parser___parser_nodes[1014] = {
   4499 /* Id of AError */,
   7 /* Color of AError */,
   80 /* Group of ? */,
-  4707 /* Id of ALexerError */,
+  4711 /* Id of ALexerError */,
   8 /* Color of ALexerError */,
   83 /* Group of ? */,
   4667 /* Id of AParserError */,
@@ -12605,706 +12615,706 @@ const int SFT_parser___parser_nodes[1014] = {
   3767 /* Id of AModule */,
   6 /* Color of AModule */,
   7 /* Group of ? */,
-  78 /* Group of ? */,
+  79 /* Group of ? */,
   3759 /* Id of AModuledecl */,
   6 /* Color of AModuledecl */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3787 /* Id of AImport */,
   6 /* Color of AImport */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   4299 /* Id of AStdImport */,
   7 /* Color of AStdImport */,
   7 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4383 /* Id of ANoImport */,
   7 /* Color of ANoImport */,
   7 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   3731 /* Id of AVisibility */,
   6 /* Color of AVisibility */,
-  76 /* Group of ? */,
+  77 /* Group of ? */,
   4343 /* Id of APublicVisibility */,
   7 /* Color of APublicVisibility */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4359 /* Id of APrivateVisibility */,
   7 /* Color of APrivateVisibility */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4351 /* Id of AProtectedVisibility */,
   7 /* Color of AProtectedVisibility */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4443 /* Id of AIntrudeVisibility */,
   7 /* Color of AIntrudeVisibility */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   3831 /* Id of AClassdef */,
   6 /* Color of AClassdef */,
   9 /* Group of ? */,
-  86 /* Group of ? */,
+  87 /* Group of ? */,
   4303 /* Id of AStdClassdef */,
   7 /* Color of AStdClassdef */,
   10 /* Group of ? */,
-  94 /* Group of ? */,
+  95 /* Group of ? */,
   4283 /* Id of ATopClassdef */,
   7 /* Color of ATopClassdef */,
-  91 /* Group of ? */,
+  92 /* Group of ? */,
   4403 /* Id of AMainClassdef */,
   7 /* Color of AMainClassdef */,
-  91 /* Group of ? */,
+  92 /* Group of ? */,
   3827 /* Id of AClasskind */,
   6 /* Color of AClasskind */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4515 /* Id of AConcreteClasskind */,
   7 /* Color of AConcreteClasskind */,
   7 /* Group of ? */,
-  82 /* Group of ? */,
+  83 /* Group of ? */,
   4587 /* Id of AAbstractClasskind */,
   7 /* Color of AAbstractClasskind */,
   7 /* Group of ? */,
-  82 /* Group of ? */,
+  83 /* Group of ? */,
   4447 /* Id of AInterfaceClasskind */,
   7 /* Color of AInterfaceClasskind */,
   7 /* Group of ? */,
-  82 /* Group of ? */,
+  83 /* Group of ? */,
   4507 /* Id of AEnumClasskind */,
   7 /* Color of AEnumClasskind */,
   7 /* Group of ? */,
-  82 /* Group of ? */,
+  83 /* Group of ? */,
   4487 /* Id of AExternClasskind */,
   7 /* Color of AExternClasskind */,
   7 /* Group of ? */,
-  82 /* Group of ? */,
+  83 /* Group of ? */,
   3791 /* Id of AFormaldef */,
   6 /* Color of AFormaldef */,
   8 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   3739 /* Id of ASuperclass */,
   6 /* Color of ASuperclass */,
   8 /* Group of ? */,
-  81 /* Group of ? */,
+  82 /* Group of ? */,
   3751 /* Id of APropdef */,
   6 /* Color of APropdef */,
   7 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4555 /* Id of AAttrPropdef */,
   7 /* Color of AAttrPropdef */,
   12 /* Group of ? */,
-  90 /* Group of ? */,
+  92 /* Group of ? */,
   4399 /* Id of AMethPropdef */,
   7 /* Color of AMethPropdef */,
   11 /* Group of ? */,
-  89 /* Group of ? */,
-  4763 /* Id of ADeferredMethPropdef */,
+  91 /* Group of ? */,
+  4767 /* Id of ADeferredMethPropdef */,
   8 /* Color of ADeferredMethPropdef */,
   15 /* Group of ? */,
-  99 /* Group of ? */,
-  4719 /* Id of AInternMethPropdef */,
+  105 /* Group of ? */,
+  4723 /* Id of AInternMethPropdef */,
   8 /* Color of AInternMethPropdef */,
   15 /* Group of ? */,
-  99 /* Group of ? */,
-  4747 /* Id of AExternPropdef */,
+  105 /* Group of ? */,
+  4751 /* Id of AExternPropdef */,
   9 /* Color of AExternPropdef */,
   15 /* Group of ? */,
-  98 /* Group of ? */,
-  4843 /* Id of AExternMethPropdef */,
+  104 /* Group of ? */,
+  4847 /* Id of AExternMethPropdef */,
   10 /* Color of AExternMethPropdef */,
   18 /* Group of ? */,
-  107 /* Group of ? */,
-  4775 /* Id of AConcreteMethPropdef */,
+  116 /* Group of ? */,
+  4779 /* Id of AConcreteMethPropdef */,
   9 /* Color of AConcreteMethPropdef */,
   15 /* Group of ? */,
-  101 /* Group of ? */,
-  4723 /* Id of AInitPropdef */,
+  107 /* Group of ? */,
+  4727 /* Id of AInitPropdef */,
   8 /* Color of AInitPropdef */,
-  97 /* Group of ? */,
-  4851 /* Id of AConcreteInitPropdef */,
+  103 /* Group of ? */,
+  4855 /* Id of AConcreteInitPropdef */,
   10 /* Color of AConcreteInitPropdef */,
   19 /* Group of ? */,
-  110 /* Group of ? */,
-  4847 /* Id of AExternInitPropdef */,
+  118 /* Group of ? */,
+  4851 /* Id of AExternInitPropdef */,
   10 /* Color of AExternInitPropdef */,
   18 /* Group of ? */,
-  109 /* Group of ? */,
-  4839 /* Id of AMainMethPropdef */,
+  118 /* Group of ? */,
+  4843 /* Id of AMainMethPropdef */,
   10 /* Color of AMainMethPropdef */,
-  106 /* Group of ? */,
+  114 /* Group of ? */,
   3799 /* Id of AExternCalls */,
   6 /* Color of AExternCalls */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3803 /* Id of AExternCall */,
   6 /* Color of AExternCall */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4355 /* Id of APropExternCall */,
   7 /* Color of APropExternCall */,
-  80 /* Group of ? */,
-  4703 /* Id of ALocalPropExternCall */,
+  81 /* Group of ? */,
+  4707 /* Id of ALocalPropExternCall */,
   8 /* Color of ALocalPropExternCall */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
-  4735 /* Id of AFullPropExternCall */,
+  84 /* Group of ? */,
+  4739 /* Id of AFullPropExternCall */,
   8 /* Color of AFullPropExternCall */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
-  4727 /* Id of AInitPropExternCall */,
+  84 /* Group of ? */,
+  4731 /* Id of AInitPropExternCall */,
   8 /* Color of AInitPropExternCall */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
+  84 /* Group of ? */,
   4291 /* Id of ASuperExternCall */,
   7 /* Color of ASuperExternCall */,
   7 /* Group of ? */,
-  82 /* Group of ? */,
+  83 /* Group of ? */,
   4527 /* Id of ACastExternCall */,
   7 /* Color of ACastExternCall */,
-  82 /* Group of ? */,
-  4783 /* Id of ACastAsExternCall */,
+  83 /* Group of ? */,
+  4787 /* Id of ACastAsExternCall */,
   8 /* Color of ACastAsExternCall */,
   7 /* Group of ? */,
-  85 /* Group of ? */,
-  4803 /* Id of AAsNullableExternCall */,
+  86 /* Group of ? */,
+  4807 /* Id of AAsNullableExternCall */,
   8 /* Color of AAsNullableExternCall */,
   7 /* Group of ? */,
-  85 /* Group of ? */,
-  4807 /* Id of AAsNotNullableExternCall */,
+  86 /* Group of ? */,
+  4811 /* Id of AAsNotNullableExternCall */,
   8 /* Color of AAsNotNullableExternCall */,
   7 /* Group of ? */,
-  85 /* Group of ? */,
+  86 /* Group of ? */,
   4271 /* Id of ATypePropdef */,
   7 /* Color of ATypePropdef */,
   10 /* Group of ? */,
-  88 /* Group of ? */,
+  90 /* Group of ? */,
   3855 /* Id of AAble */,
   6 /* Color of AAble */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
   4335 /* Id of AReadAble */,
   7 /* Color of AReadAble */,
   9 /* Group of ? */,
-  80 /* Group of ? */,
+  83 /* Group of ? */,
   4259 /* Id of AWriteAble */,
   7 /* Color of AWriteAble */,
   9 /* Group of ? */,
-  80 /* Group of ? */,
+  83 /* Group of ? */,
   3771 /* Id of AMethid */,
   6 /* Color of AMethid */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   4463 /* Id of AIdMethid */,
   7 /* Color of AIdMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4363 /* Id of APlusMethid */,
   7 /* Color of APlusMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4391 /* Id of AMinusMethid */,
   7 /* Color of AMinusMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4311 /* Id of AStarMethid */,
   7 /* Color of AStarMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4315 /* Id of ASlashMethid */,
   7 /* Color of ASlashMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4371 /* Id of APercentMethid */,
   7 /* Color of APercentMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4503 /* Id of AEqMethid */,
   7 /* Color of AEqMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4387 /* Id of ANeMethid */,
   7 /* Color of ANeMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4419 /* Id of ALeMethid */,
   7 /* Color of ALeMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4479 /* Id of AGeMethid */,
   7 /* Color of AGeMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4407 /* Id of ALtMethid */,
   7 /* Color of ALtMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4471 /* Id of AGtMethid */,
   7 /* Color of AGtMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4411 /* Id of ALlMethid */,
   7 /* Color of ALlMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4475 /* Id of AGgMethid */,
   7 /* Color of AGgMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4539 /* Id of ABraMethid */,
   7 /* Color of ABraMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4307 /* Id of AStarshipMethid */,
   7 /* Color of AStarshipMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4567 /* Id of AAssignMethid */,
   7 /* Color of AAssignMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4535 /* Id of ABraassignMethid */,
   7 /* Color of ABraassignMethid */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   3743 /* Id of ASignature */,
   6 /* Color of ASignature */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   3755 /* Id of AParam */,
   6 /* Color of AParam */,
   10 /* Group of ? */,
-  83 /* Group of ? */,
+  84 /* Group of ? */,
   3823 /* Id of AClosureDecl */,
   6 /* Color of AClosureDecl */,
   9 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   3735 /* Id of AType */,
   6 /* Color of AType */,
   9 /* Group of ? */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   3779 /* Id of ALabel */,
   6 /* Color of ALabel */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3811 /* Id of AExpr */,
   7 /* Color of AExpr */,
-  81 /* Group of ? */,
+  83 /* Group of ? */,
   4551 /* Id of ABlockExpr */,
   8 /* Color of ABlockExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4263 /* Id of AVardeclExpr */,
   8 /* Color of AVardeclExpr */,
   13 /* Group of ? */,
-  92 /* Group of ? */,
+  94 /* Group of ? */,
   4327 /* Id of AReturnExpr */,
   8 /* Color of AReturnExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   3775 /* Id of ALabelable */,
   6 /* Color of ALabelable */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
-  4787 /* Id of ABreakExpr */,
+  76 /* Group of ? */,
+  4791 /* Id of ABreakExpr */,
   9 /* Color of ABreakExpr */,
   13 /* Group of ? */,
-  95 /* Group of ? */,
+  97 /* Group of ? */,
   4599 /* Id of AAbortExpr */,
   8 /* Color of AAbortExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
-  4771 /* Id of AContinueExpr */,
+  93 /* Group of ? */,
+  4775 /* Id of AContinueExpr */,
   9 /* Color of AContinueExpr */,
   13 /* Group of ? */,
-  95 /* Group of ? */,
-  4759 /* Id of ADoExpr */,
+  97 /* Group of ? */,
+  4763 /* Id of ADoExpr */,
   9 /* Color of ADoExpr */,
   13 /* Group of ? */,
-  95 /* Group of ? */,
+  97 /* Group of ? */,
   4459 /* Id of AIfExpr */,
   8 /* Color of AIfExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4455 /* Id of AIfexprExpr */,
   8 /* Color of AIfexprExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4639 /* Id of AWhileExpr */,
   9 /* Color of AWhileExpr */,
   13 /* Group of ? */,
-  95 /* Group of ? */,
-  4699 /* Id of ALoopExpr */,
+  97 /* Group of ? */,
+  4703 /* Id of ALoopExpr */,
   9 /* Color of ALoopExpr */,
   13 /* Group of ? */,
-  95 /* Group of ? */,
-  4739 /* Id of AForExpr */,
+  97 /* Group of ? */,
+  4743 /* Id of AForExpr */,
   9 /* Color of AForExpr */,
   14 /* Group of ? */,
-  97 /* Group of ? */,
+  99 /* Group of ? */,
   4575 /* Id of AAssertExpr */,
   8 /* Color of AAssertExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4571 /* Id of AAssignFormExpr */,
   8 /* Color of AAssignFormExpr */,
   14 /* Group of ? */,
-  92 /* Group of ? */,
+  95 /* Group of ? */,
   4331 /* Id of AReassignFormExpr */,
   8 /* Color of AReassignFormExpr */,
   15 /* Group of ? */,
-  94 /* Group of ? */,
+  97 /* Group of ? */,
   4687 /* Id of AOnceExpr */,
   9 /* Color of AOnceExpr */,
   13 /* Group of ? */,
-  94 /* Group of ? */,
-  4859 /* Id of ASendExpr */,
+  97 /* Group of ? */,
+  4863 /* Id of ASendExpr */,
   11 /* Color of ASendExpr */,
   19 /* Group of ? */,
-  115 /* Group of ? */,
-  4887 /* Id of ABinopExpr */,
+  120 /* Group of ? */,
+  4891 /* Id of ABinopExpr */,
   12 /* Color of ABinopExpr */,
   21 /* Group of ? */,
-  120 /* Group of ? */,
+  126 /* Group of ? */,
   4547 /* Id of ABoolExpr */,
   8 /* Color of ABoolExpr */,
-  89 /* Group of ? */,
+  78 /* Group of ? */,
   4679 /* Id of AOrExpr */,
   9 /* Color of AOrExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
-  4815 /* Id of AAndExpr */,
+  93 /* Group of ? */,
+  4819 /* Id of AAndExpr */,
   9 /* Color of AAndExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
+  93 /* Group of ? */,
   4683 /* Id of AOrElseExpr */,
   9 /* Color of AOrElseExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
+  93 /* Group of ? */,
   4691 /* Id of ANotExpr */,
   9 /* Color of ANotExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
-  4943 /* Id of AEqExpr */,
+  93 /* Group of ? */,
+  4947 /* Id of AEqExpr */,
   13 /* Color of AEqExpr */,
-  126 /* Group of ? */,
-  4755 /* Id of AEeExpr */,
+  133 /* Group of ? */,
+  4759 /* Id of AEeExpr */,
   9 /* Color of AEeExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
-  4911 /* Id of ANeExpr */,
+  93 /* Group of ? */,
+  4915 /* Id of ANeExpr */,
   13 /* Color of ANeExpr */,
-  126 /* Group of ? */,
-  4919 /* Id of ALtExpr */,
+  133 /* Group of ? */,
+  4923 /* Id of ALtExpr */,
   13 /* Color of ALtExpr */,
-  124 /* Group of ? */,
-  4927 /* Id of ALeExpr */,
+  131 /* Group of ? */,
+  4931 /* Id of ALeExpr */,
   13 /* Color of ALeExpr */,
-  124 /* Group of ? */,
-  4923 /* Id of ALlExpr */,
+  131 /* Group of ? */,
+  4927 /* Id of ALlExpr */,
   13 /* Color of ALlExpr */,
-  124 /* Group of ? */,
-  4931 /* Id of AGtExpr */,
+  131 /* Group of ? */,
+  4935 /* Id of AGtExpr */,
   13 /* Color of AGtExpr */,
-  124 /* Group of ? */,
-  4939 /* Id of AGeExpr */,
+  131 /* Group of ? */,
+  4943 /* Id of AGeExpr */,
   13 /* Color of AGeExpr */,
-  124 /* Group of ? */,
-  4935 /* Id of AGgExpr */,
+  131 /* Group of ? */,
+  4939 /* Id of AGgExpr */,
   13 /* Color of AGgExpr */,
-  124 /* Group of ? */,
-  4715 /* Id of AIsaExpr */,
+  131 /* Group of ? */,
+  4719 /* Id of AIsaExpr */,
   9 /* Color of AIsaExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
-  4903 /* Id of APlusExpr */,
+  93 /* Group of ? */,
+  4907 /* Id of APlusExpr */,
   13 /* Color of APlusExpr */,
-  124 /* Group of ? */,
-  4915 /* Id of AMinusExpr */,
+  131 /* Group of ? */,
+  4919 /* Id of AMinusExpr */,
   13 /* Color of AMinusExpr */,
-  124 /* Group of ? */,
-  4891 /* Id of AStarshipExpr */,
+  131 /* Group of ? */,
+  4895 /* Id of AStarshipExpr */,
   13 /* Color of AStarshipExpr */,
-  124 /* Group of ? */,
-  4895 /* Id of AStarExpr */,
+  131 /* Group of ? */,
+  4899 /* Id of AStarExpr */,
   13 /* Color of AStarExpr */,
-  124 /* Group of ? */,
-  4899 /* Id of ASlashExpr */,
+  131 /* Group of ? */,
+  4903 /* Id of ASlashExpr */,
   13 /* Color of ASlashExpr */,
-  124 /* Group of ? */,
-  4907 /* Id of APercentExpr */,
+  131 /* Group of ? */,
+  4911 /* Id of APercentExpr */,
   13 /* Color of APercentExpr */,
-  124 /* Group of ? */,
-  4863 /* Id of AUminusExpr */,
+  131 /* Group of ? */,
+  4867 /* Id of AUminusExpr */,
   12 /* Color of AUminusExpr */,
   21 /* Group of ? */,
-  120 /* Group of ? */,
-  4835 /* Id of ANewExpr */,
+  126 /* Group of ? */,
+  4839 /* Id of ANewExpr */,
   10 /* Color of ANewExpr */,
   19 /* Group of ? */,
-  112 /* Group of ? */,
+  117 /* Group of ? */,
   4559 /* Id of AAttrFormExpr */,
   6 /* Color of AAttrFormExpr */,
   19 /* Group of ? */,
-  100 /* Group of ? */,
-  4795 /* Id of AAttrExpr */,
-  8 /* Color of AAttrExpr */,
   105 /* Group of ? */,
-  4799 /* Id of AAttrAssignExpr */,
+  4799 /* Id of AAttrExpr */,
+  8 /* Color of AAttrExpr */,
+  112 /* Group of ? */,
+  4803 /* Id of AAttrAssignExpr */,
   9 /* Color of AAttrAssignExpr */,
-  91 /* Group of ? */,
-  4879 /* Id of ACallFormExpr */,
+  78 /* Group of ? */,
+  4883 /* Id of ACallFormExpr */,
   14 /* Color of ACallFormExpr */,
   21 /* Group of ? */,
-  120 /* Group of ? */,
-  4867 /* Id of ASendReassignFormExpr */,
+  126 /* Group of ? */,
+  4871 /* Id of ASendReassignFormExpr */,
   12 /* Color of ASendReassignFormExpr */,
-  89 /* Group of ? */,
-  4791 /* Id of AAttrReassignExpr */,
+  78 /* Group of ? */,
+  4795 /* Id of AAttrReassignExpr */,
   9 /* Color of AAttrReassignExpr */,
-  91 /* Group of ? */,
-  4951 /* Id of ACallExpr */,
+  78 /* Group of ? */,
+  4955 /* Id of ACallExpr */,
   15 /* Color of ACallExpr */,
-  125 /* Group of ? */,
-  4955 /* Id of ACallAssignExpr */,
+  133 /* Group of ? */,
+  4959 /* Id of ACallAssignExpr */,
   12 /* Color of ACallAssignExpr */,
-  91 /* Group of ? */,
-  4947 /* Id of ACallReassignExpr */,
+  93 /* Group of ? */,
+  4951 /* Id of ACallReassignExpr */,
   15 /* Color of ACallReassignExpr */,
-  125 /* Group of ? */,
-  4855 /* Id of ASuperExpr */,
+  133 /* Group of ? */,
+  4859 /* Id of ASuperExpr */,
   11 /* Color of ASuperExpr */,
   20 /* Group of ? */,
-  113 /* Group of ? */,
-  4875 /* Id of AInitExpr */,
+  118 /* Group of ? */,
+  4879 /* Id of AInitExpr */,
   12 /* Color of AInitExpr */,
   21 /* Group of ? */,
-  120 /* Group of ? */,
-  4883 /* Id of ABraFormExpr */,
+  126 /* Group of ? */,
+  4887 /* Id of ABraFormExpr */,
   14 /* Color of ABraFormExpr */,
   21 /* Group of ? */,
-  118 /* Group of ? */,
-  4963 /* Id of ABraExpr */,
+  124 /* Group of ? */,
+  4967 /* Id of ABraExpr */,
   15 /* Color of ABraExpr */,
-  122 /* Group of ? */,
-  4967 /* Id of ABraAssignExpr */,
+  129 /* Group of ? */,
+  4971 /* Id of ABraAssignExpr */,
   12 /* Color of ABraAssignExpr */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4267 /* Id of AVarFormExpr */,
   6 /* Color of AVarFormExpr */,
   13 /* Group of ? */,
-  90 /* Group of ? */,
-  4959 /* Id of ABraReassignExpr */,
+  92 /* Group of ? */,
+  4963 /* Id of ABraReassignExpr */,
   15 /* Color of ABraReassignExpr */,
-  122 /* Group of ? */,
-  4779 /* Id of AClosureCallExpr */,
+  129 /* Group of ? */,
+  4783 /* Id of AClosureCallExpr */,
   8 /* Color of AClosureCallExpr */,
   15 /* Group of ? */,
-  107 /* Group of ? */,
+  112 /* Group of ? */,
   4647 /* Id of AVarExpr */,
   8 /* Color of AVarExpr */,
-  94 /* Group of ? */,
+  97 /* Group of ? */,
   4651 /* Id of AVarAssignExpr */,
   9 /* Color of AVarAssignExpr */,
-  97 /* Group of ? */,
+  78 /* Group of ? */,
   4643 /* Id of AVarReassignExpr */,
   9 /* Color of AVarReassignExpr */,
-  99 /* Group of ? */,
+  78 /* Group of ? */,
   4339 /* Id of ARangeExpr */,
   8 /* Color of ARangeExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
-  4767 /* Id of ACrangeExpr */,
+  93 /* Group of ? */,
+  4771 /* Id of ACrangeExpr */,
   9 /* Color of ACrangeExpr */,
   14 /* Group of ? */,
-  96 /* Group of ? */,
+  100 /* Group of ? */,
   4675 /* Id of AOrangeExpr */,
   9 /* Color of AOrangeExpr */,
   14 /* Group of ? */,
-  96 /* Group of ? */,
+  100 /* Group of ? */,
   4583 /* Id of AArrayExpr */,
   8 /* Color of AArrayExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
+  94 /* Group of ? */,
   4323 /* Id of ASelfExpr */,
   8 /* Color of ASelfExpr */,
   13 /* Group of ? */,
-  92 /* Group of ? */,
-  4731 /* Id of AImplicitSelfExpr */,
+  94 /* Group of ? */,
+  4735 /* Id of AImplicitSelfExpr */,
   9 /* Color of AImplicitSelfExpr */,
-  96 /* Group of ? */,
+  99 /* Group of ? */,
   4655 /* Id of ATrueExpr */,
   9 /* Color of ATrueExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
-  4743 /* Id of AFalseExpr */,
+  93 /* Group of ? */,
+  4747 /* Id of AFalseExpr */,
   9 /* Color of AFalseExpr */,
   12 /* Group of ? */,
-  92 /* Group of ? */,
+  93 /* Group of ? */,
   4379 /* Id of ANullExpr */,
   8 /* Color of ANullExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4451 /* Id of AIntExpr */,
   8 /* Color of AIntExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4483 /* Id of AFloatExpr */,
   8 /* Color of AFloatExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4523 /* Id of ACharExpr */,
   8 /* Color of ACharExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4295 /* Id of AStringFormExpr */,
   8 /* Color of AStringFormExpr */,
   14 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4659 /* Id of AStringExpr */,
   9 /* Color of AStringExpr */,
-  95 /* Group of ? */,
+  98 /* Group of ? */,
   4663 /* Id of AStartStringExpr */,
   9 /* Color of AStartStringExpr */,
-  95 /* Group of ? */,
-  4695 /* Id of AMidStringExpr */,
+  98 /* Group of ? */,
+  4699 /* Id of AMidStringExpr */,
   9 /* Color of AMidStringExpr */,
-  95 /* Group of ? */,
-  4751 /* Id of AEndStringExpr */,
+  98 /* Group of ? */,
+  4755 /* Id of AEndStringExpr */,
   9 /* Color of AEndStringExpr */,
-  95 /* Group of ? */,
+  98 /* Group of ? */,
   4287 /* Id of ASuperstringExpr */,
   8 /* Color of ASuperstringExpr */,
   13 /* Group of ? */,
-  92 /* Group of ? */,
+  94 /* Group of ? */,
   4671 /* Id of AParExpr */,
   9 /* Color of AParExpr */,
   13 /* Group of ? */,
-  93 /* Group of ? */,
+  96 /* Group of ? */,
   4347 /* Id of AProxyExpr */,
   8 /* Color of AProxyExpr */,
   12 /* Group of ? */,
-  89 /* Group of ? */,
-  4811 /* Id of AAsCastExpr */,
+  91 /* Group of ? */,
+  4815 /* Id of AAsCastExpr */,
   8 /* Color of AAsCastExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4579 /* Id of AAsNotnullExpr */,
   8 /* Color of AAsNotnullExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
-  4711 /* Id of AIssetAttrExpr */,
+  93 /* Group of ? */,
+  4715 /* Id of AIssetAttrExpr */,
   8 /* Color of AIssetAttrExpr */,
   21 /* Group of ? */,
-  105 /* Group of ? */,
+  112 /* Group of ? */,
   3807 /* Id of AExprs */,
   6 /* Color of AExprs */,
   7 /* Group of ? */,
-  76 /* Group of ? */,
+  77 /* Group of ? */,
   4511 /* Id of ADebugTypeExpr */,
   8 /* Color of ADebugTypeExpr */,
   12 /* Group of ? */,
-  91 /* Group of ? */,
+  93 /* Group of ? */,
   4415 /* Id of AListExprs */,
   7 /* Color of AListExprs */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4375 /* Id of AParExprs */,
   7 /* Color of AParExprs */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   4543 /* Id of ABraExprs */,
   7 /* Color of ABraExprs */,
   8 /* Group of ? */,
-  80 /* Group of ? */,
+  81 /* Group of ? */,
   3843 /* Id of AAssignOp */,
   6 /* Color of AAssignOp */,
-  76 /* Group of ? */,
+  77 /* Group of ? */,
   4367 /* Id of APlusAssignOp */,
   7 /* Color of APlusAssignOp */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4395 /* Id of AMinusAssignOp */,
   7 /* Color of AMinusAssignOp */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4519 /* Id of AClosureDef */,
   7 /* Color of AClosureDef */,
   13 /* Group of ? */,
-  86 /* Group of ? */,
+  88 /* Group of ? */,
   3819 /* Id of AClosureId */,
   6 /* Color of AClosureId */,
-  76 /* Group of ? */,
+  77 /* Group of ? */,
   4319 /* Id of ASimpleClosureId */,
   7 /* Color of ASimpleClosureId */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   4531 /* Id of ABreakClosureId */,
   7 /* Color of ABreakClosureId */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  80 /* Group of ? */,
   3763 /* Id of AModuleName */,
   6 /* Color of AModuleName */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3783 /* Id of AInLanguage */,
   6 /* Color of AInLanguage */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3795 /* Id of AExternCodeBlock */,
   6 /* Color of AExternCodeBlock */,
   7 /* Group of ? */,
-  78 /* Group of ? */,
+  79 /* Group of ? */,
   3747 /* Id of AQualified */,
   6 /* Color of AQualified */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3815 /* Id of ADoc */,
   6 /* Color of ADoc */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3847 /* Id of AAnnotations */,
   6 /* Color of AAnnotations */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3851 /* Id of AAnnotation */,
   6 /* Color of AAnnotation */,
   7 /* Group of ? */,
-  77 /* Group of ? */,
+  78 /* Group of ? */,
   3839 /* Id of AAtArg */,
   6 /* Color of AAtArg */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
   4279 /* Id of ATypeAtArg */,
   7 /* Color of ATypeAtArg */,
   7 /* Group of ? */,
-  78 /* Group of ? */,
+  79 /* Group of ? */,
   4491 /* Id of AExprAtArg */,
   7 /* Color of AExprAtArg */,
   7 /* Group of ? */,
-  78 /* Group of ? */,
+  79 /* Group of ? */,
   4563 /* Id of AAtAtArg */,
   7 /* Color of AAtAtArg */,
-  78 /* Group of ? */,
+  79 /* Group of ? */,
   3835 /* Id of AAtid */,
   6 /* Color of AAtid */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
   4467 /* Id of AIdAtid */,
   7 /* Color of AIdAtid */,
-  79 /* Group of ? */,
+  81 /* Group of ? */,
   4439 /* Id of AKwexternAtid */,
   7 /* Color of AKwexternAtid */,
-  79 /* Group of ? */,
+  81 /* Group of ? */,
   4431 /* Id of AKwinternAtid */,
   7 /* Color of AKwinternAtid */,
-  79 /* Group of ? */,
+  81 /* Group of ? */,
   4427 /* Id of AKwreadableAtid */,
   7 /* Color of AKwreadableAtid */,
-  79 /* Group of ? */,
+  81 /* Group of ? */,
   4423 /* Id of AKwwritableAtid */,
   7 /* Color of AKwwritableAtid */,
-  79 /* Group of ? */,
+  81 /* Group of ? */,
   4435 /* Id of AKwimportAtid */,
   7 /* Color of AKwimportAtid */,
-  79 /* Group of ? */,
+  81 /* Group of ? */,
   3455 /* Id of Start */,
   6 /* Color of Start */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
 };
 const char LOCATE_parser___tables[] = "parser/tables.nit";
 const int SFT_parser___tables[3] = {
@@ -13398,9 +13408,9 @@ const int SFT_syntax___extern_inline[15] = {
   10 /* Group of ? */,
   75 /* Group of ? */,
   76 /* Group of ? */,
-  75 /* Group of ? */,
-  102 /* Group of ? */,
-  89 /* Group of ? */,
+  76 /* Group of ? */,
+  111 /* Group of ? */,
+  90 /* Group of ? */,
   129 /* Group of ? */,
 };
 const char LOCATE_syntax___mmbuilder[] = "syntax/mmbuilder.nit";
@@ -13420,60 +13430,60 @@ const int SFT_syntax___mmbuilder[69] = {
   3691 /* Id of ClassBuilderVisitor */,
   6 /* Color of ClassBuilderVisitor */,
   7 /* Group of ? */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   3687 /* Id of ClassSpecializationBuilderVisitor */,
   6 /* Color of ClassSpecializationBuilderVisitor */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   3695 /* Id of ClassAncestorBuilder */,
   6 /* Color of ClassAncestorBuilder */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   3683 /* Id of ClassVerifierVisitor */,
   6 /* Color of ClassVerifierVisitor */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   3467 /* Id of PropertyBuilderVisitor */,
   6 /* Color of PropertyBuilderVisitor */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   3463 /* Id of PropertyVerifierVisitor */,
   6 /* Color of PropertyVerifierVisitor */,
   7 /* Group of ? */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
   51 /* Id of SignatureBuilder */,
   4 /* Color of SignatureBuilder */,
   2 /* Group of ? */,
   50 /* Group of ? */,
   50 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  90 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  91 /* Group of ? */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
   9 /* Group of ? */,
-  82 /* Group of ? */,
+  84 /* Group of ? */,
   9 /* Group of ? */,
-  82 /* Group of ? */,
-  103 /* Group of ? */,
+  84 /* Group of ? */,
+  112 /* Group of ? */,
   9 /* Group of ? */,
-  82 /* Group of ? */,
+  84 /* Group of ? */,
   3063 /* Id of MethidAccumulator */,
   5 /* Color of MethidAccumulator */,
   3 /* Group of ? */,
-  55 /* Group of ? */,
+  56 /* Group of ? */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
   7 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  77 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  79 /* Group of ? */,
 };
 const char LOCATE_nit_version[] = "nit_version.nit";
 const int SFT_nit_version[1] = {
@@ -13947,16 +13957,6 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: NitCompiler < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -13964,8 +13964,7 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -13973,6 +13972,17 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: NitCompiler < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -14276,7 +14286,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("logs");
     REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -14295,7 +14305,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("Show warnings");
     REGB0 = TAG_Int(13);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -14305,7 +14315,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("-W");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -14314,7 +14324,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("--warn");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -14326,7 +14336,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("Do not show warnings");
     REGB0 = TAG_Int(20);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -14336,7 +14346,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("-q");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_6 = fra.me.REG[3];
     register_static_object(&once_value_6);
   } else fra.me.REG[3] = once_value_6;
@@ -14345,7 +14355,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_7) {
     fra.me.REG[3] = BOX_NativeString("--quiet");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_7 = fra.me.REG[3];
     register_static_object(&once_value_7);
   } else fra.me.REG[3] = once_value_7;
@@ -14357,7 +14367,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_8) {
     fra.me.REG[1] = BOX_NativeString("Generate various log files");
     REGB0 = TAG_Int(26);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_8 = fra.me.REG[1];
     register_static_object(&once_value_8);
   } else fra.me.REG[1] = once_value_8;
@@ -14367,7 +14377,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_9) {
     fra.me.REG[3] = BOX_NativeString("--log");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_9 = fra.me.REG[3];
     register_static_object(&once_value_9);
   } else fra.me.REG[3] = once_value_9;
@@ -14379,7 +14389,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
@@ -14389,7 +14399,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_11) {
     fra.me.REG[3] = BOX_NativeString("--log-dir");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_11 = fra.me.REG[3];
     register_static_object(&once_value_11);
   } else fra.me.REG[3] = once_value_11;
@@ -14401,7 +14411,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_12) {
     fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
     REGB0 = TAG_Int(23);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_12 = fra.me.REG[1];
     register_static_object(&once_value_12);
   } else fra.me.REG[1] = once_value_12;
@@ -14411,7 +14421,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_13) {
     fra.me.REG[3] = BOX_NativeString("-h");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_13 = fra.me.REG[3];
     register_static_object(&once_value_13);
   } else fra.me.REG[3] = once_value_13;
@@ -14420,7 +14430,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_14) {
     fra.me.REG[3] = BOX_NativeString("-?");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_14 = fra.me.REG[3];
     register_static_object(&once_value_14);
   } else fra.me.REG[3] = once_value_14;
@@ -14429,7 +14439,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_15) {
     fra.me.REG[3] = BOX_NativeString("--help");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_15 = fra.me.REG[3];
     register_static_object(&once_value_15);
   } else fra.me.REG[3] = once_value_15;
@@ -14441,7 +14451,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_16) {
     fra.me.REG[2] = BOX_NativeString("Show version and exit");
     REGB0 = TAG_Int(21);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_16 = fra.me.REG[2];
     register_static_object(&once_value_16);
   } else fra.me.REG[2] = once_value_16;
@@ -14451,7 +14461,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_17) {
     fra.me.REG[3] = BOX_NativeString("--version");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_17 = fra.me.REG[3];
     register_static_object(&once_value_17);
   } else fra.me.REG[3] = once_value_17;
@@ -14463,7 +14473,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_18) {
     fra.me.REG[1] = BOX_NativeString("Verbose");
     REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_18 = fra.me.REG[1];
     register_static_object(&once_value_18);
   } else fra.me.REG[1] = once_value_18;
@@ -14473,7 +14483,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_19) {
     fra.me.REG[3] = BOX_NativeString("-v");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_19 = fra.me.REG[3];
     register_static_object(&once_value_19);
   } else fra.me.REG[3] = once_value_19;
@@ -14482,7 +14492,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_20) {
     fra.me.REG[3] = BOX_NativeString("--verbose");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_20 = fra.me.REG[3];
     register_static_object(&once_value_20);
   } else fra.me.REG[3] = once_value_20;
@@ -14494,7 +14504,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_21) {
     fra.me.REG[2] = BOX_NativeString("Stop on first error");
     REGB0 = TAG_Int(19);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_21 = fra.me.REG[2];
     register_static_object(&once_value_21);
   } else fra.me.REG[2] = once_value_21;
@@ -14504,7 +14514,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_22) {
     fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
     REGB0 = TAG_Int(21);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_22 = fra.me.REG[3];
     register_static_object(&once_value_22);
   } else fra.me.REG[3] = once_value_22;
@@ -14516,7 +14526,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_23) {
     fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
     REGB0 = TAG_Int(47);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_23 = fra.me.REG[1];
     register_static_object(&once_value_23);
   } else fra.me.REG[1] = once_value_23;
@@ -14526,7 +14536,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_24) {
     fra.me.REG[3] = BOX_NativeString("--no-color");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_24 = fra.me.REG[3];
     register_static_object(&once_value_24);
   } else fra.me.REG[3] = once_value_24;
@@ -14547,7 +14557,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_25) {
     fra.me.REG[2] = BOX_NativeString("Set include path for loaders (may be used more than once)");
     REGB0 = TAG_Int(57);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_25 = fra.me.REG[2];
     register_static_object(&once_value_25);
   } else fra.me.REG[2] = once_value_25;
@@ -14557,7 +14567,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_26) {
     fra.me.REG[3] = BOX_NativeString("-I");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_26 = fra.me.REG[3];
     register_static_object(&once_value_26);
   } else fra.me.REG[3] = once_value_26;
@@ -14566,7 +14576,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_27) {
     fra.me.REG[3] = BOX_NativeString("--path");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_27 = fra.me.REG[3];
     register_static_object(&once_value_27);
   } else fra.me.REG[3] = once_value_27;
@@ -14578,7 +14588,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_28) {
     fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
     REGB0 = TAG_Int(32);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_28 = fra.me.REG[1];
     register_static_object(&once_value_28);
   } else fra.me.REG[1] = once_value_28;
@@ -14588,7 +14598,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_29) {
     fra.me.REG[3] = BOX_NativeString("--only-metamodel");
     REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_29 = fra.me.REG[3];
     register_static_object(&once_value_29);
   } else fra.me.REG[3] = once_value_29;
@@ -14600,7 +14610,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_30) {
     fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_30 = fra.me.REG[2];
     register_static_object(&once_value_30);
   } else fra.me.REG[2] = once_value_30;
@@ -14610,7 +14620,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_31) {
     fra.me.REG[3] = BOX_NativeString("--only-parse");
     REGB0 = TAG_Int(12);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_31 = fra.me.REG[3];
     register_static_object(&once_value_31);
   } else fra.me.REG[3] = once_value_31;
@@ -14664,7 +14674,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_32) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_32 = fra.me.REG[1];
     register_static_object(&once_value_32);
   } else fra.me.REG[1] = once_value_32;
@@ -14680,7 +14690,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_33) {
     fra.me.REG[1] = BOX_NativeString("Path to libraries for C compiler");
     REGB0 = TAG_Int(32);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_33 = fra.me.REG[1];
     register_static_object(&once_value_33);
   } else fra.me.REG[1] = once_value_33;
@@ -14690,7 +14700,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_34) {
     fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
     REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_34 = fra.me.REG[3];
     register_static_object(&once_value_34);
   } else fra.me.REG[3] = once_value_34;
@@ -14702,7 +14712,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_35) {
     fra.me.REG[2] = BOX_NativeString("Name of library to use for C compiler");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_35 = fra.me.REG[2];
     register_static_object(&once_value_35);
   } else fra.me.REG[2] = once_value_35;
@@ -14712,7 +14722,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_36) {
     fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
     REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_36 = fra.me.REG[3];
     register_static_object(&once_value_36);
   } else fra.me.REG[3] = once_value_36;
@@ -14724,7 +14734,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_37) {
     fra.me.REG[1] = BOX_NativeString("Path to .h files for C compiler");
     REGB0 = TAG_Int(31);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_37 = fra.me.REG[1];
     register_static_object(&once_value_37);
   } else fra.me.REG[1] = once_value_37;
@@ -14734,7 +14744,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_38) {
     fra.me.REG[3] = BOX_NativeString("--cc-header-path");
     REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_38 = fra.me.REG[3];
     register_static_object(&once_value_38);
   } else fra.me.REG[3] = once_value_38;
@@ -14746,7 +14756,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_39) {
     fra.me.REG[2] = BOX_NativeString("rta");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_39 = fra.me.REG[2];
     register_static_object(&once_value_39);
   } else fra.me.REG[2] = once_value_39;
@@ -14756,7 +14766,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_40) {
     fra.me.REG[2] = BOX_NativeString("Use global compilation");
     REGB0 = TAG_Int(22);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_40 = fra.me.REG[2];
     register_static_object(&once_value_40);
   } else fra.me.REG[2] = once_value_40;
@@ -14766,7 +14776,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_41) {
     fra.me.REG[3] = BOX_NativeString("--global");
     REGB0 = TAG_Int(8);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_41 = fra.me.REG[3];
     register_static_object(&once_value_41);
   } else fra.me.REG[3] = once_value_41;
@@ -14778,7 +14788,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_42) {
     fra.me.REG[1] = BOX_NativeString("Do not use SFT optimization");
     REGB0 = TAG_Int(27);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_42 = fra.me.REG[1];
     register_static_object(&once_value_42);
   } else fra.me.REG[1] = once_value_42;
@@ -14788,7 +14798,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_43) {
     fra.me.REG[3] = BOX_NativeString("--no-global-SFT-optimization");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_43 = fra.me.REG[3];
     register_static_object(&once_value_43);
   } else fra.me.REG[3] = once_value_43;
@@ -14800,7 +14810,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_44) {
     fra.me.REG[2] = BOX_NativeString("Do not use dead method removal optimization");
     REGB0 = TAG_Int(43);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_44 = fra.me.REG[2];
     register_static_object(&once_value_44);
   } else fra.me.REG[2] = once_value_44;
@@ -14810,7 +14820,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_45) {
     fra.me.REG[3] = BOX_NativeString("--no-global-DMR-optimization");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_45 = fra.me.REG[3];
     register_static_object(&once_value_45);
   } else fra.me.REG[3] = once_value_45;
@@ -14822,7 +14832,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_46) {
     fra.me.REG[1] = BOX_NativeString("Do not automatically inline getters/setters");
     REGB0 = TAG_Int(43);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_46 = fra.me.REG[1];
     register_static_object(&once_value_46);
   } else fra.me.REG[1] = once_value_46;
@@ -14832,7 +14842,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_47) {
     fra.me.REG[3] = BOX_NativeString("--no-global-get-set-inlining");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_47 = fra.me.REG[3];
     register_static_object(&once_value_47);
   } else fra.me.REG[3] = once_value_47;
@@ -14844,7 +14854,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_48) {
     fra.me.REG[2] = BOX_NativeString("Do not remove get tests outside object initialization");
     REGB0 = TAG_Int(53);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_48 = fra.me.REG[2];
     register_static_object(&once_value_48);
   } else fra.me.REG[2] = once_value_48;
@@ -14854,7 +14864,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_49) {
     fra.me.REG[3] = BOX_NativeString("--no-global-OOIT-optimization");
     REGB0 = TAG_Int(29);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_49 = fra.me.REG[3];
     register_static_object(&once_value_49);
   } else fra.me.REG[3] = once_value_49;
@@ -14866,7 +14876,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_50) {
     fra.me.REG[1] = BOX_NativeString("Do not use a specialized algorithm to find reachable methods from initializers");
     REGB0 = TAG_Int(78);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_50 = fra.me.REG[1];
     register_static_object(&once_value_50);
   } else fra.me.REG[1] = once_value_50;
@@ -14876,7 +14886,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_51) {
     fra.me.REG[3] = BOX_NativeString("--no-global-RFIM-analysis");
     REGB0 = TAG_Int(25);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_51 = fra.me.REG[3];
     register_static_object(&once_value_51);
   } else fra.me.REG[3] = once_value_51;
@@ -14890,7 +14900,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_52) {
     fra.me.REG[1] = BOX_NativeString("none");
     REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_52 = fra.me.REG[1];
     register_static_object(&once_value_52);
   } else fra.me.REG[1] = once_value_52;
@@ -14899,7 +14909,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_53) {
     fra.me.REG[1] = BOX_NativeString("cha");
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_53 = fra.me.REG[1];
     register_static_object(&once_value_53);
   } else fra.me.REG[1] = once_value_53;
@@ -14908,7 +14918,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_54) {
     fra.me.REG[1] = BOX_NativeString("rta");
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_54 = fra.me.REG[1];
     register_static_object(&once_value_54);
   } else fra.me.REG[1] = once_value_54;
@@ -14917,7 +14927,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_55) {
     fra.me.REG[1] = BOX_NativeString("The algorithm to use to build the callgraph");
     REGB0 = TAG_Int(43);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_55 = fra.me.REG[1];
     register_static_object(&once_value_55);
   } else fra.me.REG[1] = once_value_55;
@@ -14928,7 +14938,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_56) {
     fra.me.REG[4] = BOX_NativeString("--global-callgraph");
     REGB1 = TAG_Int(18);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_56 = fra.me.REG[4];
     register_static_object(&once_value_56);
   } else fra.me.REG[4] = once_value_56;
@@ -14940,7 +14950,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_57) {
     fra.me.REG[3] = BOX_NativeString("Output file");
     REGB0 = TAG_Int(11);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_57 = fra.me.REG[3];
     register_static_object(&once_value_57);
   } else fra.me.REG[3] = once_value_57;
@@ -14950,7 +14960,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_58) {
     fra.me.REG[2] = BOX_NativeString("-o");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_58 = fra.me.REG[2];
     register_static_object(&once_value_58);
   } else fra.me.REG[2] = once_value_58;
@@ -14959,7 +14969,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_59) {
     fra.me.REG[2] = BOX_NativeString("--output");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_59 = fra.me.REG[2];
     register_static_object(&once_value_59);
   } else fra.me.REG[2] = once_value_59;
@@ -14971,7 +14981,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_60) {
     fra.me.REG[1] = BOX_NativeString("Optimize compilation");
     REGB0 = TAG_Int(20);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_60 = fra.me.REG[1];
     register_static_object(&once_value_60);
   } else fra.me.REG[1] = once_value_60;
@@ -14981,7 +14991,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_61) {
     fra.me.REG[2] = BOX_NativeString("-O");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_61 = fra.me.REG[2];
     register_static_object(&once_value_61);
   } else fra.me.REG[2] = once_value_61;
@@ -14990,7 +15000,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_62) {
     fra.me.REG[2] = BOX_NativeString("--boost");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_62 = fra.me.REG[2];
     register_static_object(&once_value_62);
   } else fra.me.REG[2] = once_value_62;
@@ -15002,7 +15012,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_63) {
     fra.me.REG[3] = BOX_NativeString("Do not invoke C compiler");
     REGB0 = TAG_Int(24);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_63 = fra.me.REG[3];
     register_static_object(&once_value_63);
   } else fra.me.REG[3] = once_value_63;
@@ -15012,7 +15022,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_64) {
     fra.me.REG[2] = BOX_NativeString("--no-cc");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_64 = fra.me.REG[2];
     register_static_object(&once_value_64);
   } else fra.me.REG[2] = once_value_64;
@@ -15024,7 +15034,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_65) {
     fra.me.REG[1] = BOX_NativeString("Do not invoke C linker");
     REGB0 = TAG_Int(22);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_65 = fra.me.REG[1];
     register_static_object(&once_value_65);
   } else fra.me.REG[1] = once_value_65;
@@ -15034,7 +15044,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_66) {
     fra.me.REG[2] = BOX_NativeString("--cc-no-link");
     REGB0 = TAG_Int(12);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_66 = fra.me.REG[2];
     register_static_object(&once_value_66);
   } else fra.me.REG[2] = once_value_66;
@@ -15046,7 +15056,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_67) {
     fra.me.REG[3] = BOX_NativeString("NIT C library directory");
     REGB0 = TAG_Int(23);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_67 = fra.me.REG[3];
     register_static_object(&once_value_67);
   } else fra.me.REG[3] = once_value_67;
@@ -15056,7 +15066,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_68) {
     fra.me.REG[2] = BOX_NativeString("--clibdir");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_68 = fra.me.REG[2];
     register_static_object(&once_value_68);
   } else fra.me.REG[2] = once_value_68;
@@ -15068,7 +15078,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_69) {
     fra.me.REG[1] = BOX_NativeString("NIT tools directory");
     REGB0 = TAG_Int(19);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_69 = fra.me.REG[1];
     register_static_object(&once_value_69);
   } else fra.me.REG[1] = once_value_69;
@@ -15078,7 +15088,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_70) {
     fra.me.REG[2] = BOX_NativeString("--bindir");
     REGB0 = TAG_Int(8);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_70 = fra.me.REG[2];
     register_static_object(&once_value_70);
   } else fra.me.REG[2] = once_value_70;
@@ -15090,7 +15100,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_71) {
     fra.me.REG[3] = BOX_NativeString("Intermediate compilation directory");
     REGB0 = TAG_Int(34);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_71 = fra.me.REG[3];
     register_static_object(&once_value_71);
   } else fra.me.REG[3] = once_value_71;
@@ -15100,7 +15110,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_72) {
     fra.me.REG[2] = BOX_NativeString("--compdir");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_72 = fra.me.REG[2];
     register_static_object(&once_value_72);
   } else fra.me.REG[2] = once_value_72;
@@ -15112,7 +15122,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_73) {
     fra.me.REG[1] = BOX_NativeString("Append prefix to file extension");
     REGB0 = TAG_Int(31);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_73 = fra.me.REG[1];
     register_static_object(&once_value_73);
   } else fra.me.REG[1] = once_value_73;
@@ -15122,7 +15132,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_74) {
     fra.me.REG[2] = BOX_NativeString("-p");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_74 = fra.me.REG[2];
     register_static_object(&once_value_74);
   } else fra.me.REG[2] = once_value_74;
@@ -15131,7 +15141,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_75) {
     fra.me.REG[2] = BOX_NativeString("--extension-prefix");
     REGB0 = TAG_Int(18);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_75 = fra.me.REG[2];
     register_static_object(&once_value_75);
   } else fra.me.REG[2] = once_value_75;
@@ -15145,7 +15155,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_76) {
     fra.me.REG[1] = BOX_NativeString("none");
     REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_76 = fra.me.REG[1];
     register_static_object(&once_value_76);
   } else fra.me.REG[1] = once_value_76;
@@ -15154,7 +15164,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_77) {
     fra.me.REG[1] = BOX_NativeString("C");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_77 = fra.me.REG[1];
     register_static_object(&once_value_77);
   } else fra.me.REG[1] = once_value_77;
@@ -15163,7 +15173,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_78) {
     fra.me.REG[1] = BOX_NativeString("icode");
     REGB0 = TAG_Int(5);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_78 = fra.me.REG[1];
     register_static_object(&once_value_78);
   } else fra.me.REG[1] = once_value_78;
@@ -15172,7 +15182,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_79) {
     fra.me.REG[1] = BOX_NativeString("The type of code we want to be generated");
     REGB0 = TAG_Int(40);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_79 = fra.me.REG[1];
     register_static_object(&once_value_79);
   } else fra.me.REG[1] = once_value_79;
@@ -15183,7 +15193,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   if (!once_value_80) {
     fra.me.REG[4] = BOX_NativeString("--output-format");
     REGB1 = TAG_Int(15);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_80 = fra.me.REG[4];
     register_static_object(&once_value_80);
   } else fra.me.REG[4] = once_value_80;
@@ -15553,16 +15563,6 @@ const classtable_elt_t VFT_toolcontext___ToolContext[141] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ToolContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -15570,8 +15570,7 @@ const classtable_elt_t VFT_toolcontext___ToolContext[141] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -15579,6 +15578,17 @@ const classtable_elt_t VFT_toolcontext___ToolContext[141] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ToolContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -15829,7 +15839,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("logs");
     REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -15848,7 +15858,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("Show warnings");
     REGB0 = TAG_Int(13);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -15858,7 +15868,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("-W");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -15867,7 +15877,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_4) {
     fra.me.REG[3] = BOX_NativeString("--warn");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_4 = fra.me.REG[3];
     register_static_object(&once_value_4);
   } else fra.me.REG[3] = once_value_4;
@@ -15879,7 +15889,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("Do not show warnings");
     REGB0 = TAG_Int(20);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -15889,7 +15899,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("-q");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_6 = fra.me.REG[3];
     register_static_object(&once_value_6);
   } else fra.me.REG[3] = once_value_6;
@@ -15898,7 +15908,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_7) {
     fra.me.REG[3] = BOX_NativeString("--quiet");
     REGB0 = TAG_Int(7);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_7 = fra.me.REG[3];
     register_static_object(&once_value_7);
   } else fra.me.REG[3] = once_value_7;
@@ -15910,7 +15920,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_8) {
     fra.me.REG[1] = BOX_NativeString("Generate various log files");
     REGB0 = TAG_Int(26);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_8 = fra.me.REG[1];
     register_static_object(&once_value_8);
   } else fra.me.REG[1] = once_value_8;
@@ -15920,7 +15930,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_9) {
     fra.me.REG[3] = BOX_NativeString("--log");
     REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_9 = fra.me.REG[3];
     register_static_object(&once_value_9);
   } else fra.me.REG[3] = once_value_9;
@@ -15932,7 +15942,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_10 = fra.me.REG[2];
     register_static_object(&once_value_10);
   } else fra.me.REG[2] = once_value_10;
@@ -15942,7 +15952,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_11) {
     fra.me.REG[3] = BOX_NativeString("--log-dir");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_11 = fra.me.REG[3];
     register_static_object(&once_value_11);
   } else fra.me.REG[3] = once_value_11;
@@ -15954,7 +15964,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_12) {
     fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
     REGB0 = TAG_Int(23);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_12 = fra.me.REG[1];
     register_static_object(&once_value_12);
   } else fra.me.REG[1] = once_value_12;
@@ -15964,7 +15974,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_13) {
     fra.me.REG[3] = BOX_NativeString("-h");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_13 = fra.me.REG[3];
     register_static_object(&once_value_13);
   } else fra.me.REG[3] = once_value_13;
@@ -15973,7 +15983,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_14) {
     fra.me.REG[3] = BOX_NativeString("-?");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_14 = fra.me.REG[3];
     register_static_object(&once_value_14);
   } else fra.me.REG[3] = once_value_14;
@@ -15982,7 +15992,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_15) {
     fra.me.REG[3] = BOX_NativeString("--help");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_15 = fra.me.REG[3];
     register_static_object(&once_value_15);
   } else fra.me.REG[3] = once_value_15;
@@ -15994,7 +16004,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_16) {
     fra.me.REG[2] = BOX_NativeString("Show version and exit");
     REGB0 = TAG_Int(21);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_16 = fra.me.REG[2];
     register_static_object(&once_value_16);
   } else fra.me.REG[2] = once_value_16;
@@ -16004,7 +16014,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_17) {
     fra.me.REG[3] = BOX_NativeString("--version");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_17 = fra.me.REG[3];
     register_static_object(&once_value_17);
   } else fra.me.REG[3] = once_value_17;
@@ -16016,7 +16026,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_18) {
     fra.me.REG[1] = BOX_NativeString("Verbose");
     REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_18 = fra.me.REG[1];
     register_static_object(&once_value_18);
   } else fra.me.REG[1] = once_value_18;
@@ -16026,7 +16036,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_19) {
     fra.me.REG[3] = BOX_NativeString("-v");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_19 = fra.me.REG[3];
     register_static_object(&once_value_19);
   } else fra.me.REG[3] = once_value_19;
@@ -16035,7 +16045,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_20) {
     fra.me.REG[3] = BOX_NativeString("--verbose");
     REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_20 = fra.me.REG[3];
     register_static_object(&once_value_20);
   } else fra.me.REG[3] = once_value_20;
@@ -16047,7 +16057,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_21) {
     fra.me.REG[2] = BOX_NativeString("Stop on first error");
     REGB0 = TAG_Int(19);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_21 = fra.me.REG[2];
     register_static_object(&once_value_21);
   } else fra.me.REG[2] = once_value_21;
@@ -16057,7 +16067,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_22) {
     fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
     REGB0 = TAG_Int(21);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_22 = fra.me.REG[3];
     register_static_object(&once_value_22);
   } else fra.me.REG[3] = once_value_22;
@@ -16069,7 +16079,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_23) {
     fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
     REGB0 = TAG_Int(47);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_23 = fra.me.REG[1];
     register_static_object(&once_value_23);
   } else fra.me.REG[1] = once_value_23;
@@ -16079,7 +16089,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_24) {
     fra.me.REG[3] = BOX_NativeString("--no-color");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_24 = fra.me.REG[3];
     register_static_object(&once_value_24);
   } else fra.me.REG[3] = once_value_24;
@@ -16100,7 +16110,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_25) {
     fra.me.REG[2] = BOX_NativeString("Set include path for loaders (may be used more than once)");
     REGB0 = TAG_Int(57);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_25 = fra.me.REG[2];
     register_static_object(&once_value_25);
   } else fra.me.REG[2] = once_value_25;
@@ -16110,7 +16120,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_26) {
     fra.me.REG[3] = BOX_NativeString("-I");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_26 = fra.me.REG[3];
     register_static_object(&once_value_26);
   } else fra.me.REG[3] = once_value_26;
@@ -16119,7 +16129,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_27) {
     fra.me.REG[3] = BOX_NativeString("--path");
     REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_27 = fra.me.REG[3];
     register_static_object(&once_value_27);
   } else fra.me.REG[3] = once_value_27;
@@ -16131,7 +16141,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_28) {
     fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
     REGB0 = TAG_Int(32);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_28 = fra.me.REG[1];
     register_static_object(&once_value_28);
   } else fra.me.REG[1] = once_value_28;
@@ -16141,7 +16151,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_29) {
     fra.me.REG[3] = BOX_NativeString("--only-metamodel");
     REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_29 = fra.me.REG[3];
     register_static_object(&once_value_29);
   } else fra.me.REG[3] = once_value_29;
@@ -16153,7 +16163,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_30) {
     fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_30 = fra.me.REG[2];
     register_static_object(&once_value_30);
   } else fra.me.REG[2] = once_value_30;
@@ -16163,7 +16173,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_31) {
     fra.me.REG[3] = BOX_NativeString("--only-parse");
     REGB0 = TAG_Int(12);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_31 = fra.me.REG[3];
     register_static_object(&once_value_31);
   } else fra.me.REG[3] = once_value_31;
@@ -16217,7 +16227,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_32) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_32 = fra.me.REG[1];
     register_static_object(&once_value_32);
   } else fra.me.REG[1] = once_value_32;
@@ -16233,7 +16243,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_33) {
     fra.me.REG[1] = BOX_NativeString("Path to libraries for C compiler");
     REGB0 = TAG_Int(32);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_33 = fra.me.REG[1];
     register_static_object(&once_value_33);
   } else fra.me.REG[1] = once_value_33;
@@ -16243,7 +16253,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_34) {
     fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
     REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_34 = fra.me.REG[3];
     register_static_object(&once_value_34);
   } else fra.me.REG[3] = once_value_34;
@@ -16255,7 +16265,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_35) {
     fra.me.REG[2] = BOX_NativeString("Name of library to use for C compiler");
     REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_35 = fra.me.REG[2];
     register_static_object(&once_value_35);
   } else fra.me.REG[2] = once_value_35;
@@ -16265,7 +16275,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_36) {
     fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
     REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_36 = fra.me.REG[3];
     register_static_object(&once_value_36);
   } else fra.me.REG[3] = once_value_36;
@@ -16277,7 +16287,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_37) {
     fra.me.REG[1] = BOX_NativeString("Path to .h files for C compiler");
     REGB0 = TAG_Int(31);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_37 = fra.me.REG[1];
     register_static_object(&once_value_37);
   } else fra.me.REG[1] = once_value_37;
@@ -16287,7 +16297,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_38) {
     fra.me.REG[3] = BOX_NativeString("--cc-header-path");
     REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_38 = fra.me.REG[3];
     register_static_object(&once_value_38);
   } else fra.me.REG[3] = once_value_38;
@@ -16299,7 +16309,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_39) {
     fra.me.REG[2] = BOX_NativeString("rta");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_39 = fra.me.REG[2];
     register_static_object(&once_value_39);
   } else fra.me.REG[2] = once_value_39;
@@ -16309,7 +16319,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_40) {
     fra.me.REG[2] = BOX_NativeString("Use global compilation");
     REGB0 = TAG_Int(22);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_40 = fra.me.REG[2];
     register_static_object(&once_value_40);
   } else fra.me.REG[2] = once_value_40;
@@ -16319,7 +16329,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_41) {
     fra.me.REG[3] = BOX_NativeString("--global");
     REGB0 = TAG_Int(8);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_41 = fra.me.REG[3];
     register_static_object(&once_value_41);
   } else fra.me.REG[3] = once_value_41;
@@ -16331,7 +16341,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_42) {
     fra.me.REG[1] = BOX_NativeString("Do not use SFT optimization");
     REGB0 = TAG_Int(27);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_42 = fra.me.REG[1];
     register_static_object(&once_value_42);
   } else fra.me.REG[1] = once_value_42;
@@ -16341,7 +16351,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_43) {
     fra.me.REG[3] = BOX_NativeString("--no-global-SFT-optimization");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_43 = fra.me.REG[3];
     register_static_object(&once_value_43);
   } else fra.me.REG[3] = once_value_43;
@@ -16353,7 +16363,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_44) {
     fra.me.REG[2] = BOX_NativeString("Do not use dead method removal optimization");
     REGB0 = TAG_Int(43);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_44 = fra.me.REG[2];
     register_static_object(&once_value_44);
   } else fra.me.REG[2] = once_value_44;
@@ -16363,7 +16373,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_45) {
     fra.me.REG[3] = BOX_NativeString("--no-global-DMR-optimization");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_45 = fra.me.REG[3];
     register_static_object(&once_value_45);
   } else fra.me.REG[3] = once_value_45;
@@ -16375,7 +16385,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_46) {
     fra.me.REG[1] = BOX_NativeString("Do not automatically inline getters/setters");
     REGB0 = TAG_Int(43);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_46 = fra.me.REG[1];
     register_static_object(&once_value_46);
   } else fra.me.REG[1] = once_value_46;
@@ -16385,7 +16395,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_47) {
     fra.me.REG[3] = BOX_NativeString("--no-global-get-set-inlining");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_47 = fra.me.REG[3];
     register_static_object(&once_value_47);
   } else fra.me.REG[3] = once_value_47;
@@ -16397,7 +16407,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_48) {
     fra.me.REG[2] = BOX_NativeString("Do not remove get tests outside object initialization");
     REGB0 = TAG_Int(53);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_48 = fra.me.REG[2];
     register_static_object(&once_value_48);
   } else fra.me.REG[2] = once_value_48;
@@ -16407,7 +16417,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_49) {
     fra.me.REG[3] = BOX_NativeString("--no-global-OOIT-optimization");
     REGB0 = TAG_Int(29);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_49 = fra.me.REG[3];
     register_static_object(&once_value_49);
   } else fra.me.REG[3] = once_value_49;
@@ -16419,7 +16429,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_50) {
     fra.me.REG[1] = BOX_NativeString("Do not use a specialized algorithm to find reachable methods from initializers");
     REGB0 = TAG_Int(78);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_50 = fra.me.REG[1];
     register_static_object(&once_value_50);
   } else fra.me.REG[1] = once_value_50;
@@ -16429,7 +16439,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_51) {
     fra.me.REG[3] = BOX_NativeString("--no-global-RFIM-analysis");
     REGB0 = TAG_Int(25);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_51 = fra.me.REG[3];
     register_static_object(&once_value_51);
   } else fra.me.REG[3] = once_value_51;
@@ -16443,7 +16453,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_52) {
     fra.me.REG[1] = BOX_NativeString("none");
     REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_52 = fra.me.REG[1];
     register_static_object(&once_value_52);
   } else fra.me.REG[1] = once_value_52;
@@ -16452,7 +16462,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_53) {
     fra.me.REG[1] = BOX_NativeString("cha");
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_53 = fra.me.REG[1];
     register_static_object(&once_value_53);
   } else fra.me.REG[1] = once_value_53;
@@ -16461,7 +16471,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_54) {
     fra.me.REG[1] = BOX_NativeString("rta");
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_54 = fra.me.REG[1];
     register_static_object(&once_value_54);
   } else fra.me.REG[1] = once_value_54;
@@ -16470,7 +16480,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_55) {
     fra.me.REG[1] = BOX_NativeString("The algorithm to use to build the callgraph");
     REGB0 = TAG_Int(43);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_55 = fra.me.REG[1];
     register_static_object(&once_value_55);
   } else fra.me.REG[1] = once_value_55;
@@ -16481,7 +16491,7 @@ void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0){
   if (!once_value_56) {
     fra.me.REG[4] = BOX_NativeString("--global-callgraph");
     REGB1 = TAG_Int(18);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
     once_value_56 = fra.me.REG[4];
     register_static_object(&once_value_56);
   } else fra.me.REG[4] = once_value_56;
@@ -16801,16 +16811,6 @@ const classtable_elt_t VFT_standard___kernel___Sys[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Sys < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -16818,8 +16818,7 @@ const classtable_elt_t VFT_standard___kernel___Sys[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -16827,6 +16826,17 @@ const classtable_elt_t VFT_standard___kernel___Sys[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Sys___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Sys < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -16834,14 +16844,14 @@ const classtable_elt_t VFT_standard___kernel___Sys[60] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___time___Sys___nanosleep},
-  {(bigint) 1 /* 51: Sys < Sys: superclass init_table position */},
-  {(bigint) nitc___Sys___main},
-  {(bigint) standard___kernel___Sys___init},
-  {(bigint) standard___exec___Sys___system},
   {(bigint) standard___string___Sys___program_name},
   {(bigint) standard___string___Sys___init_args},
   {(bigint) standard___string___Sys___native_argc},
   {(bigint) standard___string___Sys___native_argv},
+  {(bigint) 1 /* 55: Sys < Sys: superclass init_table position */},
+  {(bigint) nitc___Sys___main},
+  {(bigint) standard___kernel___Sys___init},
+  {(bigint) standard___exec___Sys___system},
   {(bigint) standard___gc___Sys___force_garbage_collection},
 };
 /* 0: Pointer to the classtable */
@@ -16903,11 +16913,11 @@ val_t NEW_Sys_standard___kernel___Sys___init(void){
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_standard___kernel___Bool[51] = {
-  {(bigint) -13 /* 0: Identity */},
+  {(bigint) -9 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Bool" /* 2: Class Name */},
   {(bigint) 3 /* 3: Bool < Object: superclass typecheck marker */},
-  {(bigint) -13 /* 4: Bool < Bool: superclass typecheck marker */},
+  {(bigint) -9 /* 4: Bool < Bool: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16921,16 +16931,6 @@ const classtable_elt_t VFT_standard___kernel___Bool[51] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Bool < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Bool___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Bool_____eqeq},
-  {(bigint) standard___kernel___Bool_____neq},
-  {(bigint) standard___kernel___Bool___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -16938,8 +16938,7 @@ const classtable_elt_t VFT_standard___kernel___Bool[51] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Bool___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -16947,6 +16946,17 @@ const classtable_elt_t VFT_standard___kernel___Bool[51] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Bool___hash},
+  {(bigint) 0 /* 33: Bool < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Bool___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Bool_____eqeq},
+  {(bigint) standard___kernel___Bool_____neq},
+  {(bigint) standard___kernel___Bool___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -16958,11 +16968,11 @@ const classtable_elt_t VFT_standard___kernel___Bool[51] = {
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
 const classtable_elt_t VFT_standard___kernel___Float[75] = {
-  {(bigint) -9 /* 0: Identity */},
+  {(bigint) -5 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Float" /* 2: Class Name */},
   {(bigint) 3 /* 3: Float < Object: superclass typecheck marker */},
-  {(bigint) -9 /* 4: Float < Float: superclass typecheck marker */},
+  {(bigint) -5 /* 4: Float < Float: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16976,16 +16986,6 @@ const classtable_elt_t VFT_standard___kernel___Float[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Float < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Float___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Float___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -16993,8 +16993,7 @@ const classtable_elt_t VFT_standard___kernel___Float[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Float___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17002,6 +17001,17 @@ const classtable_elt_t VFT_standard___kernel___Float[75] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Float < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Float___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Float___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17044,15 +17054,15 @@ val_t BOX_Float(float val) {
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_standard___kernel___Int[95] = {
-  {(bigint) -29 /* 0: Identity */},
+const classtable_elt_t VFT_standard___kernel___Int[97] = {
+  {(bigint) -37 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Int" /* 2: Class Name */},
   {(bigint) 3 /* 3: Int < Object: superclass typecheck marker */},
   {(bigint) 3243 /* 4: Int < Discrete: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 275 /* 6: Int < Comparable: superclass typecheck marker */},
-  {(bigint) -29 /* 7: Int < Int: superclass typecheck marker */},
+  {(bigint) -37 /* 7: Int < Int: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17063,16 +17073,6 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: Int < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Int___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Int_____eqeq},
-  {(bigint) standard___kernel___Int_____neq},
-  {(bigint) standard___kernel___Int___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17080,8 +17080,7 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Int___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17089,6 +17088,17 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Int___hash},
+  {(bigint) 2 /* 33: Int < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Int___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Int_____eqeq},
+  {(bigint) standard___kernel___Int_____neq},
+  {(bigint) standard___kernel___Int___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17103,7 +17113,7 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) 1 /* 57: Int < Comparable: superclass init_table position */},
-  {(bigint) -29 /* 58: VT Int::OTHER : id of Int */},
+  {(bigint) -37 /* 58: VT Int::OTHER : id of Int */},
   {(bigint) 7 /* 59: VT Int::OTHER : color of Int */},
   {(bigint) standard___kernel___Int_____l},
   {(bigint) standard___kernel___Int_____leq},
@@ -17120,9 +17130,10 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
   {(bigint) standard___kernel___Int_____minus},
   {(bigint) standard___kernel___Int___distance},
   {(bigint) standard___string___Int___fill_buffer},
+  {(bigint) standard___string___Int___native_int_to_s},
   {(bigint) standard___string___Int___to_hex},
   {(bigint) standard___string___Int___to_base},
-  {(bigint) 3 /* 77: Int < Int: superclass init_table position */},
+  {(bigint) 3 /* 78: Int < Int: superclass init_table position */},
   {(bigint) standard___kernel___Int___unary__minus},
   {(bigint) standard___kernel___Int_____star},
   {(bigint) standard___kernel___Int_____slash},
@@ -17132,6 +17143,7 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
   {(bigint) standard___kernel___Int___to_f},
   {(bigint) standard___kernel___Int___ascii},
   {(bigint) standard___kernel___Int___digit_count},
+  {(bigint) standard___kernel___Int___digit_count_base_10},
   {(bigint) standard___kernel___Int___to_c},
   {(bigint) standard___kernel___Int___enumerate_to},
   {(bigint) standard___kernel___Int___enumerate_before},
@@ -17144,14 +17156,14 @@ const classtable_elt_t VFT_standard___kernel___Int[95] = {
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
 const classtable_elt_t VFT_standard___kernel___Char[86] = {
-  {(bigint) -33 /* 0: Identity */},
+  {(bigint) -41 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Char" /* 2: Class Name */},
   {(bigint) 3 /* 3: Char < Object: superclass typecheck marker */},
   {(bigint) 3243 /* 4: Char < Discrete: superclass typecheck marker */},
   {(bigint) 103 /* 5: Char < Pattern: superclass typecheck marker */},
   {(bigint) 275 /* 6: Char < Comparable: superclass typecheck marker */},
-  {(bigint) -33 /* 7: Char < Char: superclass typecheck marker */},
+  {(bigint) -41 /* 7: Char < Char: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17162,16 +17174,6 @@ const classtable_elt_t VFT_standard___kernel___Char[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Char < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Char___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Char_____eqeq},
-  {(bigint) standard___kernel___Char_____neq},
-  {(bigint) standard___kernel___Char___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17179,8 +17181,7 @@ const classtable_elt_t VFT_standard___kernel___Char[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Char___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17188,6 +17189,17 @@ const classtable_elt_t VFT_standard___kernel___Char[86] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Char___hash},
+  {(bigint) 1 /* 33: Char < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Char___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Char_____eqeq},
+  {(bigint) standard___kernel___Char_____neq},
+  {(bigint) standard___kernel___Char___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17202,7 +17214,7 @@ const classtable_elt_t VFT_standard___kernel___Char[86] = {
   {(bigint) standard___string_search___Pattern___search_all_in},
   {(bigint) standard___string_search___Pattern___split_in},
   {(bigint) 3 /* 57: Char < Comparable: superclass init_table position */},
-  {(bigint) -33 /* 58: VT Char::OTHER : id of Char */},
+  {(bigint) -41 /* 58: VT Char::OTHER : id of Char */},
   {(bigint) 7 /* 59: VT Char::OTHER : color of Char */},
   {(bigint) standard___kernel___Char_____l},
   {(bigint) standard___kernel___Char_____leq},
@@ -17252,16 +17264,6 @@ const classtable_elt_t VFT_standard___kernel___Pointer[51] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Pointer < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17269,8 +17271,7 @@ const classtable_elt_t VFT_standard___kernel___Pointer[51] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17278,6 +17279,17 @@ const classtable_elt_t VFT_standard___kernel___Pointer[51] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Pointer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17297,7 +17309,7 @@ val_t BOX_Pointer(void * val) {
   return OBJ2VAL(box);
 }
 const classtable_elt_t VFT_standard___collection___abstract_collection___Container[84] = {
-  {(bigint) 3267 /* 0: Identity */},
+  {(bigint) 3271 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Container" /* 2: Class Name */},
   {(bigint) 3 /* 3: Container < Object: superclass typecheck marker */},
@@ -17305,7 +17317,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) 283 /* 7: Container < Collection: superclass typecheck marker */},
-  {(bigint) 3267 /* 8: Container < Container: superclass typecheck marker */},
+  {(bigint) 3271 /* 8: Container < Container: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17315,16 +17327,6 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Container < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17332,8 +17334,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17341,6 +17342,17 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: Container < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17427,7 +17439,7 @@ val_t NEW_Container_standard___collection___abstract_collection___Container___in
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 158;
+  fra.me.line = 181;
   fra.me.meth = LOCATE_NEW_Container_standard___collection___abstract_collection___Container___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17435,7 +17447,7 @@ val_t NEW_Container_standard___collection___abstract_collection___Container___in
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:158 */
+  /* ../lib/standard/collection/abstract_collection.nit:181 */
   fra.me.REG[1] = NEW_standard___collection___abstract_collection___Container();
   INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(fra.me.REG[1]);
   standard___collection___abstract_collection___Container___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -17444,12 +17456,12 @@ val_t NEW_Container_standard___collection___abstract_collection___Container___in
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___collection___abstract_collection___ContainerIterator[57] = {
-  {(bigint) 3271 /* 0: Identity */},
+  {(bigint) 3267 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ContainerIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: ContainerIterator < Object: superclass typecheck marker */},
   {(bigint) 187 /* 4: ContainerIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3271 /* 5: ContainerIterator < ContainerIterator: superclass typecheck marker */},
+  {(bigint) 3267 /* 5: ContainerIterator < ContainerIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17462,16 +17474,6 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ContainerIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17479,8 +17481,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17488,6 +17489,17 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ContainerIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17520,7 +17532,7 @@ void INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIte
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:174 */
+  /* ../lib/standard/collection/abstract_collection.nit:197 */
   REGB0 = TAG_Bool(1);
   ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -17567,7 +17579,7 @@ val_t NEW_ContainerIterator_standard___collection___abstract_collection___Contai
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 172;
+  fra.me.line = 195;
   fra.me.meth = LOCATE_NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17575,7 +17587,7 @@ val_t NEW_ContainerIterator_standard___collection___abstract_collection___Contai
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:172 */
+  /* ../lib/standard/collection/abstract_collection.nit:195 */
   fra.me.REG[1] = NEW_standard___collection___abstract_collection___ContainerIterator();
   INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
   standard___collection___abstract_collection___ContainerIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -17602,16 +17614,6 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeys
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MapKeysIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17619,8 +17621,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeys
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17628,6 +17629,17 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeys
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MapKeysIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17713,12 +17725,12 @@ val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysI
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___collection___abstract_collection___MapValuesIterator[59] = {
-  {(bigint) 3075 /* 0: Identity */},
+  {(bigint) 3079 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MapValuesIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: MapValuesIterator < Object: superclass typecheck marker */},
   {(bigint) 187 /* 4: MapValuesIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3075 /* 5: MapValuesIterator < MapValuesIterator: superclass typecheck marker */},
+  {(bigint) 3079 /* 5: MapValuesIterator < MapValuesIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17731,16 +17743,6 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapValu
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MapValuesIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17748,8 +17750,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapValu
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17757,6 +17758,17 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapValu
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MapValuesIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17860,16 +17872,6 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: CoupleMapIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -17877,8 +17879,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -17886,6 +17887,17 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: CoupleMapIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -17953,7 +17965,7 @@ val_t NEW_CoupleMapIterator_standard___collection___abstract_collection___Couple
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 504;
+  fra.me.line = 536;
   fra.me.meth = LOCATE_NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17961,7 +17973,7 @@ val_t NEW_CoupleMapIterator_standard___collection___abstract_collection___Couple
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:504 */
+  /* ../lib/standard/collection/abstract_collection.nit:536 */
   fra.me.REG[1] = NEW_standard___collection___abstract_collection___CoupleMapIterator();
   INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator(fra.me.REG[1]);
   standard___collection___abstract_collection___CoupleMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -17988,16 +18000,6 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Couple < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18005,8 +18007,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18014,6 +18015,17 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Couple < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18073,7 +18085,7 @@ val_t NEW_Couple_standard___collection___abstract_collection___Couple___init(val
   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 = 518;
+  fra.me.line = 550;
   fra.me.meth = LOCATE_NEW_Couple_standard___collection___abstract_collection___Couple___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -18083,7 +18095,7 @@ val_t NEW_Couple_standard___collection___abstract_collection___Couple___init(val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:518 */
+  /* ../lib/standard/collection/abstract_collection.nit:550 */
   fra.me.REG[2] = NEW_standard___collection___abstract_collection___Couple();
   INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple(fra.me.REG[2]);
   standard___collection___abstract_collection___Couple___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -18110,16 +18122,6 @@ const classtable_elt_t VFT_standard___collection___range___Range[85] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Range < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18127,8 +18129,7 @@ const classtable_elt_t VFT_standard___collection___range___Range[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18136,6 +18137,17 @@ const classtable_elt_t VFT_standard___collection___range___Range[85] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: Range < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18305,16 +18317,6 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: IteratorRange < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18322,8 +18324,7 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18331,6 +18332,17 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[57] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: IteratorRange < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18439,16 +18451,6 @@ const classtable_elt_t VFT_standard___collection___list___List[120] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 19: List < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18456,8 +18458,7 @@ const classtable_elt_t VFT_standard___collection___list___List[120] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18465,6 +18466,17 @@ const classtable_elt_t VFT_standard___collection___list___List[120] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: List < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18644,16 +18656,6 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ListIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18661,8 +18663,7 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18670,6 +18671,17 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ListIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18774,7 +18786,7 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) 283 /* 7: ListNode < Collection: superclass typecheck marker */},
-  {(bigint) 3267 /* 8: ListNode < Container: superclass typecheck marker */},
+  {(bigint) 3271 /* 8: ListNode < Container: superclass typecheck marker */},
   {(bigint) 3539 /* 9: ListNode < ListNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18784,16 +18796,6 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ListNode < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18801,8 +18803,7 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[90] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18810,6 +18811,17 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[90] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ListNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18921,11 +18933,11 @@ val_t NEW_ListNode_standard___collection___list___ListNode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___collection___array___Array[121] = {
-  {(bigint) 4827 /* 0: Identity */},
+  {(bigint) 4831 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Array" /* 2: Class Name */},
   {(bigint) 3 /* 3: Array < Object: superclass typecheck marker */},
-  {(bigint) 4827 /* 4: Array < Array: superclass typecheck marker */},
+  {(bigint) 4831 /* 4: Array < Array: superclass typecheck marker */},
   {(bigint) 303 /* 5: Array < ArrayCapable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 283 /* 7: Array < Collection: superclass typecheck marker */},
@@ -18939,16 +18951,6 @@ const classtable_elt_t VFT_standard___collection___array___Array[121] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 7 /* 19: Array < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___collection___array___AbstractArrayRead___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -18956,8 +18958,7 @@ const classtable_elt_t VFT_standard___collection___array___Array[121] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Array___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -18965,6 +18966,17 @@ const classtable_elt_t VFT_standard___collection___array___Array[121] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 7 /* 33: Array < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___collection___array___AbstractArrayRead___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -18980,9 +18992,9 @@ const classtable_elt_t VFT_standard___collection___array___Array[121] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 8 /* 59: Array < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
   {0} /* Class Hole :( */,
+  {(bigint) 8 /* 60: Array < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19066,10 +19078,10 @@ void INIT_ATTRIBUTES__standard___collection___array___Array(val_t p0){
   /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:370 */
+  /* ../lib/standard/collection/array.nit:371 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:378 */
+  /* ../lib/standard/collection/array.nit:379 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -19117,14 +19129,14 @@ val_t NEW_Array_standard___collection___array___Array___with_capacity(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 338;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/collection/array.nit:338 */
+  /* ../lib/standard/collection/array.nit:339 */
   fra.me.REG[0] = NEW_standard___collection___array___Array();
   INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[0]);
   standard___collection___array___Array___with_capacity(fra.me.REG[0], REGB0, init_table);
@@ -19139,13 +19151,13 @@ val_t NEW_Array_standard___collection___array___Array___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 317;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/collection/array.nit:317 */
+  /* ../lib/standard/collection/array.nit:318 */
   fra.me.REG[0] = NEW_standard___collection___array___Array();
   INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[0]);
   standard___collection___array___Array___init(fra.me.REG[0], init_table);
@@ -19161,7 +19173,7 @@ val_t NEW_Array_standard___collection___array___Array___filled_with(val_t p0, va
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 347;
+  fra.me.line = 348;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___filled_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19170,7 +19182,7 @@ val_t NEW_Array_standard___collection___array___Array___filled_with(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:347 */
+  /* ../lib/standard/collection/array.nit:348 */
   fra.me.REG[1] = NEW_standard___collection___array___Array();
   INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
   standard___collection___array___Array___filled_with(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
@@ -19185,7 +19197,7 @@ val_t NEW_Array_standard___collection___array___Array___with_items(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 330;
+  fra.me.line = 331;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19193,7 +19205,7 @@ val_t NEW_Array_standard___collection___array___Array___with_items(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:330 */
+  /* ../lib/standard/collection/array.nit:331 */
   fra.me.REG[1] = NEW_standard___collection___array___Array();
   INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
   standard___collection___array___Array___with_items(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -19208,7 +19220,7 @@ val_t NEW_Array_standard___collection___array___Array___from(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 324;
+  fra.me.line = 325;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19216,7 +19228,7 @@ val_t NEW_Array_standard___collection___array___Array___from(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:324 */
+  /* ../lib/standard/collection/array.nit:325 */
   fra.me.REG[1] = NEW_standard___collection___array___Array();
   INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
   standard___collection___array___Array___from(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -19232,7 +19244,7 @@ val_t NEW_Array_standard___collection___array___Array___with_native(val_t p0, va
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 361;
+  fra.me.line = 362;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19241,7 +19253,7 @@ val_t NEW_Array_standard___collection___array___Array___with_native(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:361 */
+  /* ../lib/standard/collection/array.nit:362 */
   fra.me.REG[1] = NEW_standard___collection___array___Array();
   INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
   standard___collection___array___Array___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
@@ -19268,16 +19280,6 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ArrayIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -19285,8 +19287,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19294,6 +19295,17 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ArrayIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -19328,7 +19340,7 @@ void INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(val_t p0){
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:451 */
+  /* ../lib/standard/collection/array.nit:452 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -19375,7 +19387,7 @@ val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(val
   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 = 445;
+  fra.me.line = 446;
   fra.me.meth = LOCATE_NEW_ArrayIterator_standard___collection___array___ArrayIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19383,7 +19395,7 @@ val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(val
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:445 */
+  /* ../lib/standard/collection/array.nit:446 */
   fra.me.REG[1] = NEW_standard___collection___array___ArrayIterator();
   INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(fra.me.REG[1]);
   standard___collection___array___ArrayIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -19410,16 +19422,6 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ArraySet < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -19427,8 +19429,7 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19436,6 +19437,17 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ArraySet < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -19544,13 +19556,13 @@ val_t NEW_ArraySet_standard___collection___array___ArraySet___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 499;
+  fra.me.line = 500;
   fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/collection/array.nit:499 */
+  /* ../lib/standard/collection/array.nit:500 */
   fra.me.REG[0] = NEW_standard___collection___array___ArraySet();
   INIT_ATTRIBUTES__standard___collection___array___ArraySet(fra.me.REG[0]);
   standard___collection___array___ArraySet___init(fra.me.REG[0], init_table);
@@ -19566,14 +19578,14 @@ val_t NEW_ArraySet_standard___collection___array___ArraySet___with_capacity(val_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 502;
+  fra.me.line = 503;
   fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/collection/array.nit:502 */
+  /* ../lib/standard/collection/array.nit:503 */
   fra.me.REG[0] = NEW_standard___collection___array___ArraySet();
   INIT_ATTRIBUTES__standard___collection___array___ArraySet(fra.me.REG[0]);
   standard___collection___array___ArraySet___with_capacity(fra.me.REG[0], REGB0, init_table);
@@ -19600,16 +19612,6 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[57]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ArraySetIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -19617,8 +19619,7 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[57]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19626,6 +19627,17 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[57]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ArraySetIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -19693,7 +19705,7 @@ val_t NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___in
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 516;
+  fra.me.line = 517;
   fra.me.meth = LOCATE_NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19701,7 +19713,7 @@ val_t NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___in
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:516 */
+  /* ../lib/standard/collection/array.nit:517 */
   fra.me.REG[1] = NEW_standard___collection___array___ArraySetIterator();
   INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator(fra.me.REG[1]);
   standard___collection___array___ArraySetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -19709,14 +19721,14 @@ val_t NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
+const classtable_elt_t VFT_standard___collection___array___ArrayMap[76] = {
   {(bigint) 4251 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ArrayMap" /* 2: Class Name */},
   {(bigint) 3 /* 3: ArrayMap < Object: superclass typecheck marker */},
   {(bigint) 135 /* 4: ArrayMap < MapRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3079 /* 6: ArrayMap < Map: superclass typecheck marker */},
+  {(bigint) 3075 /* 6: ArrayMap < Map: superclass typecheck marker */},
   {(bigint) 3679 /* 7: ArrayMap < CoupleMap: superclass typecheck marker */},
   {(bigint) 4251 /* 8: ArrayMap < ArrayMap: superclass typecheck marker */},
   {0} /* Class Hole :( */,
@@ -19728,16 +19740,6 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ArrayMap < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -19745,8 +19747,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19754,6 +19755,17 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ArrayMap < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -19762,6 +19774,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 2 /* 50: ArrayMap < MapRead: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayMap_____bra},
+  {(bigint) standard___collection___abstract_collection___MapRead___get_or_default},
   {(bigint) standard___collection___abstract_collection___MapRead___has_key},
   {(bigint) standard___collection___array___ArrayMap___iterator},
   {(bigint) standard___collection___abstract_collection___MapRead___iterate},
@@ -19772,13 +19785,13 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) standard___string___Map___join},
-  {(bigint) 1 /* 62: ArrayMap < Map: superclass init_table position */},
+  {(bigint) 1 /* 63: ArrayMap < Map: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayMap_____braeq},
   {(bigint) standard___collection___abstract_collection___Map___recover_with},
   {(bigint) standard___collection___array___ArrayMap___clear},
-  {(bigint) 0 /* 66: ArrayMap < CoupleMap: superclass init_table position */},
+  {(bigint) 0 /* 67: ArrayMap < CoupleMap: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayMap___couple_at},
-  {(bigint) 4 /* 68: ArrayMap < ArrayMap: superclass init_table position */},
+  {(bigint) 4 /* 69: ArrayMap < ArrayMap: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayMap___keys__eq},
   {(bigint) standard___collection___array___ArrayMap___values__eq},
   {(bigint) standard___collection___array___ArrayMap___enlarge},
@@ -19807,15 +19820,15 @@ void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:548 */
+  /* ../lib/standard/collection/array.nit:549 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(fra.me.REG[1]);
   ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:549 */
+  /* ../lib/standard/collection/array.nit:550 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(fra.me.REG[1]);
   ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:584 */
+  /* ../lib/standard/collection/array.nit:585 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -19872,13 +19885,13 @@ val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init(void){
   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 = 604;
+  fra.me.line = 605;
   fra.me.meth = LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/collection/array.nit:604 */
+  /* ../lib/standard/collection/array.nit:605 */
   fra.me.REG[0] = NEW_standard___collection___array___ArrayMap();
   INIT_ATTRIBUTES__standard___collection___array___ArrayMap(fra.me.REG[0]);
   standard___collection___array___ArrayMap___init(fra.me.REG[0], init_table);
@@ -19905,16 +19918,6 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ArrayMapKeys < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -19922,8 +19925,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19931,6 +19933,17 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ArrayMapKeys < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20059,16 +20072,6 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[84] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ArrayMapValues < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20076,8 +20079,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[84] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20085,6 +20087,17 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[84] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ArrayMapValues < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20213,16 +20226,6 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: NativeArray < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20230,8 +20233,7 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[54] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20239,6 +20241,17 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[54] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: NativeArray < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20280,16 +20293,6 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[58]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ComparableSorter < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20297,8 +20300,7 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[58]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20306,6 +20308,17 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[58]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ComparableSorter < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20380,14 +20393,14 @@ val_t NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___i
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90] = {
-  {(bigint) 3651 /* 0: Identity */},
+  {(bigint) 3655 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashMap" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashMap < Object: superclass typecheck marker */},
   {(bigint) 135 /* 4: HashMap < MapRead: superclass typecheck marker */},
   {(bigint) 303 /* 5: HashMap < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 3079 /* 6: HashMap < Map: superclass typecheck marker */},
-  {(bigint) 3651 /* 7: HashMap < HashMap: superclass typecheck marker */},
+  {(bigint) 3075 /* 6: HashMap < Map: superclass typecheck marker */},
+  {(bigint) 3655 /* 7: HashMap < HashMap: superclass typecheck marker */},
   {(bigint) 3215 /* 8: HashMap < HashCollection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20398,16 +20411,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: HashMap < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20415,8 +20418,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20424,6 +20426,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: HashMap < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20432,6 +20445,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90]
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: HashMap < MapRead: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashMap_____bra},
+  {(bigint) standard___collection___abstract_collection___MapRead___get_or_default},
   {(bigint) standard___collection___abstract_collection___MapRead___has_key},
   {(bigint) standard___collection___hash_collection___HashMap___iterator},
   {(bigint) standard___collection___hash_collection___HashMap___iterate},
@@ -20439,14 +20453,14 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90]
   {(bigint) standard___collection___hash_collection___HashMap___keys},
   {(bigint) standard___collection___hash_collection___HashMap___is_empty},
   {(bigint) standard___collection___hash_collection___HashMap___length},
-  {(bigint) 4 /* 59: HashMap < ArrayCapable: superclass init_table position */},
+  {(bigint) 4 /* 60: HashMap < ArrayCapable: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayCapable___calloc_array},
   {(bigint) standard___string___Map___join},
-  {(bigint) 0 /* 62: HashMap < Map: superclass init_table position */},
+  {(bigint) 0 /* 63: HashMap < Map: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashMap_____braeq},
   {(bigint) standard___collection___abstract_collection___Map___recover_with},
   {(bigint) standard___collection___hash_collection___HashMap___clear},
-  {(bigint) 5 /* 66: HashMap < HashMap: superclass init_table position */},
+  {(bigint) 5 /* 67: HashMap < HashMap: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashMap___init},
   {(bigint) standard___collection___hash_collection___HashMap___keys__eq},
   {(bigint) standard___collection___hash_collection___HashMap___values__eq},
@@ -20459,7 +20473,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) 3 /* 80: HashMap < HashCollection: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashCollection___first_item},
   {(bigint) standard___collection___hash_collection___HashCollection___index_at},
@@ -20613,16 +20626,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: HashMapKeys < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20630,8 +20633,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20639,6 +20641,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: HashMapKeys < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20749,7 +20762,7 @@ val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___in
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValues[84] = {
-  {(bigint) 3655 /* 0: Identity */},
+  {(bigint) 3651 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashMapValues" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashMapValues < Object: superclass typecheck marker */},
@@ -20759,7 +20772,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {(bigint) 283 /* 7: HashMapValues < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 375 /* 9: HashMapValues < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3655 /* 10: HashMapValues < HashMapValues: superclass typecheck marker */},
+  {(bigint) 3651 /* 10: HashMapValues < HashMapValues: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20767,16 +20780,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: HashMapValues < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20784,8 +20787,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20793,6 +20795,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: HashMapValues < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -20921,16 +20934,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: HashMapNode < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -20938,8 +20941,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20947,6 +20949,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: HashMapNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -21074,16 +21087,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: HashMapIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -21091,8 +21094,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21100,6 +21102,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: HashMapIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -21203,16 +21216,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[93]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: HashSet < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -21220,8 +21223,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[93]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21229,6 +21231,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[93]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: HashSet < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -21244,9 +21257,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[93]
   {(bigint) 7 /* 56: HashSet < HashSet: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashSet___init},
   {(bigint) standard___collection___hash_collection___HashSet___from},
-  {(bigint) 6 /* 59: HashSet < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
   {0} /* Class Hole :( */,
+  {(bigint) 6 /* 60: HashSet < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21424,16 +21437,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: HashSetNode < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -21441,8 +21444,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21450,6 +21452,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: HashSetNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -21574,16 +21587,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: HashSetIterator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -21591,8 +21594,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21600,6 +21602,17 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: HashSetIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -21684,7 +21697,7 @@ val_t NEW_HashSetIterator_standard___collection___hash_collection___HashSetItera
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___string___String[157] = {
+const classtable_elt_t VFT_standard___string___String[156] = {
   {(bigint) 4603 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "String" /* 2: Class Name */},
@@ -21703,16 +21716,6 @@ const classtable_elt_t VFT_standard___string___String[157] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: String < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___string___String_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___string___String___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -21720,8 +21723,7 @@ const classtable_elt_t VFT_standard___string___String[157] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___String___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21729,6 +21731,17 @@ const classtable_elt_t VFT_standard___string___String[157] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___string___String___hash},
+  {(bigint) 1 /* 33: String < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___string___String_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___string___String___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -21818,14 +21831,13 @@ const classtable_elt_t VFT_standard___string___String[157] = {
   {(bigint) standard___string___String___index_from},
   {(bigint) standard___string___String___index_to},
   {(bigint) standard___string___String___from_substring},
-  {(bigint) standard___string___String___with_native},
-  {(bigint) standard___string___String___from_cstring},
-  {(bigint) standard___string___String___copy_from_native},
+  {(bigint) standard___string___String___with_infos},
   {(bigint) standard___string___String___to_cstring},
   {(bigint) standard___string___String_____plus},
   {(bigint) standard___string___String_____star},
   {(bigint) standard___file___String___file_exists},
   {(bigint) standard___file___String___file_stat},
+  {(bigint) standard___file___String___file_lstat},
   {(bigint) standard___file___String___file_delete},
   {(bigint) standard___file___String___strip_extension},
   {(bigint) standard___file___String___basename},
@@ -21913,54 +21925,6 @@ void CHECKNEW_standard___string___String(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-static const char LOCATE_NEW_String_standard___string___String___with_native[] = "new String string::String::with_native";
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 401;
-  fra.me.meth = LOCATE_NEW_String_standard___string___String___with_native;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/string.nit:401 */
-  fra.me.REG[1] = NEW_standard___string___String();
-  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
-  standard___string___String___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___string___String(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_NEW_String_standard___string___String___from_cstring[] = "new String string::String::from_cstring";
-val_t NEW_String_standard___string___String___from_cstring(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 411;
-  fra.me.meth = LOCATE_NEW_String_standard___string___String___from_cstring;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:411 */
-  fra.me.REG[1] = NEW_standard___string___String();
-  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
-  standard___string___String___from_cstring(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___string___String(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
 static const char LOCATE_NEW_String_standard___string___String___from_substring[] = "new String string::String::from_substring";
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -21970,7 +21934,7 @@ val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1,
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 387;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_NEW_String_standard___string___String___from_substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21980,7 +21944,7 @@ val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1,
   REGB0 = p0;
   REGB1 = p1;
   fra.me.REG[0] = p2;
-  /* ../lib/standard/string.nit:387 */
+  /* ../lib/standard/string.nit:394 */
   fra.me.REG[1] = NEW_standard___string___String();
   INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
   standard___string___String___from_substring(fra.me.REG[1], REGB0, REGB1, fra.me.REG[0], init_table);
@@ -21988,36 +21952,42 @@ val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-static const char LOCATE_NEW_String_standard___string___String___copy_from_native[] = "new String string::String::copy_from_native";
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0){
+static const char LOCATE_NEW_String_standard___string___String___with_infos[] = "new String string::String::with_infos";
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 417;
-  fra.me.meth = LOCATE_NEW_String_standard___string___String___copy_from_native;
+  fra.me.line = 408;
+  fra.me.meth = LOCATE_NEW_String_standard___string___String___with_infos;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:417 */
+  REGB0 = p1;
+  REGB1 = p2;
+  REGB2 = p3;
+  /* ../lib/standard/string.nit:408 */
   fra.me.REG[1] = NEW_standard___string___String();
   INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
-  standard___string___String___copy_from_native(fra.me.REG[1], fra.me.REG[0], init_table);
+  standard___string___String___with_infos(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, REGB2, init_table);
   CHECKNEW_standard___string___String(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___string___Buffer[132] = {
-  {(bigint) 4823 /* 0: Identity */},
+  {(bigint) 4827 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Buffer" /* 2: Class Name */},
   {(bigint) 3 /* 3: Buffer < Object: superclass typecheck marker */},
   {(bigint) 35 /* 4: Buffer < StringCapable: superclass typecheck marker */},
-  {(bigint) 4823 /* 5: Buffer < Buffer: superclass typecheck marker */},
+  {(bigint) 4827 /* 5: Buffer < Buffer: superclass typecheck marker */},
   {(bigint) 275 /* 6: Buffer < Comparable: superclass typecheck marker */},
   {(bigint) 283 /* 7: Buffer < Collection: superclass typecheck marker */},
   {(bigint) 355 /* 8: Buffer < SequenceRead: superclass typecheck marker */},
@@ -22030,16 +22000,6 @@ const classtable_elt_t VFT_standard___string___Buffer[132] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: Buffer < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___string___Buffer_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___string___AbstractString___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -22047,8 +22007,7 @@ const classtable_elt_t VFT_standard___string___Buffer[132] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Buffer___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22056,6 +22015,17 @@ const classtable_elt_t VFT_standard___string___Buffer[132] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: Buffer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___string___Buffer_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___string___AbstractString___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -22216,13 +22186,13 @@ val_t NEW_Buffer_standard___string___Buffer___init(void){
   int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 652;
+  fra.me.line = 646;
   fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/string.nit:652 */
+  /* ../lib/standard/string.nit:646 */
   fra.me.REG[0] = NEW_standard___string___Buffer();
   INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[0]);
   standard___string___Buffer___init(fra.me.REG[0], init_table);
@@ -22237,7 +22207,7 @@ val_t NEW_Buffer_standard___string___Buffer___from(val_t p0){
   int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 658;
+  fra.me.line = 652;
   fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22245,7 +22215,7 @@ val_t NEW_Buffer_standard___string___Buffer___from(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:658 */
+  /* ../lib/standard/string.nit:652 */
   fra.me.REG[1] = NEW_standard___string___Buffer();
   INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[1]);
   standard___string___Buffer___from(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -22261,14 +22231,14 @@ val_t NEW_Buffer_standard___string___Buffer___with_capacity(val_t p0){
   int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 666;
+  fra.me.line = 660;
   fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:666 */
+  /* ../lib/standard/string.nit:660 */
   fra.me.REG[0] = NEW_standard___string___Buffer();
   INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[0]);
   standard___string___Buffer___with_capacity(fra.me.REG[0], REGB0, init_table);
@@ -22276,13 +22246,13 @@ val_t NEW_Buffer_standard___string___Buffer___with_capacity(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___string___NativeString[65] = {
-  {(bigint) -5 /* 0: Identity */},
+const classtable_elt_t VFT_standard___string___NativeString[70] = {
+  {(bigint) -21 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeString" /* 2: Class Name */},
   {(bigint) 3 /* 3: NativeString < Object: superclass typecheck marker */},
-  {(bigint) -5 /* 4: NativeString < NativeString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 35 /* 4: NativeString < StringCapable: superclass typecheck marker */},
+  {(bigint) -21 /* 5: NativeString < NativeString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22295,16 +22265,6 @@ const classtable_elt_t VFT_standard___string___NativeString[65] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: NativeString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -22312,33 +22272,48 @@ const classtable_elt_t VFT_standard___string___NativeString[65] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) standard___string___NativeString___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: NativeString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: NativeString < StringCapable: superclass init_table position */},
+  {(bigint) standard___string___StringCapable___calloc_string},
   {(bigint) standard___environ___NativeString___get_environ},
   {(bigint) standard___environ___NativeString___setenv},
-  {(bigint) 1 /* 52: NativeString < NativeString: superclass init_table position */},
+  {(bigint) 2 /* 54: NativeString < NativeString: superclass init_table position */},
   {(bigint) standard___string___NativeString_____bra},
   {(bigint) standard___string___NativeString_____braeq},
   {(bigint) standard___string___NativeString___copy_to},
   {(bigint) standard___string___NativeString___cstring_length},
   {(bigint) standard___string___NativeString___atoi},
   {(bigint) standard___string___NativeString___atof},
+  {(bigint) standard___string___NativeString___to_s_with_length},
+  {(bigint) standard___string___NativeString___to_s_with_copy},
   {(bigint) standard___string___NativeString___init},
   {(bigint) standard___file___NativeString___file_exists},
   {(bigint) standard___file___NativeString___file_stat},
+  {(bigint) standard___file___NativeString___file_lstat},
   {(bigint) standard___file___NativeString___file_mkdir},
   {(bigint) standard___file___NativeString___file_delete},
   {(bigint) standard___exec___NativeString___system},
@@ -22372,16 +22347,6 @@ const classtable_elt_t VFT_standard___stream___FDIStream[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: FDIStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -22389,8 +22354,7 @@ const classtable_elt_t VFT_standard___stream___FDIStream[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22398,6 +22362,17 @@ const classtable_elt_t VFT_standard___stream___FDIStream[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: FDIStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -22535,16 +22510,6 @@ const classtable_elt_t VFT_standard___stream___FDOStream[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: FDOStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -22552,8 +22517,7 @@ const classtable_elt_t VFT_standard___stream___FDOStream[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22561,6 +22525,17 @@ const classtable_elt_t VFT_standard___stream___FDOStream[76] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: FDOStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -22688,16 +22663,6 @@ const classtable_elt_t VFT_standard___stream___FDIOStream[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: FDIOStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -22705,8 +22670,7 @@ const classtable_elt_t VFT_standard___stream___FDIOStream[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22714,6 +22678,17 @@ const classtable_elt_t VFT_standard___stream___FDIOStream[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: FDIOStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -22861,16 +22836,6 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[63] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: BM_Pattern < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -22878,15 +22843,25 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[63] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string_search___BM_Pattern___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___string_search___BM_Pattern___hash},
+  {(bigint) 1 /* 33: BM_Pattern < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___string_search___BM_Pattern_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23013,16 +22988,6 @@ const classtable_elt_t VFT_standard___string_search___Match[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Match < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -23030,8 +22995,7 @@ const classtable_elt_t VFT_standard___string_search___Match[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string_search___Match___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23039,6 +23003,17 @@ const classtable_elt_t VFT_standard___string_search___Match[56] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Match < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23119,7 +23094,7 @@ val_t NEW_Match_standard___string_search___Match___init(val_t p0, val_t p1, val_
   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 = 220;
+  fra.me.line = 223;
   fra.me.meth = LOCATE_NEW_Match_standard___string_search___Match___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23129,7 +23104,7 @@ val_t NEW_Match_standard___string_search___Match___init(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
-  /* ../lib/standard/string_search.nit:220 */
+  /* ../lib/standard/string_search.nit:223 */
   fra.me.REG[1] = NEW_standard___string_search___Match();
   INIT_ATTRIBUTES__standard___string_search___Match(fra.me.REG[1]);
   standard___string_search___Match___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, init_table);
@@ -23137,16 +23112,16 @@ val_t NEW_Match_standard___string_search___Match___init(val_t p0, val_t p1, val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___file___IFStream[78] = {
-  {(bigint) 4239 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IFStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IFStream < Object: superclass typecheck marker */},
-  {(bigint) 3227 /* 4: IFStream < FStream: superclass typecheck marker */},
-  {(bigint) 203 /* 5: IFStream < IOS: superclass typecheck marker */},
-  {(bigint) 3703 /* 6: IFStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 3171 /* 7: IFStream < IStream: superclass typecheck marker */},
-  {(bigint) 4239 /* 8: IFStream < IFStream: superclass typecheck marker */},
+const classtable_elt_t VFT_standard___time___TimeT[58] = {
+  {(bigint) -17 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TimeT" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TimeT < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 4: TimeT < Pointer: superclass typecheck marker */},
+  {(bigint) -17 /* 5: TimeT < TimeT: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23156,8 +23131,22 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IFStream < Object: superclass init_table position */},
+  {(bigint) standard___time___TimeT___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: TimeT < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23166,6 +23155,52 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: TimeT < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 51: TimeT < TimeT: superclass init_table position */},
+  {(bigint) standard___time___TimeT___init},
+  {(bigint) standard___time___TimeT___from_i},
+  {(bigint) standard___time___TimeT___update},
+  {(bigint) standard___time___TimeT___ctime},
+  {(bigint) standard___time___TimeT___difftime},
+  {(bigint) standard___time___TimeT___to_i},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_TimeT(time_t val) {
+  struct TBOX_TimeT *box = (struct TBOX_TimeT*)alloc(sizeof(struct TBOX_TimeT));
+  box->vft = VFT_standard___time___TimeT;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
+}
+const classtable_elt_t VFT_standard___time___Tm[68] = {
+  {(bigint) -13 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Tm" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Tm < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 4: Tm < Pointer: superclass typecheck marker */},
+  {(bigint) -13 /* 5: Tm < Tm: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -23173,8 +23208,87 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) standard___time___Tm___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Tm < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___stream___Object___poll},
   {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Tm < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 51: Tm < Tm: superclass init_table position */},
+  {(bigint) standard___time___Tm___gmtime},
+  {(bigint) standard___time___Tm___gmtime_from_timet},
+  {(bigint) standard___time___Tm___localtime},
+  {(bigint) standard___time___Tm___localtime_from_timet},
+  {(bigint) standard___time___Tm___to_timet},
+  {(bigint) standard___time___Tm___sec},
+  {(bigint) standard___time___Tm___min},
+  {(bigint) standard___time___Tm___hour},
+  {(bigint) standard___time___Tm___mday},
+  {(bigint) standard___time___Tm___mon},
+  {(bigint) standard___time___Tm___year},
+  {(bigint) standard___time___Tm___wday},
+  {(bigint) standard___time___Tm___yday},
+  {(bigint) standard___time___Tm___is_dst},
+  {(bigint) standard___time___Tm___asctime},
+  {(bigint) standard___time___Tm___strftime},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_Tm(struct tm * val) {
+  struct TBOX_Tm *box = (struct TBOX_Tm*)alloc(sizeof(struct TBOX_Tm));
+  box->vft = VFT_standard___time___Tm;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
+}
+const classtable_elt_t VFT_standard___file___IFStream[78] = {
+  {(bigint) 4239 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IFStream" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IFStream < Object: superclass typecheck marker */},
+  {(bigint) 3227 /* 4: IFStream < FStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: IFStream < IOS: superclass typecheck marker */},
+  {(bigint) 3703 /* 6: IFStream < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 3171 /* 7: IFStream < IStream: superclass typecheck marker */},
+  {(bigint) 4239 /* 8: IFStream < IFStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23182,6 +23296,17 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IFStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23245,13 +23370,13 @@ void INIT_ATTRIBUTES__standard___file___IFStream(val_t p0){
   /* ../lib/standard/stream.nit:190 */
   REGB0 = TAG_Int(0);
   ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/file.nit:54 */
+  /* ../lib/standard/file.nit:55 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:57 */
+  /* ../lib/standard/file.nit:58 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:99 */
+  /* ../lib/standard/file.nit:100 */
   REGB0 = TAG_Bool(0);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -23298,7 +23423,7 @@ val_t NEW_IFStream_standard___file___IFStream___open(val_t p0){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 101;
+  fra.me.line = 102;
   fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___open;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23306,7 +23431,7 @@ val_t NEW_IFStream_standard___file___IFStream___open(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:101 */
+  /* ../lib/standard/file.nit:102 */
   fra.me.REG[1] = NEW_standard___file___IFStream();
   INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[1]);
   standard___file___IFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -23321,13 +23446,13 @@ val_t NEW_IFStream_standard___file___IFStream___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 110;
+  fra.me.line = 111;
   fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:110 */
+  /* ../lib/standard/file.nit:111 */
   fra.me.REG[0] = NEW_standard___file___IFStream();
   INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[0]);
   standard___file___IFStream___init(fra.me.REG[0], init_table);
@@ -23342,13 +23467,13 @@ val_t NEW_IFStream_standard___file___IFStream___without_file(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 111;
+  fra.me.line = 112;
   fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___without_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:111 */
+  /* ../lib/standard/file.nit:112 */
   fra.me.REG[0] = NEW_standard___file___IFStream();
   INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[0]);
   standard___file___IFStream___without_file(fra.me.REG[0], init_table);
@@ -23375,16 +23500,6 @@ const classtable_elt_t VFT_standard___file___OFStream[66] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: OFStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -23392,8 +23507,7 @@ const classtable_elt_t VFT_standard___file___OFStream[66] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23401,6 +23515,17 @@ const classtable_elt_t VFT_standard___file___OFStream[66] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: OFStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23443,10 +23568,10 @@ void INIT_ATTRIBUTES__standard___file___OFStream(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:54 */
+  /* ../lib/standard/file.nit:55 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:57 */
+  /* ../lib/standard/file.nit:58 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -23488,7 +23613,7 @@ val_t NEW_OFStream_standard___file___OFStream___open(val_t p0){
   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 = 147;
+  fra.me.line = 148;
   fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___open;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23496,7 +23621,7 @@ val_t NEW_OFStream_standard___file___OFStream___open(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:147 */
+  /* ../lib/standard/file.nit:148 */
   fra.me.REG[1] = NEW_standard___file___OFStream();
   INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[1]);
   standard___file___OFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -23511,13 +23636,13 @@ val_t NEW_OFStream_standard___file___OFStream___init(void){
   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 = 156;
+  fra.me.line = 157;
   fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:156 */
+  /* ../lib/standard/file.nit:157 */
   fra.me.REG[0] = NEW_standard___file___OFStream();
   INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[0]);
   standard___file___OFStream___init(fra.me.REG[0], init_table);
@@ -23532,13 +23657,13 @@ val_t NEW_OFStream_standard___file___OFStream___without_file(void){
   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 = 157;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___without_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:157 */
+  /* ../lib/standard/file.nit:158 */
   fra.me.REG[0] = NEW_standard___file___OFStream();
   INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[0]);
   standard___file___OFStream___without_file(fra.me.REG[0], init_table);
@@ -23565,16 +23690,6 @@ const classtable_elt_t VFT_standard___file___Stdin[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: Stdin < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -23582,8 +23697,7 @@ const classtable_elt_t VFT_standard___file___Stdin[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23591,6 +23705,17 @@ const classtable_elt_t VFT_standard___file___Stdin[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: Stdin < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23657,13 +23782,13 @@ void INIT_ATTRIBUTES__standard___file___Stdin(val_t p0){
   /* ../lib/standard/stream.nit:190 */
   REGB0 = TAG_Int(0);
   ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/file.nit:54 */
+  /* ../lib/standard/file.nit:55 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:57 */
+  /* ../lib/standard/file.nit:58 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:99 */
+  /* ../lib/standard/file.nit:100 */
   REGB0 = TAG_Bool(0);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -23710,13 +23835,13 @@ val_t NEW_Stdin_standard___file___Stdin___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 164;
+  fra.me.line = 165;
   fra.me.meth = LOCATE_NEW_Stdin_standard___file___Stdin___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:164 */
+  /* ../lib/standard/file.nit:165 */
   fra.me.REG[0] = NEW_standard___file___Stdin();
   INIT_ATTRIBUTES__standard___file___Stdin(fra.me.REG[0]);
   standard___file___Stdin___init(fra.me.REG[0], init_table);
@@ -23743,16 +23868,6 @@ const classtable_elt_t VFT_standard___file___Stdout[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: Stdout < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -23760,8 +23875,7 @@ const classtable_elt_t VFT_standard___file___Stdout[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23769,6 +23883,17 @@ const classtable_elt_t VFT_standard___file___Stdout[68] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: Stdout < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23813,10 +23938,10 @@ void INIT_ATTRIBUTES__standard___file___Stdout(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:54 */
+  /* ../lib/standard/file.nit:55 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:57 */
+  /* ../lib/standard/file.nit:58 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -23858,13 +23983,13 @@ val_t NEW_Stdout_standard___file___Stdout___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 177;
+  fra.me.line = 178;
   fra.me.meth = LOCATE_NEW_Stdout_standard___file___Stdout___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:177 */
+  /* ../lib/standard/file.nit:178 */
   fra.me.REG[0] = NEW_standard___file___Stdout();
   INIT_ATTRIBUTES__standard___file___Stdout(fra.me.REG[0]);
   standard___file___Stdout___init(fra.me.REG[0], init_table);
@@ -23891,16 +24016,6 @@ const classtable_elt_t VFT_standard___file___Stderr[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: Stderr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -23908,8 +24023,7 @@ const classtable_elt_t VFT_standard___file___Stderr[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23917,6 +24031,17 @@ const classtable_elt_t VFT_standard___file___Stderr[68] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: Stderr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -23961,10 +24086,10 @@ void INIT_ATTRIBUTES__standard___file___Stderr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:54 */
+  /* ../lib/standard/file.nit:55 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:57 */
+  /* ../lib/standard/file.nit:58 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -24006,13 +24131,13 @@ val_t NEW_Stderr_standard___file___Stderr___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 186;
+  fra.me.line = 187;
   fra.me.meth = LOCATE_NEW_Stderr_standard___file___Stderr___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ../lib/standard/file.nit:186 */
+  /* ../lib/standard/file.nit:187 */
   fra.me.REG[0] = NEW_standard___file___Stderr();
   INIT_ATTRIBUTES__standard___file___Stderr(fra.me.REG[0]);
   standard___file___Stderr___init(fra.me.REG[0], init_table);
@@ -24020,13 +24145,13 @@ val_t NEW_Stderr_standard___file___Stderr___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___FileStat[57] = {
-  {(bigint) -25 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___FileStat[64] = {
+  {(bigint) -33 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FileStat" /* 2: Class Name */},
   {(bigint) 3 /* 3: FileStat < Object: superclass typecheck marker */},
   {(bigint) -1 /* 4: FileStat < Pointer: superclass typecheck marker */},
-  {(bigint) -25 /* 5: FileStat < FileStat: superclass typecheck marker */},
+  {(bigint) -33 /* 5: FileStat < FileStat: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24039,16 +24164,6 @@ const classtable_elt_t VFT_standard___file___FileStat[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: FileStat < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24056,8 +24171,7 @@ const classtable_elt_t VFT_standard___file___FileStat[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24065,6 +24179,17 @@ const classtable_elt_t VFT_standard___file___FileStat[57] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: FileStat < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24078,10 +24203,17 @@ const classtable_elt_t VFT_standard___file___FileStat[57] = {
   {(bigint) standard___file___FileStat___ctime},
   {(bigint) standard___file___FileStat___mtime},
   {(bigint) standard___file___FileStat___size},
+  {(bigint) standard___file___FileStat___is_reg},
+  {(bigint) standard___file___FileStat___is_dir},
+  {(bigint) standard___file___FileStat___is_chr},
+  {(bigint) standard___file___FileStat___is_blk},
+  {(bigint) standard___file___FileStat___is_fifo},
+  {(bigint) standard___file___FileStat___is_lnk},
+  {(bigint) standard___file___FileStat___is_sock},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-val_t BOX_FileStat(void* val) {
+val_t BOX_FileStat( struct stat *  val) {
   struct TBOX_FileStat *box = (struct TBOX_FileStat*)alloc(sizeof(struct TBOX_FileStat));
   box->vft = VFT_standard___file___FileStat;
   box->val = val;
@@ -24090,12 +24222,12 @@ val_t BOX_FileStat(void* val) {
   return OBJ2VAL(box);
 }
 const classtable_elt_t VFT_standard___file___NativeFile[61] = {
-  {(bigint) -21 /* 0: Identity */},
+  {(bigint) -29 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeFile" /* 2: Class Name */},
   {(bigint) 3 /* 3: NativeFile < Object: superclass typecheck marker */},
   {(bigint) -1 /* 4: NativeFile < Pointer: superclass typecheck marker */},
-  {(bigint) -21 /* 5: NativeFile < NativeFile: superclass typecheck marker */},
+  {(bigint) -29 /* 5: NativeFile < NativeFile: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24108,16 +24240,6 @@ const classtable_elt_t VFT_standard___file___NativeFile[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: NativeFile < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24125,8 +24247,7 @@ const classtable_elt_t VFT_standard___file___NativeFile[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24134,6 +24255,17 @@ const classtable_elt_t VFT_standard___file___NativeFile[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: NativeFile < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24181,16 +24313,6 @@ const classtable_elt_t VFT_standard___exec___Process[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Process < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24198,8 +24320,7 @@ const classtable_elt_t VFT_standard___exec___Process[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24207,6 +24328,17 @@ const classtable_elt_t VFT_standard___exec___Process[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Process < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24365,16 +24497,6 @@ const classtable_elt_t VFT_standard___exec___IProcess[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IProcess < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24382,8 +24504,7 @@ const classtable_elt_t VFT_standard___exec___IProcess[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24391,6 +24512,17 @@ const classtable_elt_t VFT_standard___exec___IProcess[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24551,16 +24683,6 @@ const classtable_elt_t VFT_standard___exec___OProcess[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: OProcess < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24568,8 +24690,7 @@ const classtable_elt_t VFT_standard___exec___OProcess[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24577,6 +24698,17 @@ const classtable_elt_t VFT_standard___exec___OProcess[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: OProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24731,16 +24863,6 @@ const classtable_elt_t VFT_standard___exec___IOProcess[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IOProcess < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24748,8 +24870,7 @@ const classtable_elt_t VFT_standard___exec___IOProcess[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24757,6 +24878,17 @@ const classtable_elt_t VFT_standard___exec___IOProcess[87] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IOProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24908,12 +25040,12 @@ val_t NEW_IOProcess_standard___exec___IOProcess___init_(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___exec___NativeProcess[59] = {
-  {(bigint) -17 /* 0: Identity */},
+  {(bigint) -25 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeProcess" /* 2: Class Name */},
   {(bigint) 3 /* 3: NativeProcess < Object: superclass typecheck marker */},
   {(bigint) -1 /* 4: NativeProcess < Pointer: superclass typecheck marker */},
-  {(bigint) -17 /* 5: NativeProcess < NativeProcess: superclass typecheck marker */},
+  {(bigint) -25 /* 5: NativeProcess < NativeProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24926,16 +25058,6 @@ const classtable_elt_t VFT_standard___exec___NativeProcess[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: NativeProcess < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -24943,8 +25065,7 @@ const classtable_elt_t VFT_standard___exec___NativeProcess[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24952,6 +25073,17 @@ const classtable_elt_t VFT_standard___exec___NativeProcess[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: NativeProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -24997,16 +25129,6 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: PartialOrder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -25014,8 +25136,7 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Collection___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25023,6 +25144,17 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: PartialOrder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -25172,16 +25304,6 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[67] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: PartialOrderElement < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -25189,8 +25311,7 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[67] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25198,6 +25319,17 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[67] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: PartialOrderElement < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -25365,16 +25497,6 @@ const classtable_elt_t VFT_location___SourceFile[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: SourceFile < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -25382,8 +25504,7 @@ const classtable_elt_t VFT_location___SourceFile[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25391,6 +25512,17 @@ const classtable_elt_t VFT_location___SourceFile[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: SourceFile < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -25540,16 +25672,6 @@ const classtable_elt_t VFT_location___Location[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Location < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) location___Location_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -25557,8 +25679,7 @@ const classtable_elt_t VFT_location___Location[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) location___Location___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25566,6 +25687,17 @@ const classtable_elt_t VFT_location___Location[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: Location < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) location___Location_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -25745,16 +25877,6 @@ const classtable_elt_t VFT_symbol___Symbol[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Symbol < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -25762,8 +25884,7 @@ const classtable_elt_t VFT_symbol___Symbol[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) symbol___Symbol___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25771,6 +25892,17 @@ const classtable_elt_t VFT_symbol___Symbol[52] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Symbol < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -25868,16 +26000,6 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMDirectory < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -25885,8 +26007,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25894,6 +26015,17 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: MMDirectory < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -26026,16 +26158,6 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMGlobalClass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -26043,8 +26165,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMGlobalClass___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26052,6 +26173,17 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[75] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: MMGlobalClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -26240,16 +26372,6 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[69]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMGlobalProperty < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -26257,8 +26379,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[69]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26266,6 +26387,17 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[69]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: MMGlobalProperty < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -26411,16 +26543,6 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[60]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMExplicitImport < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) native_interface___frontier___MMExplicitImport_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -26428,8 +26550,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[60]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26437,6 +26558,17 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[60]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) native_interface___frontier___MMExplicitImport___hash},
+  {(bigint) 0 /* 33: MMExplicitImport < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) native_interface___frontier___MMExplicitImport_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -26556,16 +26688,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[66] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMParam < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -26573,8 +26695,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[66] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMParam___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26582,6 +26703,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[66] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMParam < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -26701,16 +26833,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMSignature < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -26718,8 +26840,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMSignature___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26727,6 +26848,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[76] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: MMSignature < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -26888,16 +27020,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMClosure < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -26905,8 +27027,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26914,6 +27035,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: MMClosure < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -27042,16 +27174,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMNullableType < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -27059,8 +27181,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMNullableType___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -27068,6 +27189,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[88] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMNullableType < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -27208,16 +27340,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMTypeSimpleClass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -27225,8 +27347,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMTypeClass___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -27234,6 +27355,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[89] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMTypeSimpleClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -27375,16 +27507,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMTypeNone < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -27392,8 +27514,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMTypeNone___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -27401,6 +27522,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[87] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMTypeNone < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -27540,16 +27672,6 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: MMImportedCast < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) native_interface___frontier___MMImportedCast_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -27557,8 +27679,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -27566,6 +27687,17 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) native_interface___frontier___MMImportedCast___hash},
+  {(bigint) 0 /* 33: MMImportedCast < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) native_interface___frontier___MMImportedCast_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -27619,7 +27751,7 @@ void INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("value");
     REGB0 = TAG_Int(5);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -27710,16 +27842,6 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[154] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMImplicitLocalClass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -27727,8 +27849,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[154] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -27736,6 +27857,17 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[154] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMImplicitLocalClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -28082,16 +28214,6 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMRefineAncestor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -28099,8 +28221,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMAncestor___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -28108,6 +28229,17 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMRefineAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -28228,16 +28360,6 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMSpecAncestor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -28245,8 +28367,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMAncestor___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -28254,6 +28375,17 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMSpecAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -28365,16 +28497,6 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMDefaultAncestor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -28382,8 +28504,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMAncestor___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -28391,6 +28512,17 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMDefaultAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -28502,16 +28634,6 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMTypeGeneric < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -28519,8 +28641,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___genericity___MMTypeGeneric___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -28528,6 +28649,17 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMTypeGeneric < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -28682,16 +28814,6 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[95] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMTypeFormalParameter < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -28699,8 +28821,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[95] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -28708,6 +28829,17 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[95] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMTypeFormalParameter < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -28901,16 +29033,6 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMVirtualType < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -28918,8 +29040,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -28927,6 +29048,17 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[93] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMVirtualType < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -29087,16 +29219,6 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IRegister < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -29104,8 +29226,7 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -29113,6 +29234,17 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IRegister < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -29260,16 +29392,6 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IEscapeMark < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -29277,8 +29399,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -29286,6 +29407,17 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[52] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IEscapeMark < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -29371,16 +29503,6 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IClosureDecl < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -29388,8 +29510,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -29397,6 +29518,17 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[56] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IClosureDecl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -29499,16 +29631,6 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IRoutine < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -29516,8 +29638,7 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -29525,6 +29646,17 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IRoutine < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -29701,16 +29833,6 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[74] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: IClosureDef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -29718,8 +29840,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -29727,6 +29848,17 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[74] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: IClosureDef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -29906,16 +30038,6 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ISeq < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -29923,8 +30045,7 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -29932,6 +30053,17 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[73] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ISeq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -30063,16 +30195,6 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ILoop < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -30080,8 +30202,7 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -30089,6 +30210,17 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[75] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ILoop < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -30222,16 +30354,6 @@ const classtable_elt_t VFT_icode___icode_base___IIf[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IIf < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -30239,8 +30361,7 @@ const classtable_elt_t VFT_icode___icode_base___IIf[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -30248,6 +30369,17 @@ const classtable_elt_t VFT_icode___icode_base___IIf[73] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IIf < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -30395,16 +30527,6 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IEscape < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -30412,8 +30534,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -30421,6 +30542,17 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IEscape < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -30547,16 +30679,6 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IAbort < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -30564,8 +30686,7 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -30573,6 +30694,17 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IAbort < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -30708,16 +30840,6 @@ const classtable_elt_t VFT_icode___icode_base___ICall[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ICall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -30725,8 +30847,7 @@ const classtable_elt_t VFT_icode___icode_base___ICall[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -30734,6 +30855,17 @@ const classtable_elt_t VFT_icode___icode_base___ICall[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ICall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -30890,16 +31022,6 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ISuper < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -30907,8 +31029,7 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -30916,6 +31037,17 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ISuper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -31071,16 +31203,6 @@ const classtable_elt_t VFT_icode___icode_base___INew[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: INew < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -31088,8 +31210,7 @@ const classtable_elt_t VFT_icode___icode_base___INew[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -31097,6 +31218,17 @@ const classtable_elt_t VFT_icode___icode_base___INew[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: INew < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -31261,16 +31393,6 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IAllocateInstance < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -31278,8 +31400,7 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -31287,6 +31408,17 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IAllocateInstance < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -31413,16 +31545,6 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: IStaticCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -31430,8 +31552,7 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -31439,6 +31560,17 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: IStaticCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -31594,16 +31726,6 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[72] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ICheckInstance < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -31611,8 +31733,7 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -31620,6 +31741,17 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[72] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ICheckInstance < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -31756,16 +31888,6 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[72] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IInitAttributes < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -31773,8 +31895,7 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -31782,6 +31903,17 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[72] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IInitAttributes < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -31918,16 +32050,6 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IClosCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -31935,8 +32057,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -31944,6 +32065,17 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IClosCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -32091,16 +32223,6 @@ const classtable_elt_t VFT_icode___icode_base___INative[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: INative < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -32108,8 +32230,7 @@ const classtable_elt_t VFT_icode___icode_base___INative[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -32117,6 +32238,17 @@ const classtable_elt_t VFT_icode___icode_base___INative[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: INative < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -32270,16 +32402,6 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IIntValue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -32287,8 +32409,7 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -32296,6 +32417,17 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IIntValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -32422,16 +32554,6 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IBoolValue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -32439,8 +32561,7 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -32448,6 +32569,17 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IBoolValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -32574,16 +32706,6 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IStringValue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -32591,8 +32713,7 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -32600,6 +32721,17 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IStringValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -32726,16 +32858,6 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IFloatValue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -32743,8 +32865,7 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -32752,6 +32873,17 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IFloatValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -32878,16 +33010,6 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ICharValue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -32895,8 +33017,7 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -32904,6 +33025,17 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ICharValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -33030,16 +33162,6 @@ const classtable_elt_t VFT_icode___icode_base___IMove[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IMove < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -33047,8 +33169,7 @@ const classtable_elt_t VFT_icode___icode_base___IMove[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -33056,6 +33177,17 @@ const classtable_elt_t VFT_icode___icode_base___IMove[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IMove < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -33185,16 +33317,6 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[72] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IAttrRead < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -33202,8 +33324,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -33211,6 +33332,17 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[72] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IAttrRead < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -33347,16 +33479,6 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IAttrWrite < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -33364,8 +33486,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -33373,6 +33494,17 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[73] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IAttrWrite < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -33518,16 +33650,6 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[72] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IAttrIsset < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -33535,8 +33657,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -33544,6 +33665,17 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[72] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IAttrIsset < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -33680,16 +33812,6 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ITypeCheck < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -33697,8 +33819,7 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -33706,6 +33827,17 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[73] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ITypeCheck < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -33851,16 +33983,6 @@ const classtable_elt_t VFT_icode___icode_base___IIs[72] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IIs < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -33868,8 +33990,7 @@ const classtable_elt_t VFT_icode___icode_base___IIs[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -33877,6 +33998,17 @@ const classtable_elt_t VFT_icode___icode_base___IIs[72] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IIs < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34013,16 +34145,6 @@ const classtable_elt_t VFT_icode___icode_base___INot[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: INot < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34030,8 +34152,7 @@ const classtable_elt_t VFT_icode___icode_base___INot[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34039,6 +34160,17 @@ const classtable_elt_t VFT_icode___icode_base___INot[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: INot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34166,16 +34298,6 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IOnce < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34183,8 +34305,7 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34192,6 +34313,17 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IOnce < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34319,16 +34451,6 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: IHasClos < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34336,8 +34458,7 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34345,6 +34466,17 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: IHasClos < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34471,16 +34603,6 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[74] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ICodeBuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34488,8 +34610,7 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34497,6 +34618,17 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[74] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ICodeBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34637,16 +34769,6 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ICodeDupContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34654,8 +34776,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34663,6 +34784,17 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ICodeDupContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34774,6 +34906,207 @@ val_t NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(val_t p0)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+const classtable_elt_t VFT_parser___parser_nodes___ANodes[119] = {
+  {(bigint) 4695 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANodes" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANodes < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: ANodes < Collection: superclass typecheck marker */},
+  {(bigint) 355 /* 8: ANodes < SequenceRead: superclass typecheck marker */},
+  {(bigint) 375 /* 9: ANodes < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3459 /* 10: ANodes < SimpleCollection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 4199 /* 12: ANodes < Sequence: superclass typecheck marker */},
+  {(bigint) 4695 /* 13: ANodes < ANodes: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: ANodes < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 3 /* 52: ANodes < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___RemovableCollection___clear},
+  {(bigint) standard___collection___abstract_collection___RemovableCollection___remove},
+  {(bigint) standard___collection___abstract_collection___RemovableCollection___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 4 /* 70: ANodes < Collection: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANodes___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) parser___parser_nodes___ANodes___is_empty},
+  {(bigint) parser___parser_nodes___ANodes___length},
+  {(bigint) parser___parser_nodes___ANodes___has},
+  {(bigint) standard___collection___abstract_collection___Collection___has_only},
+  {(bigint) standard___collection___abstract_collection___Collection___count},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 1 /* 80: ANodes < SequenceRead: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANodes_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___index_of},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 90: ANodes < SimpleCollection: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Sequence___add},
+  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___collection___Sequence___subarray},
+  {(bigint) 0 /* 101: ANodes < Sequence: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
+  {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
+  {(bigint) parser___parser_nodes___ANodes___push},
+  {(bigint) standard___collection___abstract_collection___Sequence___append},
+  {(bigint) parser___parser_nodes___ANodes___pop},
+  {(bigint) parser___parser_nodes___ANodes___unshift},
+  {(bigint) parser___parser_nodes___ANodes___shift},
+  {(bigint) parser___parser_nodes___ANodes_____braeq},
+  {(bigint) parser___parser_nodes___ANodes___remove_at},
+  {(bigint) 6 /* 111: ANodes < ANodes: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANodes___parent},
+  {(bigint) parser___parser_nodes___ANodes___parent__eq},
+  {(bigint) parser___parser_nodes___ANodes___items},
+  {(bigint) parser___parser_nodes___ANodes___items__eq},
+  {(bigint) parser___parser_nodes___ANodes___hook_add},
+  {(bigint) parser___parser_nodes___ANodes___hook_remove},
+  {(bigint) parser___parser_nodes___ANodes___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ANodes::@parent */
+/* 3: Attribute ANodes::@items */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANodes[] = "init var of ANodes";
+void INIT_ATTRIBUTES__parser___parser_nodes___ANodes(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANodes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:80 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_parser___parser_nodes___ANodes_____atitems(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___ANodes(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANodes;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANodes[] = "check new ANodes";
+void CHECKNEW_parser___parser_nodes___ANodes(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_parser___parser_nodes___ANodes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANodes_____atparent(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@parent", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANodes_____atitems(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@items", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ANodes_parser___parser_nodes___ANodes___init[] = "new ANodes parser_nodes::ANodes::init";
+val_t NEW_ANodes_parser___parser_nodes___ANodes___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 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_ANodes_parser___parser_nodes___ANodes___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_parser___parser_nodes___ANodes();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANodes(fra.me.REG[1]);
+  parser___parser_nodes___ANodes___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANodes(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
 const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
   {(bigint) 3403 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
@@ -34793,16 +35126,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TEol < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34810,8 +35133,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TEol___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34819,6 +35141,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TEol < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34832,17 +35165,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TEol < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TEol < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -34856,21 +35189,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TEol::_parent */
-/* 3: Attribute TEol::_location */
+/* 2: Attribute TEol::_location */
+/* 3: Attribute TEol::@parent */
 /* 4: Attribute TEol::_symbol_cache */
 /* 5: Attribute TEol::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEol[] = "init var of TEol";
 void INIT_ATTRIBUTES__parser___parser_nodes___TEol(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEol;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TEol(void)
@@ -34925,13 +35267,13 @@ val_t NEW_TEol_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TEol_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TEol();
   INIT_ATTRIBUTES__parser___parser_nodes___TEol(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -34958,16 +35300,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TComment < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -34975,8 +35307,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -34984,6 +35315,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TComment < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -34997,17 +35339,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TComment < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TComment < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -35021,21 +35363,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TComment::_parent */
-/* 3: Attribute TComment::_location */
+/* 2: Attribute TComment::_location */
+/* 3: Attribute TComment::@parent */
 /* 4: Attribute TComment::_symbol_cache */
 /* 5: Attribute TComment::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComment[] = "init var of TComment";
 void INIT_ATTRIBUTES__parser___parser_nodes___TComment(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComment;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TComment(void)
@@ -35090,13 +35441,13 @@ val_t NEW_TComment_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TComment_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TComment();
   INIT_ATTRIBUTES__parser___parser_nodes___TComment(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -35123,16 +35474,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwmodule < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -35140,8 +35481,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -35149,6 +35489,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwmodule < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -35162,17 +35513,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwmodule < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwmodule < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -35187,21 +35538,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwmodule::_parent */
-/* 3: Attribute TKwmodule::_location */
+/* 2: Attribute TKwmodule::_location */
+/* 3: Attribute TKwmodule::@parent */
 /* 4: Attribute TKwmodule::_symbol_cache */
 /* 5: Attribute TKwmodule::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule[] = "init var of TKwmodule";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwmodule(void)
@@ -35256,13 +35616,13 @@ val_t NEW_TKwmodule_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwmodule_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwmodule();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -35289,16 +35649,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwimport < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -35306,8 +35656,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -35315,6 +35664,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwimport < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -35328,17 +35688,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwimport < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwimport < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -35353,21 +35713,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwimport::_parent */
-/* 3: Attribute TKwimport::_location */
+/* 2: Attribute TKwimport::_location */
+/* 3: Attribute TKwimport::@parent */
 /* 4: Attribute TKwimport::_symbol_cache */
 /* 5: Attribute TKwimport::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwimport[] = "init var of TKwimport";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwimport;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwimport(void)
@@ -35422,13 +35791,13 @@ val_t NEW_TKwimport_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwimport_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwimport();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -35455,16 +35824,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwclass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -35472,8 +35831,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -35481,6 +35839,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwclass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -35494,17 +35863,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwclass < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwclass < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -35519,21 +35888,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwclass::_parent */
-/* 3: Attribute TKwclass::_location */
+/* 2: Attribute TKwclass::_location */
+/* 3: Attribute TKwclass::@parent */
 /* 4: Attribute TKwclass::_symbol_cache */
 /* 5: Attribute TKwclass::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwclass[] = "init var of TKwclass";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwclass;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwclass(void)
@@ -35588,13 +35966,13 @@ val_t NEW_TKwclass_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwclass_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwclass();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -35621,16 +35999,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwabstract < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -35638,8 +36006,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -35647,6 +36014,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwabstract < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -35660,17 +36038,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwabstract < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwabstract < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -35685,21 +36063,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwabstract::_parent */
-/* 3: Attribute TKwabstract::_location */
+/* 2: Attribute TKwabstract::_location */
+/* 3: Attribute TKwabstract::@parent */
 /* 4: Attribute TKwabstract::_symbol_cache */
 /* 5: Attribute TKwabstract::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract[] = "init var of TKwabstract";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwabstract(void)
@@ -35754,13 +36141,13 @@ val_t NEW_TKwabstract_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwabstract_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwabstract();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -35787,16 +36174,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwinterface < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -35804,8 +36181,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -35813,6 +36189,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwinterface < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -35826,17 +36213,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwinterface < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwinterface < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -35851,21 +36238,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwinterface::_parent */
-/* 3: Attribute TKwinterface::_location */
+/* 2: Attribute TKwinterface::_location */
+/* 3: Attribute TKwinterface::@parent */
 /* 4: Attribute TKwinterface::_symbol_cache */
 /* 5: Attribute TKwinterface::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface[] = "init var of TKwinterface";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwinterface(void)
@@ -35920,13 +36316,13 @@ val_t NEW_TKwinterface_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwinterface_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwinterface();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -35953,16 +36349,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwenum < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -35970,8 +36356,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -35979,6 +36364,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwenum < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -35992,17 +36388,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwenum < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwenum < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -36017,21 +36413,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwenum::_parent */
-/* 3: Attribute TKwenum::_location */
+/* 2: Attribute TKwenum::_location */
+/* 3: Attribute TKwenum::@parent */
 /* 4: Attribute TKwenum::_symbol_cache */
 /* 5: Attribute TKwenum::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwenum[] = "init var of TKwenum";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwenum;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwenum(void)
@@ -36086,13 +36491,13 @@ val_t NEW_TKwenum_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwenum_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwenum();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -36119,16 +36524,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwend < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -36136,8 +36531,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -36145,6 +36539,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwend < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -36158,17 +36563,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwend < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwend < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -36183,21 +36588,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwend::_parent */
-/* 3: Attribute TKwend::_location */
+/* 2: Attribute TKwend::_location */
+/* 3: Attribute TKwend::@parent */
 /* 4: Attribute TKwend::_symbol_cache */
 /* 5: Attribute TKwend::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwend[] = "init var of TKwend";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwend(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwend;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwend(void)
@@ -36252,13 +36666,13 @@ val_t NEW_TKwend_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwend_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwend();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwend(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -36285,16 +36699,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwmeth < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -36302,8 +36706,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -36311,6 +36714,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwmeth < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -36324,17 +36738,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwmeth < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwmeth < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -36349,21 +36763,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwmeth::_parent */
-/* 3: Attribute TKwmeth::_location */
+/* 2: Attribute TKwmeth::_location */
+/* 3: Attribute TKwmeth::@parent */
 /* 4: Attribute TKwmeth::_symbol_cache */
 /* 5: Attribute TKwmeth::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth[] = "init var of TKwmeth";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwmeth(void)
@@ -36418,13 +36841,13 @@ val_t NEW_TKwmeth_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwmeth_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwmeth();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -36451,16 +36874,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwtype < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -36468,8 +36881,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -36477,6 +36889,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwtype < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -36490,17 +36913,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwtype < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwtype < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -36515,21 +36938,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwtype::_parent */
-/* 3: Attribute TKwtype::_location */
+/* 2: Attribute TKwtype::_location */
+/* 3: Attribute TKwtype::@parent */
 /* 4: Attribute TKwtype::_symbol_cache */
 /* 5: Attribute TKwtype::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtype[] = "init var of TKwtype";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwtype(void)
@@ -36584,13 +37016,13 @@ val_t NEW_TKwtype_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwtype_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwtype();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -36617,16 +37049,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwinit < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -36634,8 +37056,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -36643,6 +37064,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwinit < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -36656,17 +37088,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwinit < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwinit < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -36681,21 +37113,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwinit::_parent */
-/* 3: Attribute TKwinit::_location */
+/* 2: Attribute TKwinit::_location */
+/* 3: Attribute TKwinit::@parent */
 /* 4: Attribute TKwinit::_symbol_cache */
 /* 5: Attribute TKwinit::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinit[] = "init var of TKwinit";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinit;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwinit(void)
@@ -36750,13 +37191,13 @@ val_t NEW_TKwinit_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwinit_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwinit();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -36783,16 +37224,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwredef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -36800,8 +37231,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -36809,6 +37239,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwredef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -36822,17 +37263,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwredef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwredef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -36847,21 +37288,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwredef::_parent */
-/* 3: Attribute TKwredef::_location */
+/* 2: Attribute TKwredef::_location */
+/* 3: Attribute TKwredef::@parent */
 /* 4: Attribute TKwredef::_symbol_cache */
 /* 5: Attribute TKwredef::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwredef[] = "init var of TKwredef";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwredef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwredef(void)
@@ -36916,13 +37366,13 @@ val_t NEW_TKwredef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwredef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwredef();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -36949,16 +37399,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwis < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -36966,8 +37406,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -36975,6 +37414,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwis < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -36988,17 +37438,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwis < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwis < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -37013,21 +37463,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwis::_parent */
-/* 3: Attribute TKwis::_location */
+/* 2: Attribute TKwis::_location */
+/* 3: Attribute TKwis::@parent */
 /* 4: Attribute TKwis::_symbol_cache */
 /* 5: Attribute TKwis::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwis[] = "init var of TKwis";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwis;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwis(void)
@@ -37082,13 +37541,13 @@ val_t NEW_TKwis_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwis_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwis();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwis(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -37115,16 +37574,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwdo < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -37132,8 +37581,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -37141,6 +37589,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwdo < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -37154,17 +37613,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwdo < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwdo < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -37179,21 +37638,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwdo::_parent */
-/* 3: Attribute TKwdo::_location */
+/* 2: Attribute TKwdo::_location */
+/* 3: Attribute TKwdo::@parent */
 /* 4: Attribute TKwdo::_symbol_cache */
 /* 5: Attribute TKwdo::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdo[] = "init var of TKwdo";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdo;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwdo(void)
@@ -37248,13 +37716,13 @@ val_t NEW_TKwdo_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwdo_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwdo();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -37281,16 +37749,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwreadable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -37298,8 +37756,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -37307,6 +37764,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwreadable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -37320,17 +37788,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwreadable < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwreadable < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -37345,21 +37813,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwreadable::_parent */
-/* 3: Attribute TKwreadable::_location */
+/* 2: Attribute TKwreadable::_location */
+/* 3: Attribute TKwreadable::@parent */
 /* 4: Attribute TKwreadable::_symbol_cache */
 /* 5: Attribute TKwreadable::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable[] = "init var of TKwreadable";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwreadable(void)
@@ -37414,13 +37891,13 @@ val_t NEW_TKwreadable_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwreadable_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwreadable();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -37447,16 +37924,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwwritable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -37464,8 +37931,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -37473,6 +37939,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwwritable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -37486,17 +37963,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwwritable < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwwritable < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -37511,21 +37988,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwwritable::_parent */
-/* 3: Attribute TKwwritable::_location */
+/* 2: Attribute TKwwritable::_location */
+/* 3: Attribute TKwwritable::@parent */
 /* 4: Attribute TKwwritable::_symbol_cache */
 /* 5: Attribute TKwwritable::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable[] = "init var of TKwwritable";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwwritable(void)
@@ -37580,13 +38066,13 @@ val_t NEW_TKwwritable_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwwritable_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwwritable();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -37613,16 +38099,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwvar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -37630,8 +38106,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -37639,6 +38114,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwvar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -37652,17 +38138,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwvar < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwvar < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -37677,21 +38163,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwvar::_parent */
-/* 3: Attribute TKwvar::_location */
+/* 2: Attribute TKwvar::_location */
+/* 3: Attribute TKwvar::@parent */
 /* 4: Attribute TKwvar::_symbol_cache */
 /* 5: Attribute TKwvar::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwvar[] = "init var of TKwvar";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwvar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwvar(void)
@@ -37746,13 +38241,13 @@ val_t NEW_TKwvar_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwvar_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwvar();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -37779,16 +38274,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwintern < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -37796,8 +38281,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -37805,6 +38289,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwintern < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -37818,17 +38313,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwintern < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwintern < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -37843,21 +38338,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwintern::_parent */
-/* 3: Attribute TKwintern::_location */
+/* 2: Attribute TKwintern::_location */
+/* 3: Attribute TKwintern::@parent */
 /* 4: Attribute TKwintern::_symbol_cache */
 /* 5: Attribute TKwintern::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintern[] = "init var of TKwintern";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintern;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwintern(void)
@@ -37912,13 +38416,13 @@ val_t NEW_TKwintern_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwintern_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwintern();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -37945,16 +38449,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwextern < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -37962,8 +38456,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -37971,6 +38464,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwextern < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -37984,17 +38488,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwextern < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwextern < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -38009,21 +38513,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwextern::_parent */
-/* 3: Attribute TKwextern::_location */
+/* 2: Attribute TKwextern::_location */
+/* 3: Attribute TKwextern::@parent */
 /* 4: Attribute TKwextern::_symbol_cache */
 /* 5: Attribute TKwextern::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwextern[] = "init var of TKwextern";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwextern;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwextern(void)
@@ -38078,13 +38591,13 @@ val_t NEW_TKwextern_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwextern_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwextern();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -38111,16 +38624,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwprotected < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -38128,8 +38631,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -38137,6 +38639,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwprotected < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -38150,17 +38663,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwprotected < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwprotected < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -38175,21 +38688,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwprotected::_parent */
-/* 3: Attribute TKwprotected::_location */
+/* 2: Attribute TKwprotected::_location */
+/* 3: Attribute TKwprotected::@parent */
 /* 4: Attribute TKwprotected::_symbol_cache */
 /* 5: Attribute TKwprotected::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected[] = "init var of TKwprotected";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwprotected(void)
@@ -38244,13 +38766,13 @@ val_t NEW_TKwprotected_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwprotected_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwprotected();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -38277,16 +38799,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwprivate < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -38294,8 +38806,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -38303,6 +38814,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwprivate < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -38316,17 +38838,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwprivate < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwprivate < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -38341,21 +38863,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwprivate::_parent */
-/* 3: Attribute TKwprivate::_location */
+/* 2: Attribute TKwprivate::_location */
+/* 3: Attribute TKwprivate::@parent */
 /* 4: Attribute TKwprivate::_symbol_cache */
 /* 5: Attribute TKwprivate::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate[] = "init var of TKwprivate";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwprivate(void)
@@ -38410,13 +38941,13 @@ val_t NEW_TKwprivate_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwprivate_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwprivate();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -38443,16 +38974,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwintrude < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -38460,8 +38981,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -38469,6 +38989,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwintrude < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -38482,17 +39013,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwintrude < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwintrude < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -38507,21 +39038,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwintrude::_parent */
-/* 3: Attribute TKwintrude::_location */
+/* 2: Attribute TKwintrude::_location */
+/* 3: Attribute TKwintrude::@parent */
 /* 4: Attribute TKwintrude::_symbol_cache */
 /* 5: Attribute TKwintrude::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude[] = "init var of TKwintrude";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwintrude(void)
@@ -38576,13 +39116,13 @@ val_t NEW_TKwintrude_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwintrude_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwintrude();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -38609,16 +39149,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwif < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -38626,8 +39156,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -38635,6 +39164,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwif < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -38648,17 +39188,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwif < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwif < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -38673,21 +39213,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwif::_parent */
-/* 3: Attribute TKwif::_location */
+/* 2: Attribute TKwif::_location */
+/* 3: Attribute TKwif::@parent */
 /* 4: Attribute TKwif::_symbol_cache */
 /* 5: Attribute TKwif::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwif[] = "init var of TKwif";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwif(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwif;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwif(void)
@@ -38742,13 +39291,13 @@ val_t NEW_TKwif_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwif_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwif();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwif(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -38775,16 +39324,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwthen < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -38792,8 +39331,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -38801,6 +39339,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwthen < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -38814,17 +39363,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwthen < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwthen < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -38839,21 +39388,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwthen::_parent */
-/* 3: Attribute TKwthen::_location */
+/* 2: Attribute TKwthen::_location */
+/* 3: Attribute TKwthen::@parent */
 /* 4: Attribute TKwthen::_symbol_cache */
 /* 5: Attribute TKwthen::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwthen[] = "init var of TKwthen";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwthen;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwthen(void)
@@ -38908,13 +39466,13 @@ val_t NEW_TKwthen_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwthen_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwthen();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -38941,16 +39499,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwelse < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -38958,8 +39506,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -38967,6 +39514,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwelse < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -38980,17 +39538,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwelse < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwelse < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -39005,21 +39563,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwelse::_parent */
-/* 3: Attribute TKwelse::_location */
+/* 2: Attribute TKwelse::_location */
+/* 3: Attribute TKwelse::@parent */
 /* 4: Attribute TKwelse::_symbol_cache */
 /* 5: Attribute TKwelse::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwelse[] = "init var of TKwelse";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwelse;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwelse(void)
@@ -39074,13 +39641,13 @@ val_t NEW_TKwelse_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwelse_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwelse();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -39107,16 +39674,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwwhile < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -39124,8 +39681,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -39133,6 +39689,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwwhile < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -39146,17 +39713,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwwhile < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwwhile < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -39171,21 +39738,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwwhile::_parent */
-/* 3: Attribute TKwwhile::_location */
+/* 2: Attribute TKwwhile::_location */
+/* 3: Attribute TKwwhile::@parent */
 /* 4: Attribute TKwwhile::_symbol_cache */
 /* 5: Attribute TKwwhile::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile[] = "init var of TKwwhile";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwwhile(void)
@@ -39240,13 +39816,13 @@ val_t NEW_TKwwhile_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwwhile_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwwhile();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -39273,16 +39849,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwloop < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -39290,8 +39856,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -39299,6 +39864,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwloop < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -39312,17 +39888,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwloop < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwloop < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -39337,21 +39913,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwloop::_parent */
-/* 3: Attribute TKwloop::_location */
+/* 2: Attribute TKwloop::_location */
+/* 3: Attribute TKwloop::@parent */
 /* 4: Attribute TKwloop::_symbol_cache */
 /* 5: Attribute TKwloop::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwloop[] = "init var of TKwloop";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwloop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwloop(void)
@@ -39406,13 +39991,13 @@ val_t NEW_TKwloop_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwloop_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwloop();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -39439,16 +40024,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwfor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -39456,8 +40031,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -39465,6 +40039,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwfor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -39478,17 +40063,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwfor < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwfor < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -39503,21 +40088,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwfor::_parent */
-/* 3: Attribute TKwfor::_location */
+/* 2: Attribute TKwfor::_location */
+/* 3: Attribute TKwfor::@parent */
 /* 4: Attribute TKwfor::_symbol_cache */
 /* 5: Attribute TKwfor::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfor[] = "init var of TKwfor";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwfor(void)
@@ -39572,13 +40166,13 @@ val_t NEW_TKwfor_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwfor_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwfor();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -39605,16 +40199,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwin < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -39622,8 +40206,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -39631,6 +40214,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwin < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -39644,17 +40238,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwin < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwin < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -39669,21 +40263,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwin::_parent */
-/* 3: Attribute TKwin::_location */
+/* 2: Attribute TKwin::_location */
+/* 3: Attribute TKwin::@parent */
 /* 4: Attribute TKwin::_symbol_cache */
 /* 5: Attribute TKwin::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwin[] = "init var of TKwin";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwin(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwin;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwin(void)
@@ -39738,13 +40341,13 @@ val_t NEW_TKwin_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwin_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwin();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwin(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -39771,16 +40374,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwand < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -39788,8 +40381,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -39797,6 +40389,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwand < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -39810,17 +40413,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwand < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwand < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -39835,21 +40438,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwand::_parent */
-/* 3: Attribute TKwand::_location */
+/* 2: Attribute TKwand::_location */
+/* 3: Attribute TKwand::@parent */
 /* 4: Attribute TKwand::_symbol_cache */
 /* 5: Attribute TKwand::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwand[] = "init var of TKwand";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwand(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwand;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwand(void)
@@ -39904,13 +40516,13 @@ val_t NEW_TKwand_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwand_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwand();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwand(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -39937,16 +40549,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -39954,8 +40556,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -39963,6 +40564,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -39976,17 +40588,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwor < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwor < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40001,21 +40613,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwor::_parent */
-/* 3: Attribute TKwor::_location */
+/* 2: Attribute TKwor::_location */
+/* 3: Attribute TKwor::@parent */
 /* 4: Attribute TKwor::_symbol_cache */
 /* 5: Attribute TKwor::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwor[] = "init var of TKwor";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwor(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwor(void)
@@ -40070,13 +40691,13 @@ val_t NEW_TKwor_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwor_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwor();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwor(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -40103,16 +40724,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwnot < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -40120,8 +40731,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -40129,6 +40739,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwnot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -40142,17 +40763,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwnot < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwnot < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40167,21 +40788,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwnot::_parent */
-/* 3: Attribute TKwnot::_location */
+/* 2: Attribute TKwnot::_location */
+/* 3: Attribute TKwnot::@parent */
 /* 4: Attribute TKwnot::_symbol_cache */
 /* 5: Attribute TKwnot::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnot[] = "init var of TKwnot";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnot;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwnot(void)
@@ -40236,13 +40866,13 @@ val_t NEW_TKwnot_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwnot_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwnot();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -40269,16 +40899,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwreturn < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -40286,8 +40906,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -40295,6 +40914,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwreturn < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -40308,17 +40938,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwreturn < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwreturn < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40333,21 +40963,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwreturn::_parent */
-/* 3: Attribute TKwreturn::_location */
+/* 2: Attribute TKwreturn::_location */
+/* 3: Attribute TKwreturn::@parent */
 /* 4: Attribute TKwreturn::_symbol_cache */
 /* 5: Attribute TKwreturn::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn[] = "init var of TKwreturn";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwreturn(void)
@@ -40402,13 +41041,13 @@ val_t NEW_TKwreturn_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwreturn_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwreturn();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -40435,16 +41074,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwcontinue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -40452,8 +41081,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -40461,6 +41089,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwcontinue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -40474,17 +41113,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwcontinue < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwcontinue < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40499,21 +41138,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwcontinue::_parent */
-/* 3: Attribute TKwcontinue::_location */
+/* 2: Attribute TKwcontinue::_location */
+/* 3: Attribute TKwcontinue::@parent */
 /* 4: Attribute TKwcontinue::_symbol_cache */
 /* 5: Attribute TKwcontinue::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue[] = "init var of TKwcontinue";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwcontinue(void)
@@ -40568,13 +41216,13 @@ val_t NEW_TKwcontinue_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwcontinue_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwcontinue();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -40601,16 +41249,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwbreak < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -40618,8 +41256,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -40627,6 +41264,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwbreak < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -40640,17 +41288,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwbreak < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwbreak < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40665,21 +41313,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwbreak::_parent */
-/* 3: Attribute TKwbreak::_location */
+/* 2: Attribute TKwbreak::_location */
+/* 3: Attribute TKwbreak::@parent */
 /* 4: Attribute TKwbreak::_symbol_cache */
 /* 5: Attribute TKwbreak::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak[] = "init var of TKwbreak";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwbreak(void)
@@ -40734,13 +41391,13 @@ val_t NEW_TKwbreak_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwbreak_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwbreak();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -40767,16 +41424,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwabort < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -40784,8 +41431,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -40793,6 +41439,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwabort < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -40806,17 +41463,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwabort < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwabort < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40831,21 +41488,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwabort::_parent */
-/* 3: Attribute TKwabort::_location */
+/* 2: Attribute TKwabort::_location */
+/* 3: Attribute TKwabort::@parent */
 /* 4: Attribute TKwabort::_symbol_cache */
 /* 5: Attribute TKwabort::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabort[] = "init var of TKwabort";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabort;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwabort(void)
@@ -40900,13 +41566,13 @@ val_t NEW_TKwabort_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwabort_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwabort();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -40933,16 +41599,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwassert < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -40950,8 +41606,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -40959,6 +41614,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwassert < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -40972,17 +41638,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwassert < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwassert < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -40997,21 +41663,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwassert::_parent */
-/* 3: Attribute TKwassert::_location */
+/* 2: Attribute TKwassert::_location */
+/* 3: Attribute TKwassert::@parent */
 /* 4: Attribute TKwassert::_symbol_cache */
 /* 5: Attribute TKwassert::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwassert[] = "init var of TKwassert";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwassert;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwassert(void)
@@ -41066,13 +41741,13 @@ val_t NEW_TKwassert_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwassert_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwassert();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -41099,16 +41774,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwnew < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -41116,8 +41781,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41125,6 +41789,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwnew < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -41138,17 +41813,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwnew < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwnew < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -41163,21 +41838,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwnew::_parent */
-/* 3: Attribute TKwnew::_location */
+/* 2: Attribute TKwnew::_location */
+/* 3: Attribute TKwnew::@parent */
 /* 4: Attribute TKwnew::_symbol_cache */
 /* 5: Attribute TKwnew::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnew[] = "init var of TKwnew";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnew;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwnew(void)
@@ -41232,13 +41916,13 @@ val_t NEW_TKwnew_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwnew_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwnew();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -41265,16 +41949,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwisa < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -41282,8 +41956,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41291,6 +41964,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwisa < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -41304,17 +41988,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwisa < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwisa < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -41329,21 +42013,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwisa::_parent */
-/* 3: Attribute TKwisa::_location */
+/* 2: Attribute TKwisa::_location */
+/* 3: Attribute TKwisa::@parent */
 /* 4: Attribute TKwisa::_symbol_cache */
 /* 5: Attribute TKwisa::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisa[] = "init var of TKwisa";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisa;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwisa(void)
@@ -41398,13 +42091,13 @@ val_t NEW_TKwisa_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwisa_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwisa();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -41431,16 +42124,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwonce < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -41448,8 +42131,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41457,6 +42139,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwonce < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -41470,17 +42163,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwonce < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwonce < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -41495,21 +42188,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwonce::_parent */
-/* 3: Attribute TKwonce::_location */
+/* 2: Attribute TKwonce::_location */
+/* 3: Attribute TKwonce::@parent */
 /* 4: Attribute TKwonce::_symbol_cache */
 /* 5: Attribute TKwonce::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwonce[] = "init var of TKwonce";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwonce;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwonce(void)
@@ -41564,13 +42266,13 @@ val_t NEW_TKwonce_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwonce_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwonce();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -41597,16 +42299,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwsuper < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -41614,8 +42306,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41623,6 +42314,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwsuper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -41636,17 +42338,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwsuper < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwsuper < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -41661,21 +42363,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwsuper::_parent */
-/* 3: Attribute TKwsuper::_location */
+/* 2: Attribute TKwsuper::_location */
+/* 3: Attribute TKwsuper::@parent */
 /* 4: Attribute TKwsuper::_symbol_cache */
 /* 5: Attribute TKwsuper::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper[] = "init var of TKwsuper";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwsuper(void)
@@ -41730,13 +42441,13 @@ val_t NEW_TKwsuper_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwsuper_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwsuper();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -41763,16 +42474,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwself < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -41780,8 +42481,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41789,6 +42489,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwself < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -41802,17 +42513,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwself < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwself < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -41827,21 +42538,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwself::_parent */
-/* 3: Attribute TKwself::_location */
+/* 2: Attribute TKwself::_location */
+/* 3: Attribute TKwself::@parent */
 /* 4: Attribute TKwself::_symbol_cache */
 /* 5: Attribute TKwself::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwself[] = "init var of TKwself";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwself(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwself;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwself(void)
@@ -41896,13 +42616,13 @@ val_t NEW_TKwself_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwself_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwself();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwself(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -41929,16 +42649,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwtrue < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -41946,8 +42656,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41955,6 +42664,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwtrue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -41968,17 +42688,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwtrue < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwtrue < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -41993,21 +42713,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwtrue::_parent */
-/* 3: Attribute TKwtrue::_location */
+/* 2: Attribute TKwtrue::_location */
+/* 3: Attribute TKwtrue::@parent */
 /* 4: Attribute TKwtrue::_symbol_cache */
 /* 5: Attribute TKwtrue::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue[] = "init var of TKwtrue";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwtrue(void)
@@ -42062,13 +42791,13 @@ val_t NEW_TKwtrue_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwtrue_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwtrue();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -42095,16 +42824,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwfalse < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -42112,8 +42831,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42121,6 +42839,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwfalse < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -42134,17 +42863,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwfalse < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwfalse < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -42159,21 +42888,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwfalse::_parent */
-/* 3: Attribute TKwfalse::_location */
+/* 2: Attribute TKwfalse::_location */
+/* 3: Attribute TKwfalse::@parent */
 /* 4: Attribute TKwfalse::_symbol_cache */
 /* 5: Attribute TKwfalse::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse[] = "init var of TKwfalse";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwfalse(void)
@@ -42228,13 +42966,13 @@ val_t NEW_TKwfalse_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwfalse_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwfalse();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -42261,16 +42999,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwnull < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -42278,8 +43006,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42287,6 +43014,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwnull < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -42300,17 +43038,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwnull < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwnull < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -42325,21 +43063,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwnull::_parent */
-/* 3: Attribute TKwnull::_location */
+/* 2: Attribute TKwnull::_location */
+/* 3: Attribute TKwnull::@parent */
 /* 4: Attribute TKwnull::_symbol_cache */
 /* 5: Attribute TKwnull::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnull[] = "init var of TKwnull";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnull;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwnull(void)
@@ -42394,13 +43141,13 @@ val_t NEW_TKwnull_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwnull_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwnull();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -42427,16 +43174,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwas < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -42444,8 +43181,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42453,6 +43189,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwas < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -42466,17 +43213,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwas < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwas < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -42491,21 +43238,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwas::_parent */
-/* 3: Attribute TKwas::_location */
+/* 2: Attribute TKwas::_location */
+/* 3: Attribute TKwas::@parent */
 /* 4: Attribute TKwas::_symbol_cache */
 /* 5: Attribute TKwas::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwas[] = "init var of TKwas";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwas(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwas;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwas(void)
@@ -42560,13 +43316,13 @@ val_t NEW_TKwas_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwas_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwas();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwas(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -42593,16 +43349,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwnullable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -42610,8 +43356,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42619,6 +43364,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwnullable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -42632,17 +43388,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwnullable < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwnullable < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -42657,21 +43413,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwnullable::_parent */
-/* 3: Attribute TKwnullable::_location */
+/* 2: Attribute TKwnullable::_location */
+/* 3: Attribute TKwnullable::@parent */
 /* 4: Attribute TKwnullable::_symbol_cache */
 /* 5: Attribute TKwnullable::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable[] = "init var of TKwnullable";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwnullable(void)
@@ -42726,13 +43491,13 @@ val_t NEW_TKwnullable_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwnullable_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwnullable();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -42759,16 +43524,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwisset < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -42776,8 +43531,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42785,6 +43539,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwisset < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -42798,17 +43563,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwisset < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwisset < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -42823,21 +43588,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwisset::_parent */
-/* 3: Attribute TKwisset::_location */
+/* 2: Attribute TKwisset::_location */
+/* 3: Attribute TKwisset::@parent */
 /* 4: Attribute TKwisset::_symbol_cache */
 /* 5: Attribute TKwisset::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisset[] = "init var of TKwisset";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisset;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwisset(void)
@@ -42892,13 +43666,13 @@ val_t NEW_TKwisset_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwisset_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwisset();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -42925,16 +43699,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TKwlabel < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -42942,8 +43706,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenKeyword___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42951,6 +43714,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TKwlabel < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -42964,17 +43738,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TKwlabel < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TKwlabel < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -42989,21 +43763,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwlabel::_parent */
-/* 3: Attribute TKwlabel::_location */
+/* 2: Attribute TKwlabel::_location */
+/* 3: Attribute TKwlabel::@parent */
 /* 4: Attribute TKwlabel::_symbol_cache */
 /* 5: Attribute TKwlabel::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel[] = "init var of TKwlabel";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwlabel(void)
@@ -43058,13 +43841,13 @@ val_t NEW_TKwlabel_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwlabel_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwlabel();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -43091,16 +43874,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdebug[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TKwdebug < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -43108,8 +43881,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdebug[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43117,6 +43889,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdebug[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TKwdebug < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -43130,17 +43913,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdebug[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TKwdebug < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TKwdebug < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -43154,21 +43937,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdebug[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwdebug::_parent */
-/* 3: Attribute TKwdebug::_location */
+/* 2: Attribute TKwdebug::_location */
+/* 3: Attribute TKwdebug::@parent */
 /* 4: Attribute TKwdebug::_symbol_cache */
 /* 5: Attribute TKwdebug::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug[] = "init var of TKwdebug";
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TKwdebug(void)
@@ -43223,13 +44015,13 @@ val_t NEW_TKwdebug_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TKwdebug_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TKwdebug();
   INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -43256,16 +44048,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TOpar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -43273,8 +44055,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43282,6 +44063,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TOpar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -43295,17 +44087,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TOpar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TOpar < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -43319,21 +44111,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TOpar::_parent */
-/* 3: Attribute TOpar::_location */
+/* 2: Attribute TOpar::_location */
+/* 3: Attribute TOpar::@parent */
 /* 4: Attribute TOpar::_symbol_cache */
 /* 5: Attribute TOpar::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TOpar[] = "init var of TOpar";
 void INIT_ATTRIBUTES__parser___parser_nodes___TOpar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TOpar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TOpar(void)
@@ -43388,13 +44189,13 @@ val_t NEW_TOpar_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TOpar_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TOpar();
   INIT_ATTRIBUTES__parser___parser_nodes___TOpar(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -43421,16 +44222,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TCpar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -43438,8 +44229,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43447,6 +44237,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TCpar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -43460,17 +44261,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TCpar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TCpar < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -43484,21 +44285,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TCpar::_parent */
-/* 3: Attribute TCpar::_location */
+/* 2: Attribute TCpar::_location */
+/* 3: Attribute TCpar::@parent */
 /* 4: Attribute TCpar::_symbol_cache */
 /* 5: Attribute TCpar::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCpar[] = "init var of TCpar";
 void INIT_ATTRIBUTES__parser___parser_nodes___TCpar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCpar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TCpar(void)
@@ -43553,13 +44363,13 @@ val_t NEW_TCpar_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TCpar_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TCpar();
   INIT_ATTRIBUTES__parser___parser_nodes___TCpar(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -43586,16 +44396,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TObra < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -43603,8 +44403,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43612,6 +44411,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TObra < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -43625,17 +44435,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TObra < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TObra < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -43649,21 +44459,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TObra::_parent */
-/* 3: Attribute TObra::_location */
+/* 2: Attribute TObra::_location */
+/* 3: Attribute TObra::@parent */
 /* 4: Attribute TObra::_symbol_cache */
 /* 5: Attribute TObra::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TObra[] = "init var of TObra";
 void INIT_ATTRIBUTES__parser___parser_nodes___TObra(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TObra;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TObra(void)
@@ -43718,13 +44537,13 @@ val_t NEW_TObra_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TObra_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TObra();
   INIT_ATTRIBUTES__parser___parser_nodes___TObra(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -43751,16 +44570,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TCbra < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -43768,8 +44577,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43777,6 +44585,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TCbra < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -43790,17 +44609,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TCbra < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TCbra < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -43814,21 +44633,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TCbra::_parent */
-/* 3: Attribute TCbra::_location */
+/* 2: Attribute TCbra::_location */
+/* 3: Attribute TCbra::@parent */
 /* 4: Attribute TCbra::_symbol_cache */
 /* 5: Attribute TCbra::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCbra[] = "init var of TCbra";
 void INIT_ATTRIBUTES__parser___parser_nodes___TCbra(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCbra;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TCbra(void)
@@ -43883,13 +44711,13 @@ val_t NEW_TCbra_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TCbra_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TCbra();
   INIT_ATTRIBUTES__parser___parser_nodes___TCbra(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -43916,16 +44744,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TComma < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -43933,8 +44751,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43942,6 +44759,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TComma < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -43955,17 +44783,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TComma < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TComma < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -43979,21 +44807,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TComma::_parent */
-/* 3: Attribute TComma::_location */
+/* 2: Attribute TComma::_location */
+/* 3: Attribute TComma::@parent */
 /* 4: Attribute TComma::_symbol_cache */
 /* 5: Attribute TComma::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComma[] = "init var of TComma";
 void INIT_ATTRIBUTES__parser___parser_nodes___TComma(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComma;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TComma(void)
@@ -44048,13 +44885,13 @@ val_t NEW_TComma_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TComma_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TComma();
   INIT_ATTRIBUTES__parser___parser_nodes___TComma(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -44081,16 +44918,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TColumn < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -44098,8 +44925,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44107,6 +44933,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TColumn < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -44120,17 +44957,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TColumn < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TColumn < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -44144,21 +44981,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TColumn::_parent */
-/* 3: Attribute TColumn::_location */
+/* 2: Attribute TColumn::_location */
+/* 3: Attribute TColumn::@parent */
 /* 4: Attribute TColumn::_symbol_cache */
 /* 5: Attribute TColumn::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TColumn[] = "init var of TColumn";
 void INIT_ATTRIBUTES__parser___parser_nodes___TColumn(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TColumn;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TColumn(void)
@@ -44213,13 +45059,13 @@ val_t NEW_TColumn_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TColumn_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TColumn();
   INIT_ATTRIBUTES__parser___parser_nodes___TColumn(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -44246,16 +45092,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TQuad < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -44263,8 +45099,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44272,6 +45107,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TQuad < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -44285,17 +45131,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TQuad < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TQuad < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -44309,21 +45155,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TQuad::_parent */
-/* 3: Attribute TQuad::_location */
+/* 2: Attribute TQuad::_location */
+/* 3: Attribute TQuad::@parent */
 /* 4: Attribute TQuad::_symbol_cache */
 /* 5: Attribute TQuad::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TQuad[] = "init var of TQuad";
 void INIT_ATTRIBUTES__parser___parser_nodes___TQuad(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TQuad;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TQuad(void)
@@ -44378,13 +45233,13 @@ val_t NEW_TQuad_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TQuad_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TQuad();
   INIT_ATTRIBUTES__parser___parser_nodes___TQuad(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -44411,16 +45266,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TAssign < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -44428,8 +45273,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44437,6 +45281,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TAssign < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -44450,17 +45305,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TAssign < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TAssign < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -44474,21 +45329,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TAssign::_parent */
-/* 3: Attribute TAssign::_location */
+/* 2: Attribute TAssign::_location */
+/* 3: Attribute TAssign::@parent */
 /* 4: Attribute TAssign::_symbol_cache */
 /* 5: Attribute TAssign::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAssign[] = "init var of TAssign";
 void INIT_ATTRIBUTES__parser___parser_nodes___TAssign(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAssign;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TAssign(void)
@@ -44543,13 +45407,13 @@ val_t NEW_TAssign_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TAssign_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TAssign();
   INIT_ATTRIBUTES__parser___parser_nodes___TAssign(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -44576,16 +45440,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TPluseq < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -44593,8 +45447,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44602,6 +45455,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TPluseq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -44615,17 +45479,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TPluseq < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TPluseq < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -44640,21 +45504,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TPluseq::_parent */
-/* 3: Attribute TPluseq::_location */
+/* 2: Attribute TPluseq::_location */
+/* 3: Attribute TPluseq::@parent */
 /* 4: Attribute TPluseq::_symbol_cache */
 /* 5: Attribute TPluseq::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPluseq[] = "init var of TPluseq";
 void INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPluseq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TPluseq(void)
@@ -44709,13 +45582,13 @@ val_t NEW_TPluseq_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TPluseq_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TPluseq();
   INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -44742,16 +45615,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TMinuseq < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -44759,8 +45622,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44768,6 +45630,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TMinuseq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -44781,17 +45654,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TMinuseq < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TMinuseq < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -44806,21 +45679,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TMinuseq::_parent */
-/* 3: Attribute TMinuseq::_location */
+/* 2: Attribute TMinuseq::_location */
+/* 3: Attribute TMinuseq::@parent */
 /* 4: Attribute TMinuseq::_symbol_cache */
 /* 5: Attribute TMinuseq::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq[] = "init var of TMinuseq";
 void INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TMinuseq(void)
@@ -44875,13 +45757,13 @@ val_t NEW_TMinuseq_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TMinuseq_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TMinuseq();
   INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -44908,16 +45790,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TDotdotdot < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -44925,8 +45797,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44934,6 +45805,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TDotdotdot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -44947,17 +45829,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TDotdotdot < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TDotdotdot < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -44972,21 +45854,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TDotdotdot::_parent */
-/* 3: Attribute TDotdotdot::_location */
+/* 2: Attribute TDotdotdot::_location */
+/* 3: Attribute TDotdotdot::@parent */
 /* 4: Attribute TDotdotdot::_symbol_cache */
 /* 5: Attribute TDotdotdot::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot[] = "init var of TDotdotdot";
 void INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TDotdotdot(void)
@@ -45041,13 +45932,13 @@ val_t NEW_TDotdotdot_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TDotdotdot_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TDotdotdot();
   INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -45074,16 +45965,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TDotdot < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -45091,8 +45972,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45100,6 +45980,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TDotdot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -45113,17 +46004,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TDotdot < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TDotdot < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -45138,21 +46029,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TDotdot::_parent */
-/* 3: Attribute TDotdot::_location */
+/* 2: Attribute TDotdot::_location */
+/* 3: Attribute TDotdot::@parent */
 /* 4: Attribute TDotdot::_symbol_cache */
 /* 5: Attribute TDotdot::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdot[] = "init var of TDotdot";
 void INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdot;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TDotdot(void)
@@ -45207,13 +46107,13 @@ val_t NEW_TDotdot_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TDotdot_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TDotdot();
   INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -45240,16 +46140,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TDot < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -45257,8 +46147,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45266,6 +46155,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TDot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -45279,17 +46179,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TDot < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TDot < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -45304,21 +46204,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TDot::_parent */
-/* 3: Attribute TDot::_location */
+/* 2: Attribute TDot::_location */
+/* 3: Attribute TDot::@parent */
 /* 4: Attribute TDot::_symbol_cache */
 /* 5: Attribute TDot::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDot[] = "init var of TDot";
 void INIT_ATTRIBUTES__parser___parser_nodes___TDot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDot;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TDot(void)
@@ -45373,13 +46282,13 @@ val_t NEW_TDot_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TDot_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TDot();
   INIT_ATTRIBUTES__parser___parser_nodes___TDot(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -45406,16 +46315,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TPlus < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -45423,8 +46322,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45432,6 +46330,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TPlus < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -45445,17 +46354,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TPlus < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TPlus < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -45470,21 +46379,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TPlus::_parent */
-/* 3: Attribute TPlus::_location */
+/* 2: Attribute TPlus::_location */
+/* 3: Attribute TPlus::@parent */
 /* 4: Attribute TPlus::_symbol_cache */
 /* 5: Attribute TPlus::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPlus[] = "init var of TPlus";
 void INIT_ATTRIBUTES__parser___parser_nodes___TPlus(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPlus;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TPlus(void)
@@ -45539,13 +46457,13 @@ val_t NEW_TPlus_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TPlus_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TPlus();
   INIT_ATTRIBUTES__parser___parser_nodes___TPlus(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -45572,16 +46490,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TMinus < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -45589,8 +46497,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45598,6 +46505,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TMinus < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -45611,17 +46529,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TMinus < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TMinus < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -45636,21 +46554,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TMinus::_parent */
-/* 3: Attribute TMinus::_location */
+/* 2: Attribute TMinus::_location */
+/* 3: Attribute TMinus::@parent */
 /* 4: Attribute TMinus::_symbol_cache */
 /* 5: Attribute TMinus::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinus[] = "init var of TMinus";
 void INIT_ATTRIBUTES__parser___parser_nodes___TMinus(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinus;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TMinus(void)
@@ -45705,13 +46632,13 @@ val_t NEW_TMinus_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TMinus_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TMinus();
   INIT_ATTRIBUTES__parser___parser_nodes___TMinus(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -45738,16 +46665,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TStar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -45755,8 +46672,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45764,6 +46680,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TStar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -45777,17 +46704,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TStar < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TStar < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -45802,21 +46729,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TStar::_parent */
-/* 3: Attribute TStar::_location */
+/* 2: Attribute TStar::_location */
+/* 3: Attribute TStar::@parent */
 /* 4: Attribute TStar::_symbol_cache */
 /* 5: Attribute TStar::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStar[] = "init var of TStar";
 void INIT_ATTRIBUTES__parser___parser_nodes___TStar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TStar(void)
@@ -45871,13 +46807,13 @@ val_t NEW_TStar_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TStar_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TStar();
   INIT_ATTRIBUTES__parser___parser_nodes___TStar(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -45904,16 +46840,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TSlash < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -45921,8 +46847,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45930,6 +46855,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TSlash < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -45943,17 +46879,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TSlash < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TSlash < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -45968,21 +46904,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TSlash::_parent */
-/* 3: Attribute TSlash::_location */
+/* 2: Attribute TSlash::_location */
+/* 3: Attribute TSlash::@parent */
 /* 4: Attribute TSlash::_symbol_cache */
 /* 5: Attribute TSlash::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TSlash[] = "init var of TSlash";
 void INIT_ATTRIBUTES__parser___parser_nodes___TSlash(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TSlash;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TSlash(void)
@@ -46037,13 +46982,13 @@ val_t NEW_TSlash_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TSlash_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TSlash();
   INIT_ATTRIBUTES__parser___parser_nodes___TSlash(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -46070,16 +47015,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TPercent < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -46087,8 +47022,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46096,6 +47030,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TPercent < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -46109,17 +47054,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TPercent < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TPercent < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -46134,21 +47079,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TPercent::_parent */
-/* 3: Attribute TPercent::_location */
+/* 2: Attribute TPercent::_location */
+/* 3: Attribute TPercent::@parent */
 /* 4: Attribute TPercent::_symbol_cache */
 /* 5: Attribute TPercent::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPercent[] = "init var of TPercent";
 void INIT_ATTRIBUTES__parser___parser_nodes___TPercent(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPercent;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TPercent(void)
@@ -46203,13 +47157,13 @@ val_t NEW_TPercent_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TPercent_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TPercent();
   INIT_ATTRIBUTES__parser___parser_nodes___TPercent(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -46236,16 +47190,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TEq < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -46253,8 +47197,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46262,6 +47205,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TEq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -46275,17 +47229,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TEq < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TEq < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -46300,21 +47254,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TEq::_parent */
-/* 3: Attribute TEq::_location */
+/* 2: Attribute TEq::_location */
+/* 3: Attribute TEq::@parent */
 /* 4: Attribute TEq::_symbol_cache */
 /* 5: Attribute TEq::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEq[] = "init var of TEq";
 void INIT_ATTRIBUTES__parser___parser_nodes___TEq(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TEq(void)
@@ -46369,13 +47332,13 @@ val_t NEW_TEq_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TEq_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TEq();
   INIT_ATTRIBUTES__parser___parser_nodes___TEq(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -46402,16 +47365,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TNe < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -46419,8 +47372,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46428,6 +47380,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TNe < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -46441,17 +47404,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TNe < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TNe < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -46466,21 +47429,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TNe::_parent */
-/* 3: Attribute TNe::_location */
+/* 2: Attribute TNe::_location */
+/* 3: Attribute TNe::@parent */
 /* 4: Attribute TNe::_symbol_cache */
 /* 5: Attribute TNe::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNe[] = "init var of TNe";
 void INIT_ATTRIBUTES__parser___parser_nodes___TNe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNe;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TNe(void)
@@ -46535,13 +47507,13 @@ val_t NEW_TNe_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TNe_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TNe();
   INIT_ATTRIBUTES__parser___parser_nodes___TNe(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -46568,16 +47540,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TLt < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -46585,8 +47547,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46594,6 +47555,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TLt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -46607,17 +47579,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TLt < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TLt < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -46632,21 +47604,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TLt::_parent */
-/* 3: Attribute TLt::_location */
+/* 2: Attribute TLt::_location */
+/* 3: Attribute TLt::@parent */
 /* 4: Attribute TLt::_symbol_cache */
 /* 5: Attribute TLt::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLt[] = "init var of TLt";
 void INIT_ATTRIBUTES__parser___parser_nodes___TLt(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLt;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TLt(void)
@@ -46701,13 +47682,13 @@ val_t NEW_TLt_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TLt_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TLt();
   INIT_ATTRIBUTES__parser___parser_nodes___TLt(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -46734,16 +47715,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TLe < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -46751,8 +47722,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46760,6 +47730,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TLe < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -46773,17 +47754,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TLe < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TLe < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -46798,21 +47779,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TLe::_parent */
-/* 3: Attribute TLe::_location */
+/* 2: Attribute TLe::_location */
+/* 3: Attribute TLe::@parent */
 /* 4: Attribute TLe::_symbol_cache */
 /* 5: Attribute TLe::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLe[] = "init var of TLe";
 void INIT_ATTRIBUTES__parser___parser_nodes___TLe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLe;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TLe(void)
@@ -46867,13 +47857,13 @@ val_t NEW_TLe_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TLe_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TLe();
   INIT_ATTRIBUTES__parser___parser_nodes___TLe(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -46900,16 +47890,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TLl < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -46917,8 +47897,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46926,6 +47905,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TLl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -46939,17 +47929,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TLl < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TLl < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -46964,21 +47954,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TLl::_parent */
-/* 3: Attribute TLl::_location */
+/* 2: Attribute TLl::_location */
+/* 3: Attribute TLl::@parent */
 /* 4: Attribute TLl::_symbol_cache */
 /* 5: Attribute TLl::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLl[] = "init var of TLl";
 void INIT_ATTRIBUTES__parser___parser_nodes___TLl(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLl;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TLl(void)
@@ -47033,13 +48032,13 @@ val_t NEW_TLl_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TLl_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TLl();
   INIT_ATTRIBUTES__parser___parser_nodes___TLl(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -47066,16 +48065,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TGt < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -47083,8 +48072,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47092,6 +48080,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TGt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -47105,17 +48104,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TGt < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TGt < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -47130,21 +48129,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TGt::_parent */
-/* 3: Attribute TGt::_location */
+/* 2: Attribute TGt::_location */
+/* 3: Attribute TGt::@parent */
 /* 4: Attribute TGt::_symbol_cache */
 /* 5: Attribute TGt::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGt[] = "init var of TGt";
 void INIT_ATTRIBUTES__parser___parser_nodes___TGt(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGt;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TGt(void)
@@ -47199,13 +48207,13 @@ val_t NEW_TGt_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TGt_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TGt();
   INIT_ATTRIBUTES__parser___parser_nodes___TGt(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -47232,16 +48240,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TGe < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -47249,8 +48247,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47258,6 +48255,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TGe < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -47271,17 +48279,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TGe < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TGe < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -47296,21 +48304,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TGe::_parent */
-/* 3: Attribute TGe::_location */
+/* 2: Attribute TGe::_location */
+/* 3: Attribute TGe::@parent */
 /* 4: Attribute TGe::_symbol_cache */
 /* 5: Attribute TGe::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGe[] = "init var of TGe";
 void INIT_ATTRIBUTES__parser___parser_nodes___TGe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGe;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TGe(void)
@@ -47365,13 +48382,13 @@ val_t NEW_TGe_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TGe_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TGe();
   INIT_ATTRIBUTES__parser___parser_nodes___TGe(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -47398,16 +48415,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TGg < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -47415,8 +48422,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47424,6 +48430,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TGg < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -47437,17 +48454,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TGg < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TGg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -47462,21 +48479,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TGg::_parent */
-/* 3: Attribute TGg::_location */
+/* 2: Attribute TGg::_location */
+/* 3: Attribute TGg::@parent */
 /* 4: Attribute TGg::_symbol_cache */
 /* 5: Attribute TGg::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGg[] = "init var of TGg";
 void INIT_ATTRIBUTES__parser___parser_nodes___TGg(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGg;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TGg(void)
@@ -47531,13 +48557,13 @@ val_t NEW_TGg_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TGg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TGg();
   INIT_ATTRIBUTES__parser___parser_nodes___TGg(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -47564,16 +48590,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TStarship < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -47581,8 +48597,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47590,6 +48605,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TStarship < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -47603,17 +48629,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TStarship < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TStarship < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -47628,21 +48654,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TStarship::_parent */
-/* 3: Attribute TStarship::_location */
+/* 2: Attribute TStarship::_location */
+/* 3: Attribute TStarship::@parent */
 /* 4: Attribute TStarship::_symbol_cache */
 /* 5: Attribute TStarship::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStarship[] = "init var of TStarship";
 void INIT_ATTRIBUTES__parser___parser_nodes___TStarship(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStarship;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TStarship(void)
@@ -47697,13 +48732,13 @@ val_t NEW_TStarship_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TStarship_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TStarship();
   INIT_ATTRIBUTES__parser___parser_nodes___TStarship(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -47730,16 +48765,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TBang < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -47747,8 +48772,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47756,6 +48780,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TBang < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -47769,17 +48804,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TBang < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TBang < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -47794,21 +48829,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TBang::_parent */
-/* 3: Attribute TBang::_location */
+/* 2: Attribute TBang::_location */
+/* 3: Attribute TBang::@parent */
 /* 4: Attribute TBang::_symbol_cache */
 /* 5: Attribute TBang::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBang[] = "init var of TBang";
 void INIT_ATTRIBUTES__parser___parser_nodes___TBang(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBang;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TBang(void)
@@ -47863,13 +48907,13 @@ val_t NEW_TBang_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TBang_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TBang();
   INIT_ATTRIBUTES__parser___parser_nodes___TBang(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -47896,16 +48940,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TAt[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TAt < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -47913,8 +48947,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAt[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47922,6 +48955,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TAt[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TAt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -47935,17 +48979,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TAt[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TAt < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TAt < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -47959,21 +49003,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TAt[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TAt::_parent */
-/* 3: Attribute TAt::_location */
+/* 2: Attribute TAt::_location */
+/* 3: Attribute TAt::@parent */
 /* 4: Attribute TAt::_symbol_cache */
 /* 5: Attribute TAt::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAt[] = "init var of TAt";
 void INIT_ATTRIBUTES__parser___parser_nodes___TAt(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAt;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TAt(void)
@@ -48028,13 +49081,13 @@ val_t NEW_TAt_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TAt_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TAt();
   INIT_ATTRIBUTES__parser___parser_nodes___TAt(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -48061,16 +49114,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TClassid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -48078,8 +49121,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TClassid___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48087,6 +49129,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TClassid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -48100,17 +49153,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TClassid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TClassid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -48124,21 +49177,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TClassid::_parent */
-/* 3: Attribute TClassid::_location */
+/* 2: Attribute TClassid::_location */
+/* 3: Attribute TClassid::@parent */
 /* 4: Attribute TClassid::_symbol_cache */
 /* 5: Attribute TClassid::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TClassid[] = "init var of TClassid";
 void INIT_ATTRIBUTES__parser___parser_nodes___TClassid(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TClassid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TClassid(void)
@@ -48193,13 +49255,13 @@ val_t NEW_TClassid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TClassid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TClassid();
   INIT_ATTRIBUTES__parser___parser_nodes___TClassid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -48226,16 +49288,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -48243,8 +49295,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TId___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48252,6 +49303,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -48265,17 +49327,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TId < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TId < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -48289,21 +49351,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TId::_parent */
-/* 3: Attribute TId::_location */
+/* 2: Attribute TId::_location */
+/* 3: Attribute TId::@parent */
 /* 4: Attribute TId::_symbol_cache */
 /* 5: Attribute TId::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TId[] = "init var of TId";
 void INIT_ATTRIBUTES__parser___parser_nodes___TId(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TId;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TId(void)
@@ -48358,13 +49429,13 @@ val_t NEW_TId_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TId_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TId();
   INIT_ATTRIBUTES__parser___parser_nodes___TId(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -48391,16 +49462,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TAttrid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -48408,8 +49469,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TAttrid___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48417,6 +49477,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TAttrid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -48430,17 +49501,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TAttrid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TAttrid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -48454,21 +49525,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TAttrid::_parent */
-/* 3: Attribute TAttrid::_location */
+/* 2: Attribute TAttrid::_location */
+/* 3: Attribute TAttrid::@parent */
 /* 4: Attribute TAttrid::_symbol_cache */
 /* 5: Attribute TAttrid::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAttrid[] = "init var of TAttrid";
 void INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAttrid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TAttrid(void)
@@ -48523,13 +49603,13 @@ val_t NEW_TAttrid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TAttrid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TAttrid();
   INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -48556,16 +49636,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TNumber < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -48573,8 +49643,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48582,6 +49651,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TNumber < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -48595,17 +49675,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TNumber < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TNumber < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -48620,21 +49700,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TNumber::_parent */
-/* 3: Attribute TNumber::_location */
+/* 2: Attribute TNumber::_location */
+/* 3: Attribute TNumber::@parent */
 /* 4: Attribute TNumber::_symbol_cache */
 /* 5: Attribute TNumber::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNumber[] = "init var of TNumber";
 void INIT_ATTRIBUTES__parser___parser_nodes___TNumber(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNumber;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TNumber(void)
@@ -48689,13 +49778,13 @@ val_t NEW_TNumber_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TNumber_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TNumber();
   INIT_ATTRIBUTES__parser___parser_nodes___TNumber(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -48722,16 +49811,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TFloat < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -48739,8 +49818,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48748,6 +49826,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TFloat < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -48761,17 +49850,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TFloat < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TFloat < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -48786,21 +49875,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TFloat::_parent */
-/* 3: Attribute TFloat::_location */
+/* 2: Attribute TFloat::_location */
+/* 3: Attribute TFloat::@parent */
 /* 4: Attribute TFloat::_symbol_cache */
 /* 5: Attribute TFloat::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TFloat[] = "init var of TFloat";
 void INIT_ATTRIBUTES__parser___parser_nodes___TFloat(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TFloat;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TFloat(void)
@@ -48855,13 +49953,13 @@ val_t NEW_TFloat_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TFloat_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TFloat();
   INIT_ATTRIBUTES__parser___parser_nodes___TFloat(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -48888,16 +49986,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TChar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -48905,8 +49993,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48914,6 +50001,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TChar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -48927,17 +50025,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TChar < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TChar < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -48952,21 +50050,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TChar::_parent */
-/* 3: Attribute TChar::_location */
+/* 2: Attribute TChar::_location */
+/* 3: Attribute TChar::@parent */
 /* 4: Attribute TChar::_symbol_cache */
 /* 5: Attribute TChar::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TChar[] = "init var of TChar";
 void INIT_ATTRIBUTES__parser___parser_nodes___TChar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TChar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TChar(void)
@@ -49021,13 +50128,13 @@ val_t NEW_TChar_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TChar_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TChar();
   INIT_ATTRIBUTES__parser___parser_nodes___TChar(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -49054,16 +50161,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -49071,8 +50168,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49080,6 +50176,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -49093,17 +50200,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TString < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TString < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -49118,21 +50225,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TString::_parent */
-/* 3: Attribute TString::_location */
+/* 2: Attribute TString::_location */
+/* 3: Attribute TString::@parent */
 /* 4: Attribute TString::_symbol_cache */
 /* 5: Attribute TString::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TString[] = "init var of TString";
 void INIT_ATTRIBUTES__parser___parser_nodes___TString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TString;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TString(void)
@@ -49187,13 +50303,13 @@ val_t NEW_TString_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TString();
   INIT_ATTRIBUTES__parser___parser_nodes___TString(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -49220,16 +50336,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TStartString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -49237,8 +50343,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49246,6 +50351,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TStartString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -49259,17 +50375,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TStartString < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TStartString < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -49284,21 +50400,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TStartString::_parent */
-/* 3: Attribute TStartString::_location */
+/* 2: Attribute TStartString::_location */
+/* 3: Attribute TStartString::@parent */
 /* 4: Attribute TStartString::_symbol_cache */
 /* 5: Attribute TStartString::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStartString[] = "init var of TStartString";
 void INIT_ATTRIBUTES__parser___parser_nodes___TStartString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStartString;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TStartString(void)
@@ -49353,13 +50478,13 @@ val_t NEW_TStartString_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TStartString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TStartString();
   INIT_ATTRIBUTES__parser___parser_nodes___TStartString(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -49386,16 +50511,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TMidString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -49403,8 +50518,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49412,6 +50526,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TMidString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -49425,17 +50550,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 2 /* 63: TMidString < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: TMidString < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -49450,21 +50575,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TMidString::_parent */
-/* 3: Attribute TMidString::_location */
+/* 2: Attribute TMidString::_location */
+/* 3: Attribute TMidString::@parent */
 /* 4: Attribute TMidString::_symbol_cache */
 /* 5: Attribute TMidString::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMidString[] = "init var of TMidString";
 void INIT_ATTRIBUTES__parser___parser_nodes___TMidString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMidString;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TMidString(void)
@@ -49519,13 +50653,13 @@ val_t NEW_TMidString_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TMidString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TMidString();
   INIT_ATTRIBUTES__parser___parser_nodes___TMidString(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -49552,16 +50686,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TEndString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -49569,8 +50693,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49578,6 +50701,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TEndString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -49591,17 +50725,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TEndString < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TEndString < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -49615,21 +50749,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TEndString::_parent */
-/* 3: Attribute TEndString::_location */
+/* 2: Attribute TEndString::_location */
+/* 3: Attribute TEndString::@parent */
 /* 4: Attribute TEndString::_symbol_cache */
 /* 5: Attribute TEndString::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEndString[] = "init var of TEndString";
 void INIT_ATTRIBUTES__parser___parser_nodes___TEndString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEndString;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TEndString(void)
@@ -49684,13 +50827,13 @@ val_t NEW_TEndString_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TEndString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TEndString();
   INIT_ATTRIBUTES__parser___parser_nodes___TEndString(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -49717,16 +50860,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadString[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TBadString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -49734,8 +50867,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadString[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TBadString___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49743,6 +50875,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadString[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TBadString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -49756,17 +50899,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadString[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TBadString < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TBadString < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -49780,21 +50923,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadString[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TBadString::_parent */
-/* 3: Attribute TBadString::_location */
+/* 2: Attribute TBadString::_location */
+/* 3: Attribute TBadString::@parent */
 /* 4: Attribute TBadString::_symbol_cache */
 /* 5: Attribute TBadString::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadString[] = "init var of TBadString";
 void INIT_ATTRIBUTES__parser___parser_nodes___TBadString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadString;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TBadString(void)
@@ -49849,13 +51001,13 @@ val_t NEW_TBadString_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TBadString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TBadString();
   INIT_ATTRIBUTES__parser___parser_nodes___TBadString(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -49882,16 +51034,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadChar[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TBadChar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -49899,8 +51041,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadChar[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___TBadChar___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49908,6 +51049,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadChar[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TBadChar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -49921,17 +51073,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadChar[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TBadChar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TBadChar < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -49945,21 +51097,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TBadChar[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TBadChar::_parent */
-/* 3: Attribute TBadChar::_location */
+/* 2: Attribute TBadChar::_location */
+/* 3: Attribute TBadChar::@parent */
 /* 4: Attribute TBadChar::_symbol_cache */
 /* 5: Attribute TBadChar::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadChar[] = "init var of TBadChar";
 void INIT_ATTRIBUTES__parser___parser_nodes___TBadChar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadChar;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TBadChar(void)
@@ -50014,13 +51175,13 @@ val_t NEW_TBadChar_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TBadChar_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TBadChar();
   INIT_ATTRIBUTES__parser___parser_nodes___TBadChar(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -50047,16 +51208,6 @@ const classtable_elt_t VFT_parser___parser_nodes___TExternCodeSegment[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TExternCodeSegment < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -50064,8 +51215,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TExternCodeSegment[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50073,6 +51223,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TExternCodeSegment[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TExternCodeSegment < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -50086,17 +51247,17 @@ const classtable_elt_t VFT_parser___parser_nodes___TExternCodeSegment[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: TExternCodeSegment < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: TExternCodeSegment < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -50111,21 +51272,30 @@ const classtable_elt_t VFT_parser___parser_nodes___TExternCodeSegment[79] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TExternCodeSegment::_parent */
-/* 3: Attribute TExternCodeSegment::_location */
+/* 2: Attribute TExternCodeSegment::_location */
+/* 3: Attribute TExternCodeSegment::@parent */
 /* 4: Attribute TExternCodeSegment::_symbol_cache */
 /* 5: Attribute TExternCodeSegment::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment[] = "init var of TExternCodeSegment";
 void INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___TExternCodeSegment(void)
@@ -50180,13 +51350,13 @@ val_t NEW_TExternCodeSegment_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_TExternCodeSegment_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___TExternCodeSegment();
   INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -50213,16 +51383,6 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: EOF < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -50230,8 +51390,7 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50239,6 +51398,17 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: EOF < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -50252,17 +51422,17 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[78] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: EOF < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: EOF < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -50276,21 +51446,30 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute EOF::_parent */
-/* 3: Attribute EOF::_location */
+/* 2: Attribute EOF::_location */
+/* 3: Attribute EOF::@parent */
 /* 4: Attribute EOF::_symbol_cache */
 /* 5: Attribute EOF::_text */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___EOF[] = "init var of EOF";
 void INIT_ATTRIBUTES__parser___parser_nodes___EOF(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___EOF;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___EOF(void)
@@ -50345,13 +51524,13 @@ val_t NEW_EOF_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_EOF_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___EOF();
   INIT_ATTRIBUTES__parser___parser_nodes___EOF(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -50378,16 +51557,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AError < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -50395,8 +51564,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50404,6 +51572,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AError < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -50417,17 +51596,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: AError < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AError < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -50444,22 +51623,31 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[81] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AError::_parent */
-/* 3: Attribute AError::_location */
+/* 2: Attribute AError::_location */
+/* 3: Attribute AError::@parent */
 /* 4: Attribute AError::_symbol_cache */
 /* 5: Attribute AError::_text */
 /* 6: Attribute AError::_message */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AError[] = "init var of AError";
 void INIT_ATTRIBUTES__parser___parser_nodes___AError(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AError;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___AError(void)
@@ -50547,13 +51735,13 @@ val_t NEW_AError_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AError_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AError();
   INIT_ATTRIBUTES__parser___parser_nodes___AError(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -50562,7 +51750,7 @@ val_t NEW_AError_parser___parser_nodes___ANode___init(void){
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
-  {(bigint) 4707 /* 0: Identity */},
+  {(bigint) 4711 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALexerError" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALexerError < Object: superclass typecheck marker */},
@@ -50570,7 +51758,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
   {(bigint) 335 /* 5: ALexerError < Token: superclass typecheck marker */},
   {(bigint) 3675 /* 6: ALexerError < EOF: superclass typecheck marker */},
   {(bigint) 4499 /* 7: ALexerError < AError: superclass typecheck marker */},
-  {(bigint) 4707 /* 8: ALexerError < ALexerError: superclass typecheck marker */},
+  {(bigint) 4711 /* 8: ALexerError < ALexerError: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50580,16 +51768,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ALexerError < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -50597,8 +51775,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50606,6 +51783,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ALexerError < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -50619,17 +51807,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: ALexerError < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: ALexerError < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -50649,23 +51837,32 @@ const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALexerError::_parent */
-/* 3: Attribute ALexerError::_location */
+/* 2: Attribute ALexerError::_location */
+/* 3: Attribute ALexerError::@parent */
 /* 4: Attribute ALexerError::_symbol_cache */
 /* 5: Attribute ALexerError::_text */
 /* 6: Attribute ALexerError::_message */
 /* 7: Attribute ALexerError::_string */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALexerError[] = "init var of ALexerError";
 void INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALexerError;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___ALexerError(void)
@@ -50762,13 +51959,13 @@ val_t NEW_ALexerError_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALexerError_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALexerError();
   INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -50818,16 +52015,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AParserError[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AParserError < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -50835,8 +52022,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParserError[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50844,6 +52030,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AParserError[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AParserError < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -50857,17 +52054,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AParserError[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 63: AParserError < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AParserError < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___Token___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_nodes___Token___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
@@ -50887,23 +52084,32 @@ const classtable_elt_t VFT_parser___parser_nodes___AParserError[84] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AParserError::_parent */
-/* 3: Attribute AParserError::_location */
+/* 2: Attribute AParserError::_location */
+/* 3: Attribute AParserError::@parent */
 /* 4: Attribute AParserError::_symbol_cache */
 /* 5: Attribute AParserError::_text */
 /* 6: Attribute AParserError::_message */
 /* 7: Attribute AParserError::_token */
 static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParserError[] = "init var of AParserError";
 void INIT_ATTRIBUTES__parser___parser_nodes___AParserError(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParserError;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_parser___parser_nodes___AParserError(void)
@@ -51000,13 +52206,13 @@ val_t NEW_AParserError_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AParserError_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParserError();
   INIT_ATTRIBUTES__parser___parser_nodes___AParserError(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -51037,7 +52243,7 @@ val_t NEW_AParserError_parser___lexer___EOF___init_tk(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModule[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___AModule[85] = {
   {(bigint) 3767 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AModule" /* 2: Class Name */},
@@ -51056,16 +52262,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AModule < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -51073,8 +52269,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51082,6 +52277,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AModule < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -51095,37 +52301,39 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[83] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AModule___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AModule___visit_all},
-  {(bigint) 1 /* 63: AModule < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AModule < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AModule___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AModule___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AModule < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AModule < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AModule___import_super_modules},
   {(bigint) parser___parser_prod___AModule___empty_init},
   {(bigint) parser___parser_prod___AModule___init_amodule},
-  {(bigint) 3 /* 78: AModule < AModule: superclass init_table position */},
+  {(bigint) 3 /* 79: AModule < AModule: superclass init_table position */},
   {(bigint) parser___parser_nodes___AModule___n_moduledecl},
+  {(bigint) parser___parser_prod___AModule___n_moduledecl__eq},
   {(bigint) parser___parser_nodes___AModule___n_imports},
   {(bigint) parser___parser_nodes___AModule___n_extern_code_blocks},
   {(bigint) parser___parser_nodes___AModule___n_classdefs},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AModule::_parent */
-/* 3: Attribute AModule::_location */
+/* 2: Attribute AModule::_location */
+/* 3: Attribute AModule::@parent */
 /* 4: Attribute AModule::_first_location */
 /* 5: Attribute AModule::_last_location */
 /* 6: Attribute AModule::_n_annotations */
@@ -51147,20 +52355,29 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AModule(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:401 */
+  /* parser/parser_nodes.nit:565 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:402 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:566 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:403 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:567 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:404 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:568 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -51211,13 +52428,13 @@ val_t NEW_AModule_parser___parser_prod___AModule___empty_init(void){
   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 = 71;
+  fra.me.line = 10;
   fra.me.meth = LOCATE_NEW_AModule_parser___parser_prod___AModule___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:71 */
+  /* parser/parser_prod.nit:10 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AModule();
   INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[0]);
   parser___parser_prod___AModule___empty_init(fra.me.REG[0], init_table);
@@ -51232,7 +52449,7 @@ val_t NEW_AModule_parser___parser_prod___AModule___init_amodule(val_t p0, val_t
   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 = 73;
+  fra.me.line = 12;
   fra.me.meth = LOCATE_NEW_AModule_parser___parser_prod___AModule___init_amodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51246,7 +52463,7 @@ val_t NEW_AModule_parser___parser_prod___AModule___init_amodule(val_t p0, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:73 */
+  /* parser/parser_prod.nit:12 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AModule();
   INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[4]);
   parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -51261,13 +52478,13 @@ val_t NEW_AModule_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AModule_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AModule();
   INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -51275,7 +52492,7 @@ val_t NEW_AModule_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[85] = {
   {(bigint) 3759 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AModuledecl" /* 2: Class Name */},
@@ -51294,16 +52511,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AModuledecl < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -51311,8 +52518,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51320,6 +52526,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AModuledecl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -51333,35 +52550,39 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AModuledecl___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AModuledecl___visit_all},
-  {(bigint) 1 /* 63: AModuledecl < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AModuledecl < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AModuledecl___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AModuledecl___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AModuledecl < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AModuledecl < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AModuledecl___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AModuledecl___empty_init},
   {(bigint) parser___parser_prod___AModuledecl___init_amoduledecl},
-  {(bigint) 3 /* 77: AModuledecl < AModuledecl: superclass init_table position */},
+  {(bigint) 3 /* 78: AModuledecl < AModuledecl: superclass init_table position */},
   {(bigint) parser___parser_nodes___AModuledecl___n_doc},
+  {(bigint) parser___parser_prod___AModuledecl___n_doc__eq},
   {(bigint) parser___parser_nodes___AModuledecl___n_kwmodule},
+  {(bigint) parser___parser_prod___AModuledecl___n_kwmodule__eq},
   {(bigint) parser___parser_nodes___AModuledecl___n_name},
+  {(bigint) parser___parser_prod___AModuledecl___n_name__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AModuledecl::_parent */
-/* 3: Attribute AModuledecl::_location */
+/* 2: Attribute AModuledecl::_location */
+/* 3: Attribute AModuledecl::@parent */
 /* 4: Attribute AModuledecl::_first_location */
 /* 5: Attribute AModuledecl::_last_location */
 /* 6: Attribute AModuledecl::_n_annotations */
@@ -51382,10 +52603,16 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:408 */
+  /* parser/parser_nodes.nit:574 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -51432,13 +52659,13 @@ val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init(void){
   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 = 169;
+  fra.me.line = 117;
   fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:169 */
+  /* parser/parser_prod.nit:117 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AModuledecl();
   INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[0]);
   parser___parser_prod___AModuledecl___empty_init(fra.me.REG[0], init_table);
@@ -51453,7 +52680,7 @@ val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(val_
   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 = 171;
+  fra.me.line = 119;
   fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51467,7 +52694,7 @@ val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(val_
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:171 */
+  /* parser/parser_prod.nit:119 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AModuledecl();
   INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[4]);
   parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -51482,13 +52709,13 @@ val_t NEW_AModuledecl_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AModuledecl();
   INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -51496,7 +52723,7 @@ val_t NEW_AModuledecl_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStdImport[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___AStdImport[88] = {
   {(bigint) 4299 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStdImport" /* 2: Class Name */},
@@ -51515,16 +52742,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AStdImport < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -51532,8 +52749,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51541,6 +52757,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AStdImport < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -51554,38 +52781,42 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStdImport___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStdImport___visit_all},
-  {(bigint) 2 /* 63: AStdImport < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AStdImport < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStdImport___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStdImport___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AStdImport < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AStdImport < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AStdImport___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AStdImport___module_name},
   {(bigint) syntax___mmbuilder___AStdImport___visibility_level},
-  {(bigint) 0 /* 77: AStdImport < AImport: superclass init_table position */},
+  {(bigint) 0 /* 78: AStdImport < AImport: superclass init_table position */},
   {(bigint) parser___parser_prod___AStdImport___empty_init},
   {(bigint) parser___parser_prod___AStdImport___init_astdimport},
-  {(bigint) 4 /* 80: AStdImport < AStdImport: superclass init_table position */},
+  {(bigint) 4 /* 81: AStdImport < AStdImport: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStdImport___n_visibility},
+  {(bigint) parser___parser_prod___AStdImport___n_visibility__eq},
   {(bigint) parser___parser_nodes___AStdImport___n_kwimport},
+  {(bigint) parser___parser_prod___AStdImport___n_kwimport__eq},
   {(bigint) parser___parser_nodes___AStdImport___n_name},
+  {(bigint) parser___parser_prod___AStdImport___n_name__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStdImport::_parent */
-/* 3: Attribute AStdImport::_location */
+/* 2: Attribute AStdImport::_location */
+/* 3: Attribute AStdImport::@parent */
 /* 4: Attribute AStdImport::_first_location */
 /* 5: Attribute AStdImport::_last_location */
 /* 6: Attribute AStdImport::_n_annotations */
@@ -51606,7 +52837,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -51658,13 +52895,13 @@ val_t NEW_AStdImport_parser___parser_prod___AStdImport___empty_init(void){
   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 = 250;
+  fra.me.line = 224;
   fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:250 */
+  /* parser/parser_prod.nit:224 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStdImport();
   INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[0]);
   parser___parser_prod___AStdImport___empty_init(fra.me.REG[0], init_table);
@@ -51679,7 +52916,7 @@ val_t NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(val_t p
   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 = 252;
+  fra.me.line = 226;
   fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51693,7 +52930,7 @@ val_t NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:252 */
+  /* parser/parser_prod.nit:226 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AStdImport();
   INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[4]);
   parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -51708,13 +52945,13 @@ val_t NEW_AStdImport_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStdImport();
   INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -51722,7 +52959,7 @@ val_t NEW_AStdImport_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANoImport[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___ANoImport[88] = {
   {(bigint) 4383 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANoImport" /* 2: Class Name */},
@@ -51741,16 +52978,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ANoImport < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -51758,8 +52985,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51767,6 +52993,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ANoImport < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -51780,38 +53017,42 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANoImport___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANoImport___visit_all},
-  {(bigint) 2 /* 63: ANoImport < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ANoImport < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ANoImport___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANoImport___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ANoImport < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ANoImport < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANoImport___module_name},
   {(bigint) syntax___mmbuilder___AImport___visibility_level},
-  {(bigint) 0 /* 77: ANoImport < AImport: superclass init_table position */},
+  {(bigint) 0 /* 78: ANoImport < AImport: superclass init_table position */},
   {(bigint) parser___parser_prod___ANoImport___empty_init},
   {(bigint) parser___parser_prod___ANoImport___init_anoimport},
-  {(bigint) 4 /* 80: ANoImport < ANoImport: superclass init_table position */},
+  {(bigint) 4 /* 81: ANoImport < ANoImport: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANoImport___n_visibility},
+  {(bigint) parser___parser_prod___ANoImport___n_visibility__eq},
   {(bigint) parser___parser_nodes___ANoImport___n_kwimport},
+  {(bigint) parser___parser_prod___ANoImport___n_kwimport__eq},
   {(bigint) parser___parser_nodes___ANoImport___n_kwend},
+  {(bigint) parser___parser_prod___ANoImport___n_kwend__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ANoImport::_parent */
-/* 3: Attribute ANoImport::_location */
+/* 2: Attribute ANoImport::_location */
+/* 3: Attribute ANoImport::@parent */
 /* 4: Attribute ANoImport::_first_location */
 /* 5: Attribute ANoImport::_last_location */
 /* 6: Attribute ANoImport::_n_annotations */
@@ -51832,7 +53073,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -51884,13 +53131,13 @@ val_t NEW_ANoImport_parser___parser_prod___ANoImport___empty_init(void){
   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 = 327;
+  fra.me.line = 325;
   fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:327 */
+  /* parser/parser_prod.nit:325 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANoImport();
   INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[0]);
   parser___parser_prod___ANoImport___empty_init(fra.me.REG[0], init_table);
@@ -51905,7 +53152,7 @@ val_t NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(val_t p0,
   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 = 329;
+  fra.me.line = 327;
   fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51917,7 +53164,7 @@ val_t NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:329 */
+  /* parser/parser_prod.nit:327 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ANoImport();
   INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[3]);
   parser___parser_prod___ANoImport___init_anoimport(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -51932,13 +53179,13 @@ val_t NEW_ANoImport_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANoImport();
   INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -51946,7 +53193,7 @@ val_t NEW_ANoImport_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[81] = {
   {(bigint) 4343 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APublicVisibility" /* 2: Class Name */},
@@ -51965,16 +53212,6 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: APublicVisibility < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -51982,8 +53219,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51991,6 +53227,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: APublicVisibility < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -52004,34 +53251,35 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APublicVisibility___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APublicVisibility___visit_all},
-  {(bigint) 2 /* 63: APublicVisibility < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: APublicVisibility < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APublicVisibility___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APublicVisibility___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: APublicVisibility < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: APublicVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APublicVisibility___level},
-  {(bigint) 0 /* 76: APublicVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 0 /* 77: APublicVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___APublicVisibility___empty_init},
   {(bigint) parser___parser_prod___APublicVisibility___init_apublicvisibility},
-  {(bigint) 4 /* 79: APublicVisibility < APublicVisibility: superclass init_table position */},
+  {(bigint) 4 /* 80: APublicVisibility < APublicVisibility: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APublicVisibility::_parent */
-/* 3: Attribute APublicVisibility::_location */
+/* 2: Attribute APublicVisibility::_location */
+/* 3: Attribute APublicVisibility::@parent */
 /* 4: Attribute APublicVisibility::_first_location */
 /* 5: Attribute APublicVisibility::_last_location */
 /* 6: Attribute APublicVisibility::_n_annotations */
@@ -52049,7 +53297,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -52083,13 +53337,13 @@ val_t NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_ini
   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 = 386;
+  fra.me.line = 401;
   fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:386 */
+  /* parser/parser_prod.nit:401 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
   parser___parser_prod___APublicVisibility___empty_init(fra.me.REG[0], init_table);
@@ -52104,13 +53358,13 @@ val_t NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apub
   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 = 388;
+  fra.me.line = 403;
   fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:388 */
+  /* parser/parser_prod.nit:403 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
   parser___parser_prod___APublicVisibility___init_apublicvisibility(fra.me.REG[0], init_table);
@@ -52125,13 +53379,13 @@ val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -52139,7 +53393,7 @@ val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[83] = {
   {(bigint) 4359 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APrivateVisibility" /* 2: Class Name */},
@@ -52158,16 +53412,6 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: APrivateVisibility < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -52175,8 +53419,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52184,6 +53427,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: APrivateVisibility < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -52197,35 +53451,37 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APrivateVisibility___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APrivateVisibility___visit_all},
-  {(bigint) 2 /* 63: APrivateVisibility < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: APrivateVisibility < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APrivateVisibility___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APrivateVisibility___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: APrivateVisibility < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: APrivateVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APrivateVisibility___level},
-  {(bigint) 0 /* 76: APrivateVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 0 /* 77: APrivateVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___APrivateVisibility___empty_init},
   {(bigint) parser___parser_prod___APrivateVisibility___init_aprivatevisibility},
-  {(bigint) 4 /* 79: APrivateVisibility < APrivateVisibility: superclass init_table position */},
+  {(bigint) 4 /* 80: APrivateVisibility < APrivateVisibility: superclass init_table position */},
   {(bigint) parser___parser_nodes___APrivateVisibility___n_kwprivate},
+  {(bigint) parser___parser_prod___APrivateVisibility___n_kwprivate__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APrivateVisibility::_parent */
-/* 3: Attribute APrivateVisibility::_location */
+/* 2: Attribute APrivateVisibility::_location */
+/* 3: Attribute APrivateVisibility::@parent */
 /* 4: Attribute APrivateVisibility::_first_location */
 /* 5: Attribute APrivateVisibility::_last_location */
 /* 6: Attribute APrivateVisibility::_n_annotations */
@@ -52244,7 +53500,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -52286,13 +53548,13 @@ val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_i
   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 = 402;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:402 */
+  /* parser/parser_prod.nit:419 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APrivateVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
   parser___parser_prod___APrivateVisibility___empty_init(fra.me.REG[0], init_table);
@@ -52307,7 +53569,7 @@ val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_ap
   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 = 404;
+  fra.me.line = 421;
   fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -52315,7 +53577,7 @@ val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_ap
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:404 */
+  /* parser/parser_prod.nit:421 */
   fra.me.REG[1] = NEW_parser___parser_nodes___APrivateVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
   parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -52330,13 +53592,13 @@ val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APrivateVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -52344,7 +53606,7 @@ val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[83] = {
   {(bigint) 4351 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AProtectedVisibility" /* 2: Class Name */},
@@ -52363,16 +53625,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AProtectedVisibility < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -52380,8 +53632,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52389,6 +53640,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AProtectedVisibility < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -52402,35 +53664,37 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AProtectedVisibility___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AProtectedVisibility___visit_all},
-  {(bigint) 2 /* 63: AProtectedVisibility < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AProtectedVisibility < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AProtectedVisibility___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AProtectedVisibility___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AProtectedVisibility < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AProtectedVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AProtectedVisibility___level},
-  {(bigint) 0 /* 76: AProtectedVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 0 /* 77: AProtectedVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___AProtectedVisibility___empty_init},
   {(bigint) parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility},
-  {(bigint) 4 /* 79: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
+  {(bigint) 4 /* 80: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProtectedVisibility___n_kwprotected},
+  {(bigint) parser___parser_prod___AProtectedVisibility___n_kwprotected__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AProtectedVisibility::_parent */
-/* 3: Attribute AProtectedVisibility::_location */
+/* 2: Attribute AProtectedVisibility::_location */
+/* 3: Attribute AProtectedVisibility::@parent */
 /* 4: Attribute AProtectedVisibility::_first_location */
 /* 5: Attribute AProtectedVisibility::_last_location */
 /* 6: Attribute AProtectedVisibility::_n_annotations */
@@ -52449,7 +53713,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -52491,13 +53761,13 @@ val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___emp
   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 = 433;
+  fra.me.line = 457;
   fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:433 */
+  /* parser/parser_prod.nit:457 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AProtectedVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
   parser___parser_prod___AProtectedVisibility___empty_init(fra.me.REG[0], init_table);
@@ -52512,7 +53782,7 @@ val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___ini
   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 = 435;
+  fra.me.line = 459;
   fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -52520,7 +53790,7 @@ val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:435 */
+  /* parser/parser_prod.nit:459 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AProtectedVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
   parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -52535,13 +53805,13 @@ val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AProtectedVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -52549,7 +53819,7 @@ val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[83] = {
   {(bigint) 4443 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIntrudeVisibility" /* 2: Class Name */},
@@ -52568,16 +53838,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AIntrudeVisibility < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -52585,8 +53845,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52594,6 +53853,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AIntrudeVisibility < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -52607,35 +53877,37 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIntrudeVisibility___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIntrudeVisibility___visit_all},
-  {(bigint) 2 /* 63: AIntrudeVisibility < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AIntrudeVisibility < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIntrudeVisibility < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AIntrudeVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AIntrudeVisibility___level},
-  {(bigint) 0 /* 76: AIntrudeVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 0 /* 77: AIntrudeVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___AIntrudeVisibility___empty_init},
   {(bigint) parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility},
-  {(bigint) 4 /* 79: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
+  {(bigint) 4 /* 80: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIntrudeVisibility___n_kwintrude},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___n_kwintrude__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIntrudeVisibility::_parent */
-/* 3: Attribute AIntrudeVisibility::_location */
+/* 2: Attribute AIntrudeVisibility::_location */
+/* 3: Attribute AIntrudeVisibility::@parent */
 /* 4: Attribute AIntrudeVisibility::_first_location */
 /* 5: Attribute AIntrudeVisibility::_last_location */
 /* 6: Attribute AIntrudeVisibility::_n_annotations */
@@ -52654,7 +53926,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -52696,13 +53974,13 @@ val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_i
   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 = 464;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:464 */
+  /* parser/parser_prod.nit:495 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIntrudeVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
   parser___parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[0], init_table);
@@ -52717,7 +53995,7 @@ val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_ai
   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 = 466;
+  fra.me.line = 497;
   fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -52725,7 +54003,7 @@ val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_ai
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:466 */
+  /* parser/parser_prod.nit:497 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AIntrudeVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
   parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -52740,13 +54018,13 @@ val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIntrudeVisibility();
   INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -52754,7 +54032,7 @@ val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
+const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[112] = {
   {(bigint) 4303 /* 0: Identity */},
   {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStdClassdef" /* 2: Class Name */},
@@ -52773,16 +54051,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AStdClassdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -52790,8 +54058,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52799,6 +54066,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AStdClassdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -52812,24 +54090,25 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___extern_inline___AStdClassdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStdClassdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStdClassdef___visit_all},
-  {(bigint) 2 /* 63: AStdClassdef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AStdClassdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AStdClassdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStdClassdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStdClassdef___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___AClassdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AStdClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AStdClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AStdClassdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AStdClassdef___name},
   {(bigint) syntax___mmbuilder___AStdClassdef___arity},
   {(bigint) syntax___mmbuilder___AStdClassdef___visibility_level},
@@ -52841,7 +54120,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 0 /* 86: AStdClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 0 /* 87: AStdClassdef < AClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClassdef___n_propdefs},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -52849,21 +54128,28 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
   {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
   {(bigint) parser___parser_prod___AStdClassdef___empty_init},
   {(bigint) parser___parser_prod___AStdClassdef___init_astdclassdef},
-  {(bigint) 4 /* 94: AStdClassdef < AStdClassdef: superclass init_table position */},
+  {(bigint) 4 /* 95: AStdClassdef < AStdClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStdClassdef___n_doc},
+  {(bigint) parser___parser_prod___AStdClassdef___n_doc__eq},
   {(bigint) parser___parser_nodes___AStdClassdef___n_kwredef},
+  {(bigint) parser___parser_prod___AStdClassdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AStdClassdef___n_visibility},
+  {(bigint) parser___parser_prod___AStdClassdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AStdClassdef___n_classkind},
+  {(bigint) parser___parser_prod___AStdClassdef___n_classkind__eq},
   {(bigint) parser___parser_nodes___AStdClassdef___n_id},
+  {(bigint) parser___parser_prod___AStdClassdef___n_id__eq},
   {(bigint) parser___parser_nodes___AStdClassdef___n_formaldefs},
   {(bigint) parser___parser_nodes___AStdClassdef___n_extern_code_block},
+  {(bigint) parser___parser_prod___AStdClassdef___n_extern_code_block__eq},
   {(bigint) parser___parser_nodes___AStdClassdef___n_superclasses},
   {(bigint) parser___parser_nodes___AStdClassdef___n_kwend},
+  {(bigint) parser___parser_prod___AStdClassdef___n_kwend__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStdClassdef::_parent */
-/* 3: Attribute AStdClassdef::_location */
+/* 2: Attribute AStdClassdef::_location */
+/* 3: Attribute AStdClassdef::@parent */
 /* 4: Attribute AStdClassdef::_first_location */
 /* 5: Attribute AStdClassdef::_last_location */
 /* 6: Attribute AStdClassdef::_n_annotations */
@@ -52893,32 +54179,41 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:442 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:629 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/syntax_base.nit:533 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:446 */
+  /* parser/parser_nodes.nit:635 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:447 */
+  /* parser/parser_nodes.nit:636 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:450 */
+  /* parser/parser_nodes.nit:639 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:451 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:640 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:452 */
+  /* parser/parser_nodes.nit:641 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:453 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:642 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -52984,13 +54279,13 @@ val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init(void){
   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 = 495;
+  fra.me.line = 533;
   fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:495 */
+  /* parser/parser_prod.nit:533 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStdClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
   parser___parser_prod___AStdClassdef___empty_init(fra.me.REG[0], init_table);
@@ -53005,7 +54300,7 @@ val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(v
   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 = 497;
+  fra.me.line = 535;
   fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -53033,7 +54328,7 @@ val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(v
   fra.me.REG[8] = p8;
   fra.me.REG[9] = p9;
   fra.me.REG[10] = p10;
-  /* parser/parser_prod.nit:497 */
+  /* parser/parser_prod.nit:535 */
   fra.me.REG[11] = NEW_parser___parser_nodes___AStdClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[11]);
   parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10], init_table);
@@ -53048,13 +54343,13 @@ val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStdClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -53062,7 +54357,7 @@ val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
+const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[93] = {
   {(bigint) 4283 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATopClassdef" /* 2: Class Name */},
@@ -53081,16 +54376,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ATopClassdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -53098,8 +54383,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53107,6 +54391,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ATopClassdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -53120,24 +54415,25 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATopClassdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATopClassdef___visit_all},
-  {(bigint) 2 /* 63: ATopClassdef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ATopClassdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ATopClassdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATopClassdef___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___AClassdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ATopClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ATopClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ATopClassdef___name},
   {(bigint) syntax___mmbuilder___AClassdef___arity},
   {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
@@ -53149,17 +54445,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 0 /* 86: ATopClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 0 /* 87: ATopClassdef < AClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClassdef___n_propdefs},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___ATopClassdef___empty_init},
   {(bigint) parser___parser_prod___ATopClassdef___init_atopclassdef},
-  {(bigint) 4 /* 91: ATopClassdef < ATopClassdef: superclass init_table position */},
+  {(bigint) 4 /* 92: ATopClassdef < ATopClassdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ATopClassdef::_parent */
-/* 3: Attribute ATopClassdef::_location */
+/* 2: Attribute ATopClassdef::_location */
+/* 3: Attribute ATopClassdef::@parent */
 /* 4: Attribute ATopClassdef::_first_location */
 /* 5: Attribute ATopClassdef::_last_location */
 /* 6: Attribute ATopClassdef::_n_annotations */
@@ -53180,11 +54476,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:442 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:629 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/syntax_base.nit:533 */
   fra.me.REG[1] = NIT_NULL;
@@ -53228,13 +54531,13 @@ val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init(void){
   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 = 707;
+  fra.me.line = 797;
   fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:707 */
+  /* parser/parser_prod.nit:797 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATopClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
   parser___parser_prod___ATopClassdef___empty_init(fra.me.REG[0], init_table);
@@ -53249,7 +54552,7 @@ val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(v
   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 = 709;
+  fra.me.line = 799;
   fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -53257,7 +54560,7 @@ val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(v
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:709 */
+  /* parser/parser_prod.nit:799 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ATopClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
   parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -53272,13 +54575,13 @@ val_t NEW_ATopClassdef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATopClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -53286,7 +54589,7 @@ val_t NEW_ATopClassdef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
+const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[93] = {
   {(bigint) 4403 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMainClassdef" /* 2: Class Name */},
@@ -53305,16 +54608,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AMainClassdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -53322,8 +54615,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53331,6 +54623,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AMainClassdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -53344,24 +54647,25 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMainClassdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMainClassdef___visit_all},
-  {(bigint) 2 /* 63: AMainClassdef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AMainClassdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AMainClassdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMainClassdef___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___AClassdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AMainClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AMainClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AMainClassdef___name},
   {(bigint) syntax___mmbuilder___AClassdef___arity},
   {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
@@ -53373,17 +54677,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 0 /* 86: AMainClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 0 /* 87: AMainClassdef < AClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClassdef___n_propdefs},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___AMainClassdef___empty_init},
   {(bigint) parser___parser_prod___AMainClassdef___init_amainclassdef},
-  {(bigint) 4 /* 91: AMainClassdef < AMainClassdef: superclass init_table position */},
+  {(bigint) 4 /* 92: AMainClassdef < AMainClassdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AMainClassdef::_parent */
-/* 3: Attribute AMainClassdef::_location */
+/* 2: Attribute AMainClassdef::_location */
+/* 3: Attribute AMainClassdef::@parent */
 /* 4: Attribute AMainClassdef::_first_location */
 /* 5: Attribute AMainClassdef::_last_location */
 /* 6: Attribute AMainClassdef::_n_annotations */
@@ -53404,11 +54708,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:442 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:629 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/syntax_base.nit:533 */
   fra.me.REG[1] = NIT_NULL;
@@ -53452,13 +54763,13 @@ val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init(void){
   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 = 745;
+  fra.me.line = 837;
   fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:745 */
+  /* parser/parser_prod.nit:837 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMainClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
   parser___parser_prod___AMainClassdef___empty_init(fra.me.REG[0], init_table);
@@ -53473,7 +54784,7 @@ val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassde
   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 = 747;
+  fra.me.line = 839;
   fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -53481,7 +54792,7 @@ val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassde
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:747 */
+  /* parser/parser_prod.nit:839 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AMainClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
   parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -53496,13 +54807,13 @@ val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMainClassdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -53510,7 +54821,7 @@ val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[86] = {
   {(bigint) 4515 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AConcreteClasskind" /* 2: Class Name */},
@@ -53529,16 +54840,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AConcreteClasskind < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -53546,8 +54847,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53555,6 +54855,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AConcreteClasskind < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -53568,38 +54879,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AConcreteClasskind___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AConcreteClasskind___visit_all},
-  {(bigint) 2 /* 63: AConcreteClasskind < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AConcreteClasskind < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AConcreteClasskind___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AConcreteClasskind___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AConcreteClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AConcreteClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AClasskind___is_interface},
   {(bigint) syntax___mmbuilder___AClasskind___is_enum},
   {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
   {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 0 /* 79: AConcreteClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 0 /* 80: AConcreteClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AConcreteClasskind___empty_init},
   {(bigint) parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind},
-  {(bigint) 4 /* 82: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
+  {(bigint) 4 /* 83: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteClasskind___n_kwclass},
+  {(bigint) parser___parser_prod___AConcreteClasskind___n_kwclass__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AConcreteClasskind::_parent */
-/* 3: Attribute AConcreteClasskind::_location */
+/* 2: Attribute AConcreteClasskind::_location */
+/* 3: Attribute AConcreteClasskind::@parent */
 /* 4: Attribute AConcreteClasskind::_first_location */
 /* 5: Attribute AConcreteClasskind::_last_location */
 /* 6: Attribute AConcreteClasskind::_n_annotations */
@@ -53618,7 +54931,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -53660,13 +54979,13 @@ val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_i
   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.line = 877;
   fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:783 */
+  /* parser/parser_prod.nit:877 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
   parser___parser_prod___AConcreteClasskind___empty_init(fra.me.REG[0], init_table);
@@ -53681,7 +55000,7 @@ val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_ac
   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.line = 879;
   fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -53689,7 +55008,7 @@ val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_ac
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:785 */
+  /* parser/parser_prod.nit:879 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AConcreteClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
   parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -53704,13 +55023,13 @@ val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -53718,7 +55037,7 @@ val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[85] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[88] = {
   {(bigint) 4587 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbstractClasskind" /* 2: Class Name */},
@@ -53737,16 +55056,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[85] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAbstractClasskind < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -53754,8 +55063,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53763,6 +55071,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[85] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAbstractClasskind < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -53776,39 +55095,42 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[85] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAbstractClasskind___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAbstractClasskind___visit_all},
-  {(bigint) 2 /* 63: AAbstractClasskind < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAbstractClasskind < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAbstractClasskind___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAbstractClasskind___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAbstractClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAbstractClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AClasskind___is_interface},
   {(bigint) syntax___mmbuilder___AClasskind___is_enum},
   {(bigint) syntax___mmbuilder___AAbstractClasskind___is_abstract},
   {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 0 /* 79: AAbstractClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 0 /* 80: AAbstractClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AAbstractClasskind___empty_init},
   {(bigint) parser___parser_prod___AAbstractClasskind___init_aabstractclasskind},
-  {(bigint) 4 /* 82: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
+  {(bigint) 4 /* 83: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwabstract},
+  {(bigint) parser___parser_prod___AAbstractClasskind___n_kwabstract__eq},
   {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwclass},
+  {(bigint) parser___parser_prod___AAbstractClasskind___n_kwclass__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAbstractClasskind::_parent */
-/* 3: Attribute AAbstractClasskind::_location */
+/* 2: Attribute AAbstractClasskind::_location */
+/* 3: Attribute AAbstractClasskind::@parent */
 /* 4: Attribute AAbstractClasskind::_first_location */
 /* 5: Attribute AAbstractClasskind::_last_location */
 /* 6: Attribute AAbstractClasskind::_n_annotations */
@@ -53828,7 +55150,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -53875,13 +55203,13 @@ val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_i
   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 = 814;
+  fra.me.line = 915;
   fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:814 */
+  /* parser/parser_prod.nit:915 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAbstractClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
   parser___parser_prod___AAbstractClasskind___empty_init(fra.me.REG[0], init_table);
@@ -53896,7 +55224,7 @@ val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aa
   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 = 816;
+  fra.me.line = 917;
   fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -53906,7 +55234,7 @@ val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aa
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:816 */
+  /* parser/parser_prod.nit:917 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AAbstractClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[2]);
   parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -53921,13 +55249,13 @@ val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAbstractClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -53935,7 +55263,7 @@ val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[86] = {
   {(bigint) 4447 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInterfaceClasskind" /* 2: Class Name */},
@@ -53954,16 +55282,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AInterfaceClasskind < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -53971,8 +55289,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53980,6 +55297,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AInterfaceClasskind < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -53993,38 +55321,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInterfaceClasskind___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInterfaceClasskind___visit_all},
-  {(bigint) 2 /* 63: AInterfaceClasskind < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AInterfaceClasskind < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AInterfaceClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AInterfaceClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AInterfaceClasskind___is_interface},
   {(bigint) syntax___mmbuilder___AClasskind___is_enum},
   {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
   {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 0 /* 79: AInterfaceClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 0 /* 80: AInterfaceClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AInterfaceClasskind___empty_init},
   {(bigint) parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind},
-  {(bigint) 4 /* 82: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
+  {(bigint) 4 /* 83: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInterfaceClasskind___n_kwinterface},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___n_kwinterface__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AInterfaceClasskind::_parent */
-/* 3: Attribute AInterfaceClasskind::_location */
+/* 2: Attribute AInterfaceClasskind::_location */
+/* 3: Attribute AInterfaceClasskind::@parent */
 /* 4: Attribute AInterfaceClasskind::_first_location */
 /* 5: Attribute AInterfaceClasskind::_last_location */
 /* 6: Attribute AInterfaceClasskind::_n_annotations */
@@ -54043,7 +55373,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -54085,13 +55421,13 @@ val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty
   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 = 859;
+  fra.me.line = 972;
   fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:859 */
+  /* parser/parser_prod.nit:972 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInterfaceClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
   parser___parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[0], init_table);
@@ -54106,7 +55442,7 @@ val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_
   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 = 861;
+  fra.me.line = 974;
   fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -54114,7 +55450,7 @@ val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:861 */
+  /* parser/parser_prod.nit:974 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AInterfaceClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
   parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -54129,13 +55465,13 @@ val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInterfaceClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -54143,7 +55479,7 @@ val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[86] = {
   {(bigint) 4507 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEnumClasskind" /* 2: Class Name */},
@@ -54162,16 +55498,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AEnumClasskind < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -54179,8 +55505,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54188,6 +55513,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AEnumClasskind < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -54201,38 +55537,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEnumClasskind___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEnumClasskind___visit_all},
-  {(bigint) 2 /* 63: AEnumClasskind < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AEnumClasskind < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AEnumClasskind___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEnumClasskind___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AEnumClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AEnumClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AClasskind___is_interface},
   {(bigint) syntax___mmbuilder___AEnumClasskind___is_enum},
   {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
   {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 0 /* 79: AEnumClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 0 /* 80: AEnumClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AEnumClasskind___empty_init},
   {(bigint) parser___parser_prod___AEnumClasskind___init_aenumclasskind},
-  {(bigint) 4 /* 82: AEnumClasskind < AEnumClasskind: superclass init_table position */},
+  {(bigint) 4 /* 83: AEnumClasskind < AEnumClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEnumClasskind___n_kwenum},
+  {(bigint) parser___parser_prod___AEnumClasskind___n_kwenum__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AEnumClasskind::_parent */
-/* 3: Attribute AEnumClasskind::_location */
+/* 2: Attribute AEnumClasskind::_location */
+/* 3: Attribute AEnumClasskind::@parent */
 /* 4: Attribute AEnumClasskind::_first_location */
 /* 5: Attribute AEnumClasskind::_last_location */
 /* 6: Attribute AEnumClasskind::_n_annotations */
@@ -54251,7 +55589,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -54293,13 +55637,13 @@ val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init(void
   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 = 890;
+  fra.me.line = 1010;
   fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:890 */
+  /* parser/parser_prod.nit:1010 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEnumClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
   parser___parser_prod___AEnumClasskind___empty_init(fra.me.REG[0], init_table);
@@ -54314,7 +55658,7 @@ val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclass
   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 = 892;
+  fra.me.line = 1012;
   fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -54322,7 +55666,7 @@ val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclass
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:892 */
+  /* parser/parser_prod.nit:1012 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AEnumClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
   parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -54337,13 +55681,13 @@ val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEnumClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -54351,7 +55695,7 @@ val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[85] = {
+const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[88] = {
   {(bigint) 4487 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternClasskind" /* 2: Class Name */},
@@ -54370,16 +55714,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[85] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AExternClasskind < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -54387,8 +55721,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54396,6 +55729,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[85] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AExternClasskind < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -54409,39 +55753,42 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[85] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternClasskind___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternClasskind___visit_all},
-  {(bigint) 2 /* 63: AExternClasskind < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AExternClasskind < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AExternClasskind___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternClasskind___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AExternClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AExternClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AClasskind___is_interface},
   {(bigint) syntax___mmbuilder___AClasskind___is_enum},
   {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
   {(bigint) syntax___mmbuilder___AExternClasskind___is_extern},
-  {(bigint) 0 /* 79: AExternClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 0 /* 80: AExternClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AExternClasskind___empty_init},
   {(bigint) parser___parser_prod___AExternClasskind___init_aexternclasskind},
-  {(bigint) 4 /* 82: AExternClasskind < AExternClasskind: superclass init_table position */},
+  {(bigint) 4 /* 83: AExternClasskind < AExternClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternClasskind___n_kwextern},
+  {(bigint) parser___parser_prod___AExternClasskind___n_kwextern__eq},
   {(bigint) parser___parser_nodes___AExternClasskind___n_kwclass},
+  {(bigint) parser___parser_prod___AExternClasskind___n_kwclass__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternClasskind::_parent */
-/* 3: Attribute AExternClasskind::_location */
+/* 2: Attribute AExternClasskind::_location */
+/* 3: Attribute AExternClasskind::@parent */
 /* 4: Attribute AExternClasskind::_first_location */
 /* 5: Attribute AExternClasskind::_last_location */
 /* 6: Attribute AExternClasskind::_n_annotations */
@@ -54461,10 +55808,16 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:484 */
+  /* parser/parser_nodes.nit:681 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -54506,13 +55859,13 @@ val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init(
   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 = 921;
+  fra.me.line = 1048;
   fra.me.meth = LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:921 */
+  /* parser/parser_prod.nit:1048 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
   parser___parser_prod___AExternClasskind___empty_init(fra.me.REG[0], init_table);
@@ -54527,7 +55880,7 @@ val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexter
   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 = 923;
+  fra.me.line = 1050;
   fra.me.meth = LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -54537,7 +55890,7 @@ val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexter
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:923 */
+  /* parser/parser_prod.nit:1050 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AExternClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[2]);
   parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -54552,13 +55905,13 @@ val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AExternClasskind_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternClasskind();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -54566,7 +55919,7 @@ val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[85] = {
   {(bigint) 3791 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFormaldef" /* 2: Class Name */},
@@ -54585,16 +55938,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AFormaldef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -54602,8 +55945,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54611,6 +55953,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AFormaldef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -54624,36 +55977,39 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[82] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFormaldef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFormaldef___visit_all},
-  {(bigint) 1 /* 63: AFormaldef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AFormaldef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AFormaldef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFormaldef___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AFormaldef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AFormaldef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AFormaldef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) parser___parser_prod___AFormaldef___empty_init},
   {(bigint) parser___parser_prod___AFormaldef___init_aformaldef},
-  {(bigint) 3 /* 79: AFormaldef < AFormaldef: superclass init_table position */},
+  {(bigint) 3 /* 80: AFormaldef < AFormaldef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFormaldef___n_id},
+  {(bigint) parser___parser_prod___AFormaldef___n_id__eq},
   {(bigint) parser___parser_nodes___AFormaldef___n_type},
+  {(bigint) parser___parser_prod___AFormaldef___n_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AFormaldef::_parent */
-/* 3: Attribute AFormaldef::_location */
+/* 2: Attribute AFormaldef::_location */
+/* 3: Attribute AFormaldef::@parent */
 /* 4: Attribute AFormaldef::_first_location */
 /* 5: Attribute AFormaldef::_last_location */
 /* 6: Attribute AFormaldef::_n_annotations */
@@ -54674,10 +56030,16 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:489 */
+  /* parser/parser_nodes.nit:688 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -54719,13 +56081,13 @@ val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init(void){
   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 = 970;
+  fra.me.line = 1111;
   fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:970 */
+  /* parser/parser_prod.nit:1111 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFormaldef();
   INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[0]);
   parser___parser_prod___AFormaldef___empty_init(fra.me.REG[0], init_table);
@@ -54740,7 +56102,7 @@ val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(val_t p
   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 = 972;
+  fra.me.line = 1113;
   fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54752,7 +56114,7 @@ val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:972 */
+  /* parser/parser_prod.nit:1113 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AFormaldef();
   INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[3]);
   parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -54767,13 +56129,13 @@ val_t NEW_AFormaldef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFormaldef();
   INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -54781,7 +56143,7 @@ val_t NEW_AFormaldef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[87] = {
   {(bigint) 3739 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperclass" /* 2: Class Name */},
@@ -54800,16 +56162,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ASuperclass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -54817,8 +56169,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54826,6 +56177,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ASuperclass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -54839,38 +56201,41 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperclass___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperclass___visit_all},
-  {(bigint) 1 /* 63: ASuperclass < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: ASuperclass < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASuperclass___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperclass___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASuperclass < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: ASuperclass < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ASuperclass___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ASuperclass___ancestor},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) parser___parser_prod___ASuperclass___empty_init},
   {(bigint) parser___parser_prod___ASuperclass___init_asuperclass},
-  {(bigint) 3 /* 81: ASuperclass < ASuperclass: superclass init_table position */},
+  {(bigint) 3 /* 82: ASuperclass < ASuperclass: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperclass___n_kwsuper},
+  {(bigint) parser___parser_prod___ASuperclass___n_kwsuper__eq},
   {(bigint) parser___parser_nodes___ASuperclass___n_type},
+  {(bigint) parser___parser_prod___ASuperclass___n_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASuperclass::_parent */
-/* 3: Attribute ASuperclass::_location */
+/* 2: Attribute ASuperclass::_location */
+/* 3: Attribute ASuperclass::@parent */
 /* 4: Attribute ASuperclass::_first_location */
 /* 5: Attribute ASuperclass::_last_location */
 /* 6: Attribute ASuperclass::_n_annotations */
@@ -54891,7 +56256,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -54938,13 +56309,13 @@ val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init(void){
   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 = 1037;
+  fra.me.line = 1199;
   fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1037 */
+  /* parser/parser_prod.nit:1199 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperclass();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[0]);
   parser___parser_prod___ASuperclass___empty_init(fra.me.REG[0], init_table);
@@ -54959,7 +56330,7 @@ val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(val_
   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 = 1039;
+  fra.me.line = 1201;
   fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54971,7 +56342,7 @@ val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1039 */
+  /* parser/parser_prod.nit:1201 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ASuperclass();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[3]);
   parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -54986,13 +56357,13 @@ val_t NEW_ASuperclass_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperclass();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -55000,7 +56371,7 @@ val_t NEW_ASuperclass_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[113] = {
   {(bigint) 4555 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrPropdef" /* 2: Class Name */},
@@ -55019,16 +56390,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAttrPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -55036,8 +56397,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55045,6 +56405,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAttrPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -55058,31 +56429,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
   {(bigint) syntax___mmbuilder___AAttrPropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___AAttrPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrPropdef___visit_all},
-  {(bigint) 2 /* 63: AAttrPropdef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAttrPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AAttrPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAttrPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrPropdef___visit_all},
   {(bigint) syntax___icode_generation___AAttrPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AAttrPropdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAttrPropdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAttrPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 0 /* 80: AAttrPropdef < APropdef: superclass init_table position */},
+  {(bigint) 0 /* 81: AAttrPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
@@ -55091,23 +56464,32 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
   {(bigint) syntax___mmbuilder___AAttrPropdef___writemethod},
   {(bigint) parser___parser_prod___AAttrPropdef___empty_init},
   {(bigint) parser___parser_prod___AAttrPropdef___init_aattrpropdef},
-  {(bigint) 4 /* 90: AAttrPropdef < AAttrPropdef: superclass init_table position */},
+  {(bigint) 4 /* 92: AAttrPropdef < AAttrPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_kwvar},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_kwvar__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_id},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_id__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_id2},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_id2__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_type},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_type__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_readable},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_readable__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_writable},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_writable__eq},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_expr},
+  {(bigint) parser___parser_prod___AAttrPropdef___n_expr__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAttrPropdef::_parent */
-/* 3: Attribute AAttrPropdef::_location */
+/* 2: Attribute AAttrPropdef::_location */
+/* 3: Attribute AAttrPropdef::@parent */
 /* 4: Attribute AAttrPropdef::_first_location */
 /* 5: Attribute AAttrPropdef::_last_location */
 /* 6: Attribute AAttrPropdef::_n_annotations */
@@ -55139,25 +56521,31 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:501 */
+  /* parser/parser_nodes.nit:709 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:506 */
+  /* parser/parser_nodes.nit:719 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:507 */
+  /* parser/parser_nodes.nit:720 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:508 */
+  /* parser/parser_nodes.nit:721 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:509 */
+  /* parser/parser_nodes.nit:723 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -55204,13 +56592,13 @@ val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init(void){
   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 = 1100;
+  fra.me.line = 1281;
   fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1100 */
+  /* parser/parser_prod.nit:1281 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
   parser___parser_prod___AAttrPropdef___empty_init(fra.me.REG[0], init_table);
@@ -55225,7 +56613,7 @@ val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(v
   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 = 1102;
+  fra.me.line = 1283;
   fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -55253,7 +56641,7 @@ val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(v
   fra.me.REG[8] = p8;
   fra.me.REG[9] = p9;
   fra.me.REG[10] = p10;
-  /* parser/parser_prod.nit:1102 */
+  /* parser/parser_prod.nit:1283 */
   fra.me.REG[11] = NEW_parser___parser_nodes___AAttrPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[11]);
   parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10], init_table);
@@ -55268,13 +56656,13 @@ val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -55282,8 +56670,8 @@ val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
-  {(bigint) 4763 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[108] = {
+  {(bigint) 4767 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADeferredMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: ADeferredMethPropdef < Object: superclass typecheck marker */},
@@ -55291,7 +56679,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
   {(bigint) 3019 /* 5: ADeferredMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 3751 /* 6: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4763 /* 8: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
+  {(bigint) 4767 /* 8: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55301,16 +56689,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ADeferredMethPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -55318,8 +56696,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55327,6 +56704,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ADeferredMethPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -55340,31 +56728,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADeferredMethPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADeferredMethPropdef___visit_all},
-  {(bigint) 3 /* 63: ADeferredMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ADeferredMethPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ADeferredMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ADeferredMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 1 /* 80: ADeferredMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 1 /* 81: ADeferredMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -55372,23 +56762,28 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 0 /* 89: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 0 /* 91: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___ADeferredMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___ADeferredMethPropdef___empty_init},
   {(bigint) parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef},
-  {(bigint) 5 /* 99: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 105: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADeferredMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___n_kwmeth__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ADeferredMethPropdef::_parent */
-/* 3: Attribute ADeferredMethPropdef::_location */
+/* 2: Attribute ADeferredMethPropdef::_location */
+/* 3: Attribute ADeferredMethPropdef::@parent */
 /* 4: Attribute ADeferredMethPropdef::_first_location */
 /* 5: Attribute ADeferredMethPropdef::_last_location */
 /* 6: Attribute ADeferredMethPropdef::_n_annotations */
@@ -55415,16 +56810,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -55466,13 +56867,13 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init(
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -55487,13 +56888,13 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___emp
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1402;
+  fra.me.line = 1689;
   fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1402 */
+  /* parser/parser_prod.nit:1689 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
   parser___parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -55508,7 +56909,7 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___ini
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1404;
+  fra.me.line = 1691;
   fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -55528,7 +56929,7 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___ini
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:1404 */
+  /* parser/parser_prod.nit:1691 */
   fra.me.REG[7] = NEW_parser___parser_nodes___ADeferredMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[7]);
   parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
@@ -55543,13 +56944,13 @@ val_t NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -55564,7 +56965,7 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethp
   int init_table[6] = {0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -55580,7 +56981,7 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethp
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___ADeferredMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -55588,8 +56989,8 @@ val_t NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethp
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
-  {(bigint) 4719 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[108] = {
+  {(bigint) 4723 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInternMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInternMethPropdef < Object: superclass typecheck marker */},
@@ -55597,7 +56998,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
   {(bigint) 3019 /* 5: AInternMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 3751 /* 6: AInternMethPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4719 /* 8: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
+  {(bigint) 4723 /* 8: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55607,16 +57008,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AInternMethPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -55624,8 +57015,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55633,6 +57023,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AInternMethPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -55646,31 +57047,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInternMethPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInternMethPropdef___visit_all},
-  {(bigint) 3 /* 63: AInternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AInternMethPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AInternMethPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInternMethPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AInternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AInternMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 1 /* 80: AInternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 1 /* 81: AInternMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AInternMethPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -55678,23 +57081,28 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 0 /* 89: AInternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 0 /* 91: AInternMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AInternMethPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AInternMethPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___AInternMethPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___AInternMethPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___AInternMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___AInternMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef},
-  {(bigint) 5 /* 99: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 105: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInternMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_prod___AInternMethPropdef___n_kwmeth__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AInternMethPropdef::_parent */
-/* 3: Attribute AInternMethPropdef::_location */
+/* 2: Attribute AInternMethPropdef::_location */
+/* 3: Attribute AInternMethPropdef::@parent */
 /* 4: Attribute AInternMethPropdef::_first_location */
 /* 5: Attribute AInternMethPropdef::_last_location */
 /* 6: Attribute AInternMethPropdef::_n_annotations */
@@ -55721,16 +57129,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -55772,13 +57186,13 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init(vo
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -55793,13 +57207,13 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_i
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1529;
+  fra.me.line = 1859;
   fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1529 */
+  /* parser/parser_prod.nit:1859 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AInternMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -55814,7 +57228,7 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ai
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1531;
+  fra.me.line = 1861;
   fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -55832,7 +57246,7 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ai
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:1531 */
+  /* parser/parser_prod.nit:1861 */
   fra.me.REG[6] = NEW_parser___parser_nodes___AInternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[6]);
   parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
@@ -55847,13 +57261,13 @@ val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -55868,7 +57282,7 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   int init_table[6] = {0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -55884,7 +57298,7 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AInternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -55892,8 +57306,8 @@ val_t NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
-  {(bigint) 4843 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[119] = {
+  {(bigint) 4847 /* 0: Identity */},
   {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternMethPropdef < Object: superclass typecheck marker */},
@@ -55902,8 +57316,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
   {(bigint) 3751 /* 6: AExternMethPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4747 /* 9: AExternMethPropdef < AExternPropdef: superclass typecheck marker */},
-  {(bigint) 4843 /* 10: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
+  {(bigint) 4751 /* 9: AExternMethPropdef < AExternPropdef: superclass typecheck marker */},
+  {(bigint) 4847 /* 10: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55911,16 +57325,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 19: AExternMethPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -55928,8 +57332,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55937,6 +57340,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: AExternMethPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -55950,31 +57364,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___extern_inline___AExternPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternMethPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternMethPropdef___visit_all},
-  {(bigint) 4 /* 63: AExternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 4 /* 57: AExternMethPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AExternMethPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternMethPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AExternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 3 /* 71: AExternMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 2 /* 80: AExternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 2 /* 81: AExternMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -55982,31 +57398,39 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 1 /* 89: AExternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 1 /* 91: AExternMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___AExternMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {0} /* Class Hole :( */,
-  {(bigint) 0 /* 98: AExternMethPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) 0 /* 104: AExternMethPropdef < AExternPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_extern__eq},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_extern_calls__eq},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_code_block},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_extern_code_block__eq},
   {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
   {(bigint) parser___parser_prod___AExternMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef},
-  {(bigint) 6 /* 107: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
+  {(bigint) 6 /* 116: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_prod___AExternMethPropdef___n_kwmeth__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternMethPropdef::_parent */
-/* 3: Attribute AExternMethPropdef::_location */
+/* 2: Attribute AExternMethPropdef::_location */
+/* 3: Attribute AExternMethPropdef::@parent */
 /* 4: Attribute AExternMethPropdef::_first_location */
 /* 5: Attribute AExternMethPropdef::_last_location */
 /* 6: Attribute AExternMethPropdef::_n_annotations */
@@ -56036,25 +57460,31 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:540 */
+  /* parser/parser_nodes.nit:764 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:541 */
+  /* parser/parser_nodes.nit:765 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:542 */
+  /* parser/parser_nodes.nit:766 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -56096,13 +57526,13 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init(vo
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56117,13 +57547,13 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_i
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1638;
+  fra.me.line = 2004;
   fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1638 */
+  /* parser/parser_prod.nit:2004 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AExternMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56138,7 +57568,7 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_ae
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1640;
+  fra.me.line = 2006;
   fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -56162,7 +57592,7 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_ae
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
-  /* parser/parser_prod.nit:1640 */
+  /* parser/parser_prod.nit:2006 */
   fra.me.REG[9] = NEW_parser___parser_nodes___AExternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[9]);
   parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], init_table);
@@ -56177,13 +57607,13 @@ val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -56198,7 +57628,7 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   int init_table[7] = {0, 0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56214,7 +57644,7 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AExternMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -56222,8 +57652,8 @@ val_t NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
-  {(bigint) 4775 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[112] = {
+  {(bigint) 4779 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AConcreteMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AConcreteMethPropdef < Object: superclass typecheck marker */},
@@ -56232,7 +57662,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {(bigint) 3751 /* 6: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4775 /* 9: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 4779 /* 9: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56241,16 +57671,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AConcreteMethPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -56258,8 +57678,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56267,6 +57686,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AConcreteMethPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -56280,31 +57710,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___visit_all},
-  {(bigint) 3 /* 63: AConcreteMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AConcreteMethPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AConcreteMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AConcreteMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 1 /* 80: AConcreteMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 1 /* 81: AConcreteMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -56312,11 +57744,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 0 /* 89: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 0 /* 91: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
@@ -56324,14 +57760,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 101: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 107: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_block__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AConcreteMethPropdef::_parent */
-/* 3: Attribute AConcreteMethPropdef::_location */
+/* 2: Attribute AConcreteMethPropdef::_location */
+/* 3: Attribute AConcreteMethPropdef::@parent */
 /* 4: Attribute AConcreteMethPropdef::_first_location */
 /* 5: Attribute AConcreteMethPropdef::_last_location */
 /* 6: Attribute AConcreteMethPropdef::_n_annotations */
@@ -56359,19 +57797,25 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:552 */
+  /* parser/parser_nodes.nit:779 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -56405,13 +57849,13 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init(
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56426,13 +57870,13 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___emp
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1801;
+  fra.me.line = 2224;
   fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1801 */
+  /* parser/parser_prod.nit:2224 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56447,7 +57891,7 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___ini
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1803;
+  fra.me.line = 2226;
   fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -56469,7 +57913,7 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___ini
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
-  /* parser/parser_prod.nit:1803 */
+  /* parser/parser_prod.nit:2226 */
   fra.me.REG[8] = NEW_parser___parser_nodes___AConcreteMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[8]);
   parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], init_table);
@@ -56484,13 +57928,13 @@ val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -56505,7 +57949,7 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethp
   int init_table[6] = {0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56521,7 +57965,7 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethp
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AConcreteMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -56529,8 +57973,8 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethp
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
-  {(bigint) 4851 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[121] = {
+  {(bigint) 4855 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AConcreteInitPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AConcreteInitPropdef < Object: superclass typecheck marker */},
@@ -56538,9 +57982,9 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
   {(bigint) 3019 /* 5: AConcreteInitPropdef < Prod: superclass typecheck marker */},
   {(bigint) 3751 /* 6: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4723 /* 8: AConcreteInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {(bigint) 4775 /* 9: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 4851 /* 10: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
+  {(bigint) 4727 /* 8: AConcreteInitPropdef < AInitPropdef: superclass typecheck marker */},
+  {(bigint) 4779 /* 9: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 4855 /* 10: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56548,16 +57992,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AConcreteInitPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -56565,8 +57999,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56574,6 +58007,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AConcreteInitPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -56587,31 +58031,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AConcreteInitPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AConcreteInitPropdef___visit_all},
-  {(bigint) 3 /* 63: AConcreteInitPropdef < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AConcreteInitPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AConcreteInitPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AConcreteInitPropdef___accept_typing},
   {(bigint) syntax___typing___AConcreteInitPropdef___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AConcreteInitPropdef < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AConcreteInitPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 1 /* 80: AConcreteInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) 1 /* 81: AConcreteInitPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -56619,34 +58065,41 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 0 /* 89: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 0 /* 91: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) 6 /* 97: AConcreteInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) 6 /* 103: AConcreteInitPropdef < AInitPropdef: superclass init_table position */},
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 101: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 107: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_block__eq},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
   {(bigint) syntax___syntax_base___AConcreteInitPropdef___super_init_calls},
   {(bigint) syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls},
   {(bigint) parser___parser_prod___AConcreteInitPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef},
-  {(bigint) 7 /* 110: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
+  {(bigint) 7 /* 118: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteInitPropdef___n_kwinit},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___n_kwinit__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AConcreteInitPropdef::_parent */
-/* 3: Attribute AConcreteInitPropdef::_location */
+/* 2: Attribute AConcreteInitPropdef::_location */
+/* 3: Attribute AConcreteInitPropdef::@parent */
 /* 4: Attribute AConcreteInitPropdef::_first_location */
 /* 5: Attribute AConcreteInitPropdef::_last_location */
 /* 6: Attribute AConcreteInitPropdef::_n_annotations */
@@ -56677,19 +58130,25 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:552 */
+  /* parser/parser_nodes.nit:779 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/syntax_base.nit:554 */
@@ -56747,13 +58206,13 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___emp
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1801;
+  fra.me.line = 2224;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1801 */
+  /* parser/parser_prod.nit:2224 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56768,13 +58227,13 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___emp
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1946;
+  fra.me.line = 2419;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1946 */
+  /* parser/parser_prod.nit:2419 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   parser___parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56789,7 +58248,7 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___ini
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1948;
+  fra.me.line = 2421;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -56811,7 +58270,7 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___ini
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
-  /* parser/parser_prod.nit:1948 */
+  /* parser/parser_prod.nit:2421 */
   fra.me.REG[8] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[8]);
   parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], init_table);
@@ -56826,13 +58285,13 @@ val_t NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -56847,13 +58306,13 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___empty_init(
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -56868,7 +58327,7 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___ini
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1803;
+  fra.me.line = 2226;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -56890,7 +58349,7 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___ini
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
-  /* parser/parser_prod.nit:1803 */
+  /* parser/parser_prod.nit:2226 */
   fra.me.REG[8] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[8]);
   parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], init_table);
@@ -56905,7 +58364,7 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___init_amethp
   int init_table[8] = {0, 0, 0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56921,7 +58380,7 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___init_amethp
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AConcreteInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -56929,8 +58388,8 @@ val_t NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___init_amethp
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
-  {(bigint) 4847 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[121] = {
+  {(bigint) 4851 /* 0: Identity */},
   {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternInitPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternInitPropdef < Object: superclass typecheck marker */},
@@ -56938,9 +58397,9 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {(bigint) 3019 /* 5: AExternInitPropdef < Prod: superclass typecheck marker */},
   {(bigint) 3751 /* 6: AExternInitPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: AExternInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4723 /* 8: AExternInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {(bigint) 4747 /* 9: AExternInitPropdef < AExternPropdef: superclass typecheck marker */},
-  {(bigint) 4847 /* 10: AExternInitPropdef < AExternInitPropdef: superclass typecheck marker */},
+  {(bigint) 4727 /* 8: AExternInitPropdef < AInitPropdef: superclass typecheck marker */},
+  {(bigint) 4751 /* 9: AExternInitPropdef < AExternPropdef: superclass typecheck marker */},
+  {(bigint) 4851 /* 10: AExternInitPropdef < AExternInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56948,16 +58407,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 19: AExternInitPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -56965,8 +58414,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56974,6 +58422,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: AExternInitPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -56987,31 +58446,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___extern_inline___AExternPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternInitPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternInitPropdef___visit_all},
-  {(bigint) 4 /* 63: AExternInitPropdef < ANode: superclass init_table position */},
+  {(bigint) 4 /* 57: AExternInitPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AExternInitPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternInitPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AExternInitPropdef___accept_typing},
   {(bigint) syntax___typing___AExternInitPropdef___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AExternInitPropdef < Prod: superclass init_table position */},
+  {(bigint) 3 /* 71: AExternInitPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 2 /* 80: AExternInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) 2 /* 81: AExternInitPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -57019,19 +58480,26 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 1 /* 89: AExternInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 1 /* 91: AExternInitPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___AExternInitPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) 6 /* 97: AExternInitPropdef < AInitPropdef: superclass init_table position */},
-  {(bigint) 0 /* 98: AExternInitPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) 6 /* 103: AExternInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) 0 /* 104: AExternInitPropdef < AExternPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_extern__eq},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_extern_calls__eq},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_code_block},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_extern_code_block__eq},
   {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
@@ -57039,13 +58507,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AExternInitPropdef___empty_init},
   {(bigint) parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef},
-  {(bigint) 7 /* 109: AExternInitPropdef < AExternInitPropdef: superclass init_table position */},
+  {(bigint) 7 /* 118: AExternInitPropdef < AExternInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternInitPropdef___n_kwnew},
+  {(bigint) parser___parser_prod___AExternInitPropdef___n_kwnew__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternInitPropdef::_parent */
-/* 3: Attribute AExternInitPropdef::_location */
+/* 2: Attribute AExternInitPropdef::_location */
+/* 3: Attribute AExternInitPropdef::@parent */
 /* 4: Attribute AExternInitPropdef::_first_location */
 /* 5: Attribute AExternInitPropdef::_last_location */
 /* 6: Attribute AExternInitPropdef::_n_annotations */
@@ -57075,25 +58544,31 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:540 */
+  /* parser/parser_nodes.nit:764 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:541 */
+  /* parser/parser_nodes.nit:765 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:542 */
+  /* parser/parser_nodes.nit:766 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -57135,13 +58610,13 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init(vo
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -57156,13 +58631,13 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_i
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2095;
+  fra.me.line = 2620;
   fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2095 */
+  /* parser/parser_prod.nit:2620 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
   parser___parser_prod___AExternInitPropdef___empty_init(fra.me.REG[0], init_table);
@@ -57177,7 +58652,7 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_ae
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2097;
+  fra.me.line = 2622;
   fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -57201,7 +58676,7 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_ae
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
-  /* parser/parser_prod.nit:2097 */
+  /* parser/parser_prod.nit:2622 */
   fra.me.REG[9] = NEW_parser___parser_nodes___AExternInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[9]);
   parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], init_table);
@@ -57216,13 +58691,13 @@ val_t NEW_AExternInitPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -57237,7 +58712,7 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   int init_table[8] = {0, 0, 0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57253,7 +58728,7 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AExternInitPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -57261,8 +58736,8 @@ val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpro
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
-  {(bigint) 4839 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[115] = {
+  {(bigint) 4843 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMainMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMainMethPropdef < Object: superclass typecheck marker */},
@@ -57271,8 +58746,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {(bigint) 3751 /* 6: AMainMethPropdef < APropdef: superclass typecheck marker */},
   {(bigint) 4399 /* 7: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4775 /* 9: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 4839 /* 10: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
+  {(bigint) 4779 /* 9: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 4843 /* 10: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57280,16 +58755,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AMainMethPropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -57297,8 +58762,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57306,6 +58770,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AMainMethPropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -57319,31 +58794,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMainMethPropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMainMethPropdef___visit_all},
-  {(bigint) 3 /* 63: AMainMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AMainMethPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AMainMethPropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMainMethPropdef___visit_all},
   {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AMainMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AMainMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AMainMethPropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 1 /* 80: AMainMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 1 /* 81: AMainMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -57351,11 +58828,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 0 /* 89: AMainMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 0 /* 91: AMainMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_prod___AMainMethPropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_methid__eq},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_signature__eq},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
@@ -57363,17 +58844,19 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 101: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 107: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) parser___parser_prod___AMainMethPropdef___n_block__eq},
   {(bigint) parser___parser_prod___AMainMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMainMethPropdef___init_amainmethpropdef},
-  {(bigint) 6 /* 106: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
+  {(bigint) 6 /* 114: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AMainMethPropdef::_parent */
-/* 3: Attribute AMainMethPropdef::_location */
+/* 2: Attribute AMainMethPropdef::_location */
+/* 3: Attribute AMainMethPropdef::@parent */
 /* 4: Attribute AMainMethPropdef::_first_location */
 /* 5: Attribute AMainMethPropdef::_last_location */
 /* 6: Attribute AMainMethPropdef::_n_annotations */
@@ -57401,19 +58884,25 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:519 */
+  /* parser/parser_nodes.nit:736 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:552 */
+  /* parser/parser_nodes.nit:779 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -57447,13 +58936,13 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_i
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1801;
+  fra.me.line = 2224;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1801 */
+  /* parser/parser_prod.nit:2224 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -57468,13 +58957,13 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init(
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2262;
+  fra.me.line = 2846;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2262 */
+  /* parser/parser_prod.nit:2846 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AMainMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -57489,7 +58978,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainm
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2264;
+  fra.me.line = 2848;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -57499,7 +58988,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainm
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2264 */
+  /* parser/parser_prod.nit:2848 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[2]);
   parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -57514,13 +59003,13 @@ val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -57535,13 +59024,13 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:1307 */
+  /* parser/parser_prod.nit:1563 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
@@ -57556,7 +59045,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_ac
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1803;
+  fra.me.line = 2226;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -57578,7 +59067,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_ac
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
-  /* parser/parser_prod.nit:1803 */
+  /* parser/parser_prod.nit:2226 */
   fra.me.REG[8] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[8]);
   parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], init_table);
@@ -57593,7 +59082,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropd
   int init_table[7] = {0, 0, 0, 0, 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 = 1565;
   fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57609,7 +59098,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropd
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AMainMethPropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[5]);
   parser___parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -57617,7 +59106,7 @@ val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropd
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[82] = {
   {(bigint) 3799 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternCalls" /* 2: Class Name */},
@@ -57636,16 +59125,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AExternCalls < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -57653,8 +59132,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57662,6 +59140,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AExternCalls < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -57675,34 +59164,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternCalls___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternCalls___visit_all},
-  {(bigint) 1 /* 63: AExternCalls < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AExternCalls < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AExternCalls___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternCalls___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternCalls < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AExternCalls < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AExternCalls___empty_init},
   {(bigint) parser___parser_prod___AExternCalls___init_aexterncalls},
-  {(bigint) 3 /* 77: AExternCalls < AExternCalls: superclass init_table position */},
+  {(bigint) 3 /* 78: AExternCalls < AExternCalls: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternCalls___n_kwimport},
+  {(bigint) parser___parser_prod___AExternCalls___n_kwimport__eq},
   {(bigint) parser___parser_nodes___AExternCalls___n_extern_calls},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternCalls::_parent */
-/* 3: Attribute AExternCalls::_location */
+/* 2: Attribute AExternCalls::_location */
+/* 3: Attribute AExternCalls::@parent */
 /* 4: Attribute AExternCalls::_first_location */
 /* 5: Attribute AExternCalls::_last_location */
 /* 6: Attribute AExternCalls::_n_annotations */
@@ -57722,11 +59213,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:574 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:811 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -57772,13 +59270,13 @@ val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init(void){
   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 = 8470;
+  fra.me.line = 10750;
   fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8470 */
+  /* parser/parser_prod.nit:10750 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternCalls();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[0]);
   parser___parser_prod___AExternCalls___empty_init(fra.me.REG[0], init_table);
@@ -57793,7 +59291,7 @@ val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(v
   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 = 8472;
+  fra.me.line = 10752;
   fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -57803,7 +59301,7 @@ val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8472 */
+  /* parser/parser_prod.nit:10752 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AExternCalls();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[2]);
   parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -57818,13 +59316,13 @@ val_t NEW_AExternCalls_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternCalls();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -57832,8 +59330,8 @@ val_t NEW_AExternCalls_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
-  {(bigint) 4703 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[87] = {
+  {(bigint) 4707 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALocalPropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALocalPropExternCall < Object: superclass typecheck marker */},
@@ -57841,7 +59339,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
   {(bigint) 3019 /* 5: ALocalPropExternCall < Prod: superclass typecheck marker */},
   {(bigint) 3803 /* 6: ALocalPropExternCall < AExternCall: superclass typecheck marker */},
   {(bigint) 4355 /* 7: ALocalPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 4703 /* 8: ALocalPropExternCall < ALocalPropExternCall: superclass typecheck marker */},
+  {(bigint) 4707 /* 8: ALocalPropExternCall < ALocalPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57851,16 +59349,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ALocalPropExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -57868,8 +59356,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57877,6 +59364,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ALocalPropExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -57890,39 +59388,41 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALocalPropExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALocalPropExternCall___visit_all},
-  {(bigint) 3 /* 63: ALocalPropExternCall < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ALocalPropExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ALocalPropExternCall < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ALocalPropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ALocalPropExternCall___target_class_name},
   {(bigint) syntax___typing___ALocalPropExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 1 /* 79: ALocalPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 0 /* 80: ALocalPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 1 /* 80: ALocalPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 81: ALocalPropExternCall < APropExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ALocalPropExternCall___empty_init},
   {(bigint) parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall},
-  {(bigint) 5 /* 83: ALocalPropExternCall < ALocalPropExternCall: superclass init_table position */},
+  {(bigint) 5 /* 84: ALocalPropExternCall < ALocalPropExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALocalPropExternCall___n_methid},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___n_methid__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALocalPropExternCall::_parent */
-/* 3: Attribute ALocalPropExternCall::_location */
+/* 2: Attribute ALocalPropExternCall::_location */
+/* 3: Attribute ALocalPropExternCall::@parent */
 /* 4: Attribute ALocalPropExternCall::_first_location */
 /* 5: Attribute ALocalPropExternCall::_last_location */
 /* 6: Attribute ALocalPropExternCall::_n_annotations */
@@ -57941,7 +59441,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -57983,13 +59489,13 @@ val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init(v
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58004,13 +59510,13 @@ val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___emp
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8569;
+  fra.me.line = 10865;
   fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8569 */
+  /* parser/parser_prod.nit:10865 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
   parser___parser_prod___ALocalPropExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58025,7 +59531,7 @@ val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___ini
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8571;
+  fra.me.line = 10867;
   fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -58033,7 +59539,7 @@ val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8571 */
+  /* parser/parser_prod.nit:10867 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALocalPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
   parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -58048,13 +59554,13 @@ val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -58069,13 +59575,13 @@ val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aextern
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -58083,8 +59589,8 @@ val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aextern
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
-  {(bigint) 4735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[91] = {
+  {(bigint) 4739 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFullPropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AFullPropExternCall < Object: superclass typecheck marker */},
@@ -58092,7 +59598,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
   {(bigint) 3019 /* 5: AFullPropExternCall < Prod: superclass typecheck marker */},
   {(bigint) 3803 /* 6: AFullPropExternCall < AExternCall: superclass typecheck marker */},
   {(bigint) 4355 /* 7: AFullPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 4735 /* 8: AFullPropExternCall < AFullPropExternCall: superclass typecheck marker */},
+  {(bigint) 4739 /* 8: AFullPropExternCall < AFullPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58102,16 +59608,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AFullPropExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -58119,8 +59615,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58128,6 +59623,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AFullPropExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -58141,41 +59647,45 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFullPropExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFullPropExternCall___visit_all},
-  {(bigint) 3 /* 63: AFullPropExternCall < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AFullPropExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AFullPropExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFullPropExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AFullPropExternCall < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AFullPropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AFullPropExternCall___target_class_name},
   {(bigint) syntax___typing___AFullPropExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 1 /* 79: AFullPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 0 /* 80: AFullPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 1 /* 80: AFullPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 81: AFullPropExternCall < APropExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AFullPropExternCall___empty_init},
   {(bigint) parser___parser_prod___AFullPropExternCall___init_afullpropexterncall},
-  {(bigint) 5 /* 83: AFullPropExternCall < AFullPropExternCall: superclass init_table position */},
+  {(bigint) 5 /* 84: AFullPropExternCall < AFullPropExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFullPropExternCall___n_classid},
+  {(bigint) parser___parser_prod___AFullPropExternCall___n_classid__eq},
   {(bigint) parser___parser_nodes___AFullPropExternCall___n_quad},
+  {(bigint) parser___parser_prod___AFullPropExternCall___n_quad__eq},
   {(bigint) parser___parser_nodes___AFullPropExternCall___n_methid},
+  {(bigint) parser___parser_prod___AFullPropExternCall___n_methid__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AFullPropExternCall::_parent */
-/* 3: Attribute AFullPropExternCall::_location */
+/* 2: Attribute AFullPropExternCall::_location */
+/* 3: Attribute AFullPropExternCall::@parent */
 /* 4: Attribute AFullPropExternCall::_first_location */
 /* 5: Attribute AFullPropExternCall::_last_location */
 /* 6: Attribute AFullPropExternCall::_n_annotations */
@@ -58196,10 +59706,16 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:589 */
+  /* parser/parser_nodes.nit:826 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -58246,13 +59762,13 @@ val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init(vo
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58267,13 +59783,13 @@ val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8600;
+  fra.me.line = 10903;
   fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8600 */
+  /* parser/parser_prod.nit:10903 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AFullPropExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58288,7 +59804,7 @@ val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8602;
+  fra.me.line = 10905;
   fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58300,7 +59816,7 @@ val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8602 */
+  /* parser/parser_prod.nit:10905 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AFullPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[3]);
   parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -58315,13 +59831,13 @@ val_t NEW_AFullPropExternCall_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -58336,13 +59852,13 @@ val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexternc
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -58350,8 +59866,8 @@ val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexternc
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
-  {(bigint) 4727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[87] = {
+  {(bigint) 4731 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInitPropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInitPropExternCall < Object: superclass typecheck marker */},
@@ -58359,7 +59875,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
   {(bigint) 3019 /* 5: AInitPropExternCall < Prod: superclass typecheck marker */},
   {(bigint) 3803 /* 6: AInitPropExternCall < AExternCall: superclass typecheck marker */},
   {(bigint) 4355 /* 7: AInitPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 4727 /* 8: AInitPropExternCall < AInitPropExternCall: superclass typecheck marker */},
+  {(bigint) 4731 /* 8: AInitPropExternCall < AInitPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58369,16 +59885,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AInitPropExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -58386,8 +59892,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58395,6 +59900,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AInitPropExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -58408,39 +59924,41 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInitPropExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInitPropExternCall___visit_all},
-  {(bigint) 3 /* 63: AInitPropExternCall < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AInitPropExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AInitPropExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInitPropExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AInitPropExternCall < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AInitPropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AInitPropExternCall___target_class_name},
   {(bigint) syntax___typing___AInitPropExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 1 /* 79: AInitPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 0 /* 80: AInitPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 1 /* 80: AInitPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 81: AInitPropExternCall < APropExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AInitPropExternCall___empty_init},
   {(bigint) parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall},
-  {(bigint) 5 /* 83: AInitPropExternCall < AInitPropExternCall: superclass init_table position */},
+  {(bigint) 5 /* 84: AInitPropExternCall < AInitPropExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitPropExternCall___n_classid},
+  {(bigint) parser___parser_prod___AInitPropExternCall___n_classid__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AInitPropExternCall::_parent */
-/* 3: Attribute AInitPropExternCall::_location */
+/* 2: Attribute AInitPropExternCall::_location */
+/* 3: Attribute AInitPropExternCall::@parent */
 /* 4: Attribute AInitPropExternCall::_first_location */
 /* 5: Attribute AInitPropExternCall::_last_location */
 /* 6: Attribute AInitPropExternCall::_n_annotations */
@@ -58459,7 +59977,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -58501,13 +60025,13 @@ val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init(vo
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58522,13 +60046,13 @@ val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8663;
+  fra.me.line = 10985;
   fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8663 */
+  /* parser/parser_prod.nit:10985 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AInitPropExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58543,7 +60067,7 @@ val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8665;
+  fra.me.line = 10987;
   fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -58551,7 +60075,7 @@ val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8665 */
+  /* parser/parser_prod.nit:10987 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AInitPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
   parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -58566,13 +60090,13 @@ val_t NEW_AInitPropExternCall_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -58587,13 +60111,13 @@ val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexternc
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -58601,7 +60125,7 @@ val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexternc
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[86] = {
   {(bigint) 4291 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperExternCall" /* 2: Class Name */},
@@ -58620,16 +60144,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ASuperExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -58637,8 +60151,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58646,6 +60159,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ASuperExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -58659,38 +60183,40 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperExternCall___visit_all},
-  {(bigint) 2 /* 63: ASuperExternCall < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ASuperExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASuperExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASuperExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ASuperExternCall < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ASuperExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AExternCall___target_class_name},
   {(bigint) syntax___typing___AExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 0 /* 79: ASuperExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 80: ASuperExternCall < AExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ASuperExternCall___empty_init},
   {(bigint) parser___parser_prod___ASuperExternCall___init_asuperexterncall},
-  {(bigint) 4 /* 82: ASuperExternCall < ASuperExternCall: superclass init_table position */},
+  {(bigint) 4 /* 83: ASuperExternCall < ASuperExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperExternCall___n_kwsuper},
+  {(bigint) parser___parser_prod___ASuperExternCall___n_kwsuper__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASuperExternCall::_parent */
-/* 3: Attribute ASuperExternCall::_location */
+/* 2: Attribute ASuperExternCall::_location */
+/* 3: Attribute ASuperExternCall::@parent */
 /* 4: Attribute ASuperExternCall::_first_location */
 /* 5: Attribute ASuperExternCall::_last_location */
 /* 6: Attribute ASuperExternCall::_n_annotations */
@@ -58709,7 +60235,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -58751,13 +60283,13 @@ val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init(void)
   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 = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58772,13 +60304,13 @@ val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init(
   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 = 8538;
+  fra.me.line = 10827;
   fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8538 */
+  /* parser/parser_prod.nit:10827 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
   parser___parser_prod___ASuperExternCall___empty_init(fra.me.REG[0], init_table);
@@ -58793,7 +60325,7 @@ val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuper
   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 = 8540;
+  fra.me.line = 10829;
   fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -58801,7 +60333,7 @@ val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuper
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8540 */
+  /* parser/parser_prod.nit:10829 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ASuperExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
   parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -58816,13 +60348,13 @@ val_t NEW_ASuperExternCall_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -58837,13 +60369,13 @@ val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall
   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 = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -58851,8 +60383,8 @@ val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
-  {(bigint) 4783 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[93] = {
+  {(bigint) 4787 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACastAsExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACastAsExternCall < Object: superclass typecheck marker */},
@@ -58860,7 +60392,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
   {(bigint) 3019 /* 5: ACastAsExternCall < Prod: superclass typecheck marker */},
   {(bigint) 3803 /* 6: ACastAsExternCall < AExternCall: superclass typecheck marker */},
   {(bigint) 4527 /* 7: ACastAsExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 4783 /* 8: ACastAsExternCall < ACastAsExternCall: superclass typecheck marker */},
+  {(bigint) 4787 /* 8: ACastAsExternCall < ACastAsExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58870,16 +60402,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ACastAsExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -58887,8 +60409,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58896,6 +60417,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ACastAsExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -58909,43 +60441,47 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACastAsExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACastAsExternCall___visit_all},
-  {(bigint) 3 /* 63: ACastAsExternCall < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ACastAsExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ACastAsExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACastAsExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ACastAsExternCall < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ACastAsExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AExternCall___target_class_name},
   {(bigint) syntax___typing___AExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 1 /* 79: ACastAsExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 1 /* 80: ACastAsExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___ACastAsExternCall___from_type},
   {(bigint) syntax___typing___ACastAsExternCall___to_type},
-  {(bigint) 0 /* 82: ACastAsExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 0 /* 83: ACastAsExternCall < ACastExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ACastAsExternCall___empty_init},
   {(bigint) parser___parser_prod___ACastAsExternCall___init_acastasexterncall},
-  {(bigint) 5 /* 85: ACastAsExternCall < ACastAsExternCall: superclass init_table position */},
+  {(bigint) 5 /* 86: ACastAsExternCall < ACastAsExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACastAsExternCall___n_from_type},
+  {(bigint) parser___parser_prod___ACastAsExternCall___n_from_type__eq},
   {(bigint) parser___parser_nodes___ACastAsExternCall___n_kwas},
+  {(bigint) parser___parser_prod___ACastAsExternCall___n_kwas__eq},
   {(bigint) parser___parser_nodes___ACastAsExternCall___n_to_type},
+  {(bigint) parser___parser_prod___ACastAsExternCall___n_to_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACastAsExternCall::_parent */
-/* 3: Attribute ACastAsExternCall::_location */
+/* 2: Attribute ACastAsExternCall::_location */
+/* 3: Attribute ACastAsExternCall::@parent */
 /* 4: Attribute ACastAsExternCall::_first_location */
 /* 5: Attribute ACastAsExternCall::_last_location */
 /* 6: Attribute ACastAsExternCall::_n_annotations */
@@ -58966,7 +60502,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -59018,13 +60560,13 @@ val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init(void
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -59039,13 +60581,13 @@ val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_ini
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8694;
+  fra.me.line = 11023;
   fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8694 */
+  /* parser/parser_prod.nit:11023 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   parser___parser_prod___ACastAsExternCall___empty_init(fra.me.REG[0], init_table);
@@ -59060,7 +60602,7 @@ val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acas
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8696;
+  fra.me.line = 11025;
   fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -59072,7 +60614,7 @@ val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acas
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8696 */
+  /* parser/parser_prod.nit:11025 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ACastAsExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[3]);
   parser___parser_prod___ACastAsExternCall___init_acastasexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -59087,13 +60629,13 @@ val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -59108,13 +60650,13 @@ val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncal
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -59122,8 +60664,8 @@ val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncal
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
-  {(bigint) 4803 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[93] = {
+  {(bigint) 4807 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsNullableExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsNullableExternCall < Object: superclass typecheck marker */},
@@ -59131,7 +60673,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
   {(bigint) 3019 /* 5: AAsNullableExternCall < Prod: superclass typecheck marker */},
   {(bigint) 3803 /* 6: AAsNullableExternCall < AExternCall: superclass typecheck marker */},
   {(bigint) 4527 /* 7: AAsNullableExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 4803 /* 8: AAsNullableExternCall < AAsNullableExternCall: superclass typecheck marker */},
+  {(bigint) 4807 /* 8: AAsNullableExternCall < AAsNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59141,16 +60683,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAsNullableExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -59158,8 +60690,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59167,6 +60698,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAsNullableExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -59180,43 +60722,47 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsNullableExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsNullableExternCall___visit_all},
-  {(bigint) 3 /* 63: AAsNullableExternCall < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAsNullableExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAsNullableExternCall < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAsNullableExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AExternCall___target_class_name},
   {(bigint) syntax___typing___AExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 1 /* 79: AAsNullableExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 1 /* 80: AAsNullableExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___AAsNullableExternCall___from_type},
   {(bigint) syntax___typing___AAsNullableExternCall___to_type},
-  {(bigint) 0 /* 82: AAsNullableExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 0 /* 83: AAsNullableExternCall < ACastExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AAsNullableExternCall___empty_init},
   {(bigint) parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall},
-  {(bigint) 5 /* 85: AAsNullableExternCall < AAsNullableExternCall: superclass init_table position */},
+  {(bigint) 5 /* 86: AAsNullableExternCall < AAsNullableExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsNullableExternCall___n_type},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___n_type__eq},
   {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwas},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___n_kwas__eq},
   {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwnullable},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___n_kwnullable__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAsNullableExternCall::_parent */
-/* 3: Attribute AAsNullableExternCall::_location */
+/* 2: Attribute AAsNullableExternCall::_location */
+/* 3: Attribute AAsNullableExternCall::@parent */
 /* 4: Attribute AAsNullableExternCall::_first_location */
 /* 5: Attribute AAsNullableExternCall::_last_location */
 /* 6: Attribute AAsNullableExternCall::_n_annotations */
@@ -59237,7 +60783,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -59289,13 +60841,13 @@ val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init(
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -59310,13 +60862,13 @@ val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___e
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8753;
+  fra.me.line = 11099;
   fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8753 */
+  /* parser/parser_prod.nit:11099 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
   parser___parser_prod___AAsNullableExternCall___empty_init(fra.me.REG[0], init_table);
@@ -59331,7 +60883,7 @@ val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___i
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8755;
+  fra.me.line = 11101;
   fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -59343,7 +60895,7 @@ val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___i
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8755 */
+  /* parser/parser_prod.nit:11101 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AAsNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[3]);
   parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -59358,13 +60910,13 @@ val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -59379,13 +60931,13 @@ val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexter
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -59393,8 +60945,8 @@ val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexter
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90] = {
-  {(bigint) 4807 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[95] = {
+  {(bigint) 4811 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsNotNullableExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsNotNullableExternCall < Object: superclass typecheck marker */},
@@ -59402,7 +60954,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90]
   {(bigint) 3019 /* 5: AAsNotNullableExternCall < Prod: superclass typecheck marker */},
   {(bigint) 3803 /* 6: AAsNotNullableExternCall < AExternCall: superclass typecheck marker */},
   {(bigint) 4527 /* 7: AAsNotNullableExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 4807 /* 8: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass typecheck marker */},
+  {(bigint) 4811 /* 8: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59412,16 +60964,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAsNotNullableExternCall < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -59429,8 +60971,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59438,6 +60979,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAsNotNullableExternCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -59451,44 +61003,49 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90]
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsNotNullableExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsNotNullableExternCall___visit_all},
-  {(bigint) 3 /* 63: AAsNotNullableExternCall < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAsNotNullableExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAsNotNullableExternCall < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAsNotNullableExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AExternCall___target_class_name},
   {(bigint) syntax___typing___AExternCall___target_method_name},
   {(bigint) parser___parser_prod___AExternCall___empty_init},
   {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 1 /* 79: AAsNotNullableExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 1 /* 80: AAsNotNullableExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___AAsNotNullableExternCall___from_type},
   {(bigint) syntax___typing___AAsNotNullableExternCall___to_type},
-  {(bigint) 0 /* 82: AAsNotNullableExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 0 /* 83: AAsNotNullableExternCall < ACastExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AAsNotNullableExternCall___empty_init},
   {(bigint) parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall},
-  {(bigint) 5 /* 85: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass init_table position */},
+  {(bigint) 5 /* 86: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_type},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___n_type__eq},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwas},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___n_kwas__eq},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnot},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___n_kwnot__eq},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___n_kwnullable__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAsNotNullableExternCall::_parent */
-/* 3: Attribute AAsNotNullableExternCall::_location */
+/* 2: Attribute AAsNotNullableExternCall::_location */
+/* 3: Attribute AAsNotNullableExternCall::@parent */
 /* 4: Attribute AAsNotNullableExternCall::_first_location */
 /* 5: Attribute AAsNotNullableExternCall::_last_location */
 /* 6: Attribute AAsNotNullableExternCall::_n_annotations */
@@ -59510,7 +61067,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(val_t p0)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -59567,13 +61130,13 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_in
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8522 */
+  /* parser/parser_prod.nit:10809 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
@@ -59588,13 +61151,13 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCa
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8812;
+  fra.me.line = 11175;
   fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8812 */
+  /* parser/parser_prod.nit:11175 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
   parser___parser_prod___AAsNotNullableExternCall___empty_init(fra.me.REG[0], init_table);
@@ -59609,7 +61172,7 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCa
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8814;
+  fra.me.line = 11177;
   fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59623,7 +61186,7 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCa
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8814 */
+  /* parser/parser_prod.nit:11177 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[4]);
   parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -59638,13 +61201,13 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -59659,13 +61222,13 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aex
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8524 */
+  /* parser/parser_prod.nit:10811 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
   parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
@@ -59673,7 +61236,7 @@ val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aex
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[101] = {
   {(bigint) 4271 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATypePropdef" /* 2: Class Name */},
@@ -59692,16 +61255,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ATypePropdef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -59709,8 +61262,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59718,6 +61270,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ATypePropdef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -59731,48 +61294,55 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[94] = {
   {(bigint) syntax___mmbuilder___ATypePropdef___accept_property_builder},
   {(bigint) syntax___mmbuilder___ATypePropdef___accept_property_verifier},
   {(bigint) syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATypePropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATypePropdef___visit_all},
-  {(bigint) 2 /* 63: ATypePropdef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ATypePropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ATypePropdef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATypePropdef___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ATypePropdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ATypePropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ATypePropdef___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___APropdef___process_and_check},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
   {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
   {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
   {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 0 /* 80: ATypePropdef < APropdef: superclass init_table position */},
+  {(bigint) 0 /* 81: ATypePropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_prod___ATypePropdef___n_doc__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) syntax___mmbuilder___ATypePropdef___prop},
   {(bigint) parser___parser_prod___ATypePropdef___empty_init},
   {(bigint) parser___parser_prod___ATypePropdef___init_atypepropdef},
-  {(bigint) 4 /* 88: ATypePropdef < ATypePropdef: superclass init_table position */},
+  {(bigint) 4 /* 90: ATypePropdef < ATypePropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___ATypePropdef___n_kwredef},
+  {(bigint) parser___parser_prod___ATypePropdef___n_kwredef__eq},
   {(bigint) parser___parser_nodes___ATypePropdef___n_visibility},
+  {(bigint) parser___parser_prod___ATypePropdef___n_visibility__eq},
   {(bigint) parser___parser_nodes___ATypePropdef___n_kwtype},
+  {(bigint) parser___parser_prod___ATypePropdef___n_kwtype__eq},
   {(bigint) parser___parser_nodes___ATypePropdef___n_id},
+  {(bigint) parser___parser_prod___ATypePropdef___n_id__eq},
   {(bigint) parser___parser_nodes___ATypePropdef___n_type},
+  {(bigint) parser___parser_prod___ATypePropdef___n_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ATypePropdef::_parent */
-/* 3: Attribute ATypePropdef::_location */
+/* 2: Attribute ATypePropdef::_location */
+/* 3: Attribute ATypePropdef::@parent */
 /* 4: Attribute ATypePropdef::_first_location */
 /* 5: Attribute ATypePropdef::_last_location */
 /* 6: Attribute ATypePropdef::_n_annotations */
@@ -59798,13 +61368,19 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:624 */
+  /* parser/parser_nodes.nit:863 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -59861,13 +61437,13 @@ val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init(void){
   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 = 2315;
+  fra.me.line = 2915;
   fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2315 */
+  /* parser/parser_prod.nit:2915 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATypePropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
   parser___parser_prod___ATypePropdef___empty_init(fra.me.REG[0], init_table);
@@ -59882,7 +61458,7 @@ val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(v
   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 = 2317;
+  fra.me.line = 2917;
   fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -59902,7 +61478,7 @@ val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(v
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:2317 */
+  /* parser/parser_prod.nit:2917 */
   fra.me.REG[7] = NEW_parser___parser_nodes___ATypePropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[7]);
   parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
@@ -59917,13 +61493,13 @@ val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATypePropdef();
   INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -59931,7 +61507,7 @@ val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReadAble[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AReadAble[86] = {
   {(bigint) 4335 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AReadAble" /* 2: Class Name */},
@@ -59950,16 +61526,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AReadAble < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -59967,8 +61533,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59976,6 +61541,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AReadAble < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -59989,36 +61565,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[82] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AReadAble___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AReadAble___visit_all},
-  {(bigint) 2 /* 63: AReadAble < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AReadAble < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AReadAble___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AReadAble___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AReadAble < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AReadAble < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AReadAble < AAble: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AReadAble < AAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAble___n_visibility},
+  {(bigint) parser___parser_nodes___AAble___n_visibility__eq},
   {(bigint) parser___parser_nodes___AAble___n_kwredef},
+  {(bigint) parser___parser_prod___AReadAble___n_kwredef__eq},
   {(bigint) parser___parser_prod___AReadAble___empty_init},
   {(bigint) parser___parser_prod___AReadAble___init_areadable},
-  {(bigint) 4 /* 80: AReadAble < AReadAble: superclass init_table position */},
+  {(bigint) 4 /* 83: AReadAble < AReadAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReadAble___n_kwreadable},
+  {(bigint) parser___parser_prod___AReadAble___n_kwreadable__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AReadAble::_parent */
-/* 3: Attribute AReadAble::_location */
+/* 2: Attribute AReadAble::_location */
+/* 3: Attribute AReadAble::@parent */
 /* 4: Attribute AReadAble::_first_location */
 /* 5: Attribute AReadAble::_last_location */
 /* 6: Attribute AReadAble::_n_annotations */
@@ -60039,13 +61619,19 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:631 */
+  /* parser/parser_nodes.nit:873 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:632 */
+  /* parser/parser_nodes.nit:874 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -60087,13 +61673,13 @@ val_t NEW_AReadAble_parser___parser_prod___AReadAble___empty_init(void){
   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 = 2442;
+  fra.me.line = 3085;
   fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2442 */
+  /* parser/parser_prod.nit:3085 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AReadAble();
   INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[0]);
   parser___parser_prod___AReadAble___empty_init(fra.me.REG[0], init_table);
@@ -60108,7 +61694,7 @@ val_t NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(val_t p0,
   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 = 2444;
+  fra.me.line = 3087;
   fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -60118,7 +61704,7 @@ val_t NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2444 */
+  /* parser/parser_prod.nit:3087 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AReadAble();
   INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[2]);
   parser___parser_prod___AReadAble___init_areadable(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -60133,13 +61719,13 @@ val_t NEW_AReadAble_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AReadAble();
   INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -60147,7 +61733,7 @@ val_t NEW_AReadAble_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[86] = {
   {(bigint) 4259 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AWriteAble" /* 2: Class Name */},
@@ -60166,16 +61752,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AWriteAble < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -60183,8 +61759,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60192,6 +61767,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AWriteAble < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -60205,36 +61791,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[82] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AWriteAble___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AWriteAble___visit_all},
-  {(bigint) 2 /* 63: AWriteAble < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AWriteAble < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AWriteAble___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AWriteAble___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AWriteAble < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AWriteAble < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AWriteAble < AAble: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AWriteAble < AAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAble___n_visibility},
+  {(bigint) parser___parser_prod___AWriteAble___n_visibility__eq},
   {(bigint) parser___parser_nodes___AAble___n_kwredef},
+  {(bigint) parser___parser_prod___AWriteAble___n_kwredef__eq},
   {(bigint) parser___parser_prod___AWriteAble___empty_init},
   {(bigint) parser___parser_prod___AWriteAble___init_awriteable},
-  {(bigint) 4 /* 80: AWriteAble < AWriteAble: superclass init_table position */},
+  {(bigint) 4 /* 83: AWriteAble < AWriteAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AWriteAble___n_kwwritable},
+  {(bigint) parser___parser_prod___AWriteAble___n_kwwritable__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AWriteAble::_parent */
-/* 3: Attribute AWriteAble::_location */
+/* 2: Attribute AWriteAble::_location */
+/* 3: Attribute AWriteAble::@parent */
 /* 4: Attribute AWriteAble::_first_location */
 /* 5: Attribute AWriteAble::_last_location */
 /* 6: Attribute AWriteAble::_n_annotations */
@@ -60255,13 +61845,19 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:631 */
+  /* parser/parser_nodes.nit:873 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:632 */
+  /* parser/parser_nodes.nit:874 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -60303,13 +61899,13 @@ val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init(void){
   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 = 2491;
+  fra.me.line = 3148;
   fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2491 */
+  /* parser/parser_prod.nit:3148 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AWriteAble();
   INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[0]);
   parser___parser_prod___AWriteAble___empty_init(fra.me.REG[0], init_table);
@@ -60324,7 +61920,7 @@ val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(val_t p
   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 = 2493;
+  fra.me.line = 3150;
   fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -60336,7 +61932,7 @@ val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2493 */
+  /* parser/parser_prod.nit:3150 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AWriteAble();
   INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[3]);
   parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -60351,13 +61947,13 @@ val_t NEW_AWriteAble_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AWriteAble();
   INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -60365,7 +61961,7 @@ val_t NEW_AWriteAble_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[84] = {
   {(bigint) 4463 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIdMethid" /* 2: Class Name */},
@@ -60384,16 +61980,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AIdMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -60401,8 +61987,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60410,6 +61995,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AIdMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -60423,36 +62019,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIdMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIdMethid___visit_all},
-  {(bigint) 2 /* 63: AIdMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AIdMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIdMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIdMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIdMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AIdMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AIdMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AIdMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AIdMethid___empty_init},
   {(bigint) parser___parser_prod___AIdMethid___init_aidmethid},
-  {(bigint) 4 /* 80: AIdMethid < AIdMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AIdMethid < AIdMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIdMethid___n_id},
+  {(bigint) parser___parser_prod___AIdMethid___n_id__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIdMethid::_parent */
-/* 3: Attribute AIdMethid::_location */
+/* 2: Attribute AIdMethid::_location */
+/* 3: Attribute AIdMethid::@parent */
 /* 4: Attribute AIdMethid::_first_location */
 /* 5: Attribute AIdMethid::_last_location */
 /* 6: Attribute AIdMethid::_n_annotations */
@@ -60472,7 +62070,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -60514,13 +62118,13 @@ val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init(void){
   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 = 2558;
+  fra.me.line = 3236;
   fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2558 */
+  /* parser/parser_prod.nit:3236 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIdMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[0]);
   parser___parser_prod___AIdMethid___empty_init(fra.me.REG[0], init_table);
@@ -60535,7 +62139,7 @@ val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(val_t p0){
   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 = 2560;
+  fra.me.line = 3238;
   fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -60543,7 +62147,7 @@ val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2560 */
+  /* parser/parser_prod.nit:3238 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AIdMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[1]);
   parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -60558,13 +62162,13 @@ val_t NEW_AIdMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIdMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -60572,7 +62176,7 @@ val_t NEW_AIdMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[84] = {
   {(bigint) 4363 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APlusMethid" /* 2: Class Name */},
@@ -60591,16 +62195,6 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: APlusMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -60608,8 +62202,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60617,6 +62210,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: APlusMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -60630,36 +62234,38 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APlusMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APlusMethid___visit_all},
-  {(bigint) 2 /* 63: APlusMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: APlusMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APlusMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APlusMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: APlusMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: APlusMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: APlusMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: APlusMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___APlusMethid___empty_init},
   {(bigint) parser___parser_prod___APlusMethid___init_aplusmethid},
-  {(bigint) 4 /* 80: APlusMethid < APlusMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: APlusMethid < APlusMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___APlusMethid___n_plus},
+  {(bigint) parser___parser_prod___APlusMethid___n_plus__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APlusMethid::_parent */
-/* 3: Attribute APlusMethid::_location */
+/* 2: Attribute APlusMethid::_location */
+/* 3: Attribute APlusMethid::@parent */
 /* 4: Attribute APlusMethid::_first_location */
 /* 5: Attribute APlusMethid::_last_location */
 /* 6: Attribute APlusMethid::_n_annotations */
@@ -60679,7 +62285,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -60721,13 +62333,13 @@ val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init(void){
   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 = 2589;
+  fra.me.line = 3274;
   fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2589 */
+  /* parser/parser_prod.nit:3274 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[0]);
   parser___parser_prod___APlusMethid___empty_init(fra.me.REG[0], init_table);
@@ -60742,7 +62354,7 @@ val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(val_
   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 = 2591;
+  fra.me.line = 3276;
   fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -60750,7 +62362,7 @@ val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(val_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2591 */
+  /* parser/parser_prod.nit:3276 */
   fra.me.REG[1] = NEW_parser___parser_nodes___APlusMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[1]);
   parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -60765,13 +62377,13 @@ val_t NEW_APlusMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -60779,7 +62391,7 @@ val_t NEW_APlusMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[84] = {
   {(bigint) 4391 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMinusMethid" /* 2: Class Name */},
@@ -60798,16 +62410,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AMinusMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -60815,8 +62417,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60824,6 +62425,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AMinusMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -60837,36 +62449,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMinusMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMinusMethid___visit_all},
-  {(bigint) 2 /* 63: AMinusMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AMinusMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AMinusMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMinusMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AMinusMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AMinusMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AMinusMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AMinusMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AMinusMethid___empty_init},
   {(bigint) parser___parser_prod___AMinusMethid___init_aminusmethid},
-  {(bigint) 4 /* 80: AMinusMethid < AMinusMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AMinusMethid < AMinusMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMinusMethid___n_minus},
+  {(bigint) parser___parser_prod___AMinusMethid___n_minus__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AMinusMethid::_parent */
-/* 3: Attribute AMinusMethid::_location */
+/* 2: Attribute AMinusMethid::_location */
+/* 3: Attribute AMinusMethid::@parent */
 /* 4: Attribute AMinusMethid::_first_location */
 /* 5: Attribute AMinusMethid::_last_location */
 /* 6: Attribute AMinusMethid::_n_annotations */
@@ -60886,7 +62500,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -60928,13 +62548,13 @@ val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init(void){
   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 = 2620;
+  fra.me.line = 3312;
   fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2620 */
+  /* parser/parser_prod.nit:3312 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
   parser___parser_prod___AMinusMethid___empty_init(fra.me.REG[0], init_table);
@@ -60949,7 +62569,7 @@ val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(v
   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 = 2622;
+  fra.me.line = 3314;
   fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -60957,7 +62577,7 @@ val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(v
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2622 */
+  /* parser/parser_prod.nit:3314 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AMinusMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
   parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -60972,13 +62592,13 @@ val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -60986,7 +62606,7 @@ val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[84] = {
   {(bigint) 4311 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarMethid" /* 2: Class Name */},
@@ -61005,16 +62625,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AStarMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -61022,8 +62632,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61031,6 +62640,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AStarMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -61044,36 +62664,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarMethid___visit_all},
-  {(bigint) 2 /* 63: AStarMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AStarMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStarMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AStarMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AStarMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AStarMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AStarMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AStarMethid___empty_init},
   {(bigint) parser___parser_prod___AStarMethid___init_astarmethid},
-  {(bigint) 4 /* 80: AStarMethid < AStarMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AStarMethid < AStarMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStarMethid___n_star},
+  {(bigint) parser___parser_prod___AStarMethid___n_star__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStarMethid::_parent */
-/* 3: Attribute AStarMethid::_location */
+/* 2: Attribute AStarMethid::_location */
+/* 3: Attribute AStarMethid::@parent */
 /* 4: Attribute AStarMethid::_first_location */
 /* 5: Attribute AStarMethid::_last_location */
 /* 6: Attribute AStarMethid::_n_annotations */
@@ -61093,7 +62715,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -61135,13 +62763,13 @@ val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init(void){
   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 = 2651;
+  fra.me.line = 3350;
   fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2651 */
+  /* parser/parser_prod.nit:3350 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[0]);
   parser___parser_prod___AStarMethid___empty_init(fra.me.REG[0], init_table);
@@ -61156,7 +62784,7 @@ val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(val_
   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 = 2653;
+  fra.me.line = 3352;
   fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -61164,7 +62792,7 @@ val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(val_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2653 */
+  /* parser/parser_prod.nit:3352 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AStarMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[1]);
   parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -61179,13 +62807,13 @@ val_t NEW_AStarMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -61193,7 +62821,7 @@ val_t NEW_AStarMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[84] = {
   {(bigint) 4315 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASlashMethid" /* 2: Class Name */},
@@ -61212,16 +62840,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ASlashMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -61229,8 +62847,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61238,6 +62855,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ASlashMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -61251,36 +62879,38 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASlashMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASlashMethid___visit_all},
-  {(bigint) 2 /* 63: ASlashMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ASlashMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASlashMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASlashMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ASlashMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ASlashMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ASlashMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ASlashMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ASlashMethid___empty_init},
   {(bigint) parser___parser_prod___ASlashMethid___init_aslashmethid},
-  {(bigint) 4 /* 80: ASlashMethid < ASlashMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ASlashMethid < ASlashMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASlashMethid___n_slash},
+  {(bigint) parser___parser_prod___ASlashMethid___n_slash__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASlashMethid::_parent */
-/* 3: Attribute ASlashMethid::_location */
+/* 2: Attribute ASlashMethid::_location */
+/* 3: Attribute ASlashMethid::@parent */
 /* 4: Attribute ASlashMethid::_first_location */
 /* 5: Attribute ASlashMethid::_last_location */
 /* 6: Attribute ASlashMethid::_n_annotations */
@@ -61300,7 +62930,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -61342,13 +62978,13 @@ val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init(void){
   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 = 2682;
+  fra.me.line = 3388;
   fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2682 */
+  /* parser/parser_prod.nit:3388 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASlashMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
   parser___parser_prod___ASlashMethid___empty_init(fra.me.REG[0], init_table);
@@ -61363,7 +62999,7 @@ val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(v
   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 = 2684;
+  fra.me.line = 3390;
   fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -61371,7 +63007,7 @@ val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(v
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2684 */
+  /* parser/parser_prod.nit:3390 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ASlashMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
   parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -61386,13 +63022,13 @@ val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASlashMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -61400,7 +63036,7 @@ val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[84] = {
   {(bigint) 4371 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APercentMethid" /* 2: Class Name */},
@@ -61419,16 +63055,6 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: APercentMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -61436,8 +63062,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61445,6 +63070,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: APercentMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -61458,36 +63094,38 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APercentMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APercentMethid___visit_all},
-  {(bigint) 2 /* 63: APercentMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: APercentMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APercentMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APercentMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: APercentMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: APercentMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: APercentMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: APercentMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___APercentMethid___empty_init},
   {(bigint) parser___parser_prod___APercentMethid___init_apercentmethid},
-  {(bigint) 4 /* 80: APercentMethid < APercentMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: APercentMethid < APercentMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___APercentMethid___n_percent},
+  {(bigint) parser___parser_prod___APercentMethid___n_percent__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APercentMethid::_parent */
-/* 3: Attribute APercentMethid::_location */
+/* 2: Attribute APercentMethid::_location */
+/* 3: Attribute APercentMethid::@parent */
 /* 4: Attribute APercentMethid::_first_location */
 /* 5: Attribute APercentMethid::_last_location */
 /* 6: Attribute APercentMethid::_n_annotations */
@@ -61507,7 +63145,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -61549,13 +63193,13 @@ val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init(void
   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 = 2713;
+  fra.me.line = 3426;
   fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2713 */
+  /* parser/parser_prod.nit:3426 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APercentMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[0]);
   parser___parser_prod___APercentMethid___empty_init(fra.me.REG[0], init_table);
@@ -61570,7 +63214,7 @@ val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentme
   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 = 2715;
+  fra.me.line = 3428;
   fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -61578,7 +63222,7 @@ val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentme
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2715 */
+  /* parser/parser_prod.nit:3428 */
   fra.me.REG[1] = NEW_parser___parser_nodes___APercentMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[1]);
   parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -61593,13 +63237,13 @@ val_t NEW_APercentMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APercentMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -61607,7 +63251,7 @@ val_t NEW_APercentMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[84] = {
   {(bigint) 4503 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEqMethid" /* 2: Class Name */},
@@ -61626,16 +63270,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AEqMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -61643,8 +63277,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61652,6 +63285,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AEqMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -61665,36 +63309,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEqMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEqMethid___visit_all},
-  {(bigint) 2 /* 63: AEqMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AEqMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AEqMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEqMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AEqMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AEqMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AEqMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AEqMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AEqMethid___empty_init},
   {(bigint) parser___parser_prod___AEqMethid___init_aeqmethid},
-  {(bigint) 4 /* 80: AEqMethid < AEqMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AEqMethid < AEqMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEqMethid___n_eq},
+  {(bigint) parser___parser_prod___AEqMethid___n_eq__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AEqMethid::_parent */
-/* 3: Attribute AEqMethid::_location */
+/* 2: Attribute AEqMethid::_location */
+/* 3: Attribute AEqMethid::@parent */
 /* 4: Attribute AEqMethid::_first_location */
 /* 5: Attribute AEqMethid::_last_location */
 /* 6: Attribute AEqMethid::_n_annotations */
@@ -61714,7 +63360,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -61756,13 +63408,13 @@ val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init(void){
   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 = 2744;
+  fra.me.line = 3464;
   fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2744 */
+  /* parser/parser_prod.nit:3464 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEqMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[0]);
   parser___parser_prod___AEqMethid___empty_init(fra.me.REG[0], init_table);
@@ -61777,7 +63429,7 @@ val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0){
   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 = 2746;
+  fra.me.line = 3466;
   fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -61785,7 +63437,7 @@ val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2746 */
+  /* parser/parser_prod.nit:3466 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AEqMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[1]);
   parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -61800,13 +63452,13 @@ val_t NEW_AEqMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEqMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -61814,7 +63466,7 @@ val_t NEW_AEqMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[84] = {
   {(bigint) 4387 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANeMethid" /* 2: Class Name */},
@@ -61833,16 +63485,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ANeMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -61850,8 +63492,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61859,6 +63500,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ANeMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -61872,36 +63524,38 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANeMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANeMethid___visit_all},
-  {(bigint) 2 /* 63: ANeMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ANeMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ANeMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANeMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ANeMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ANeMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ANeMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ANeMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ANeMethid___empty_init},
   {(bigint) parser___parser_prod___ANeMethid___init_anemethid},
-  {(bigint) 4 /* 80: ANeMethid < ANeMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ANeMethid < ANeMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANeMethid___n_ne},
+  {(bigint) parser___parser_prod___ANeMethid___n_ne__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ANeMethid::_parent */
-/* 3: Attribute ANeMethid::_location */
+/* 2: Attribute ANeMethid::_location */
+/* 3: Attribute ANeMethid::@parent */
 /* 4: Attribute ANeMethid::_first_location */
 /* 5: Attribute ANeMethid::_last_location */
 /* 6: Attribute ANeMethid::_n_annotations */
@@ -61921,7 +63575,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -61963,13 +63623,13 @@ val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init(void){
   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 = 2775;
+  fra.me.line = 3502;
   fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2775 */
+  /* parser/parser_prod.nit:3502 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[0]);
   parser___parser_prod___ANeMethid___empty_init(fra.me.REG[0], init_table);
@@ -61984,7 +63644,7 @@ val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(val_t p0){
   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 = 2777;
+  fra.me.line = 3504;
   fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -61992,7 +63652,7 @@ val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2777 */
+  /* parser/parser_prod.nit:3504 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ANeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[1]);
   parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -62007,13 +63667,13 @@ val_t NEW_ANeMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -62021,7 +63681,7 @@ val_t NEW_ANeMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[84] = {
   {(bigint) 4419 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALeMethid" /* 2: Class Name */},
@@ -62040,16 +63700,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ALeMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -62057,8 +63707,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62066,6 +63715,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ALeMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -62079,36 +63739,38 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALeMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALeMethid___visit_all},
-  {(bigint) 2 /* 63: ALeMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ALeMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALeMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALeMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ALeMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ALeMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ALeMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ALeMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ALeMethid___empty_init},
   {(bigint) parser___parser_prod___ALeMethid___init_alemethid},
-  {(bigint) 4 /* 80: ALeMethid < ALeMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ALeMethid < ALeMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALeMethid___n_le},
+  {(bigint) parser___parser_prod___ALeMethid___n_le__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALeMethid::_parent */
-/* 3: Attribute ALeMethid::_location */
+/* 2: Attribute ALeMethid::_location */
+/* 3: Attribute ALeMethid::@parent */
 /* 4: Attribute ALeMethid::_first_location */
 /* 5: Attribute ALeMethid::_last_location */
 /* 6: Attribute ALeMethid::_n_annotations */
@@ -62128,7 +63790,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -62170,13 +63838,13 @@ val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init(void){
   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 = 2806;
+  fra.me.line = 3540;
   fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2806 */
+  /* parser/parser_prod.nit:3540 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[0]);
   parser___parser_prod___ALeMethid___empty_init(fra.me.REG[0], init_table);
@@ -62191,7 +63859,7 @@ val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(val_t p0){
   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 = 2808;
+  fra.me.line = 3542;
   fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -62199,7 +63867,7 @@ val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2808 */
+  /* parser/parser_prod.nit:3542 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[1]);
   parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -62214,13 +63882,13 @@ val_t NEW_ALeMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -62228,7 +63896,7 @@ val_t NEW_ALeMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[84] = {
   {(bigint) 4479 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGeMethid" /* 2: Class Name */},
@@ -62247,16 +63915,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AGeMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -62264,8 +63922,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62273,6 +63930,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AGeMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -62286,36 +63954,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGeMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGeMethid___visit_all},
-  {(bigint) 2 /* 63: AGeMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AGeMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AGeMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGeMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AGeMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AGeMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AGeMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AGeMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AGeMethid___empty_init},
   {(bigint) parser___parser_prod___AGeMethid___init_agemethid},
-  {(bigint) 4 /* 80: AGeMethid < AGeMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AGeMethid < AGeMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AGeMethid___n_ge},
+  {(bigint) parser___parser_prod___AGeMethid___n_ge__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AGeMethid::_parent */
-/* 3: Attribute AGeMethid::_location */
+/* 2: Attribute AGeMethid::_location */
+/* 3: Attribute AGeMethid::@parent */
 /* 4: Attribute AGeMethid::_first_location */
 /* 5: Attribute AGeMethid::_last_location */
 /* 6: Attribute AGeMethid::_n_annotations */
@@ -62335,7 +64005,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -62377,13 +64053,13 @@ val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init(void){
   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 = 2837;
+  fra.me.line = 3578;
   fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2837 */
+  /* parser/parser_prod.nit:3578 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[0]);
   parser___parser_prod___AGeMethid___empty_init(fra.me.REG[0], init_table);
@@ -62398,7 +64074,7 @@ val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(val_t p0){
   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 = 2839;
+  fra.me.line = 3580;
   fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -62406,7 +64082,7 @@ val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2839 */
+  /* parser/parser_prod.nit:3580 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AGeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[1]);
   parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -62421,13 +64097,13 @@ val_t NEW_AGeMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGeMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -62435,7 +64111,7 @@ val_t NEW_AGeMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[84] = {
   {(bigint) 4407 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALtMethid" /* 2: Class Name */},
@@ -62454,16 +64130,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ALtMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -62471,8 +64137,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62480,6 +64145,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ALtMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -62493,36 +64169,38 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALtMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALtMethid___visit_all},
-  {(bigint) 2 /* 63: ALtMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ALtMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALtMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALtMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ALtMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ALtMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ALtMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ALtMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ALtMethid___empty_init},
   {(bigint) parser___parser_prod___ALtMethid___init_altmethid},
-  {(bigint) 4 /* 80: ALtMethid < ALtMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ALtMethid < ALtMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALtMethid___n_lt},
+  {(bigint) parser___parser_prod___ALtMethid___n_lt__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALtMethid::_parent */
-/* 3: Attribute ALtMethid::_location */
+/* 2: Attribute ALtMethid::_location */
+/* 3: Attribute ALtMethid::@parent */
 /* 4: Attribute ALtMethid::_first_location */
 /* 5: Attribute ALtMethid::_last_location */
 /* 6: Attribute ALtMethid::_n_annotations */
@@ -62542,7 +64220,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -62584,13 +64268,13 @@ val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init(void){
   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 = 2868;
+  fra.me.line = 3616;
   fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2868 */
+  /* parser/parser_prod.nit:3616 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALtMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[0]);
   parser___parser_prod___ALtMethid___empty_init(fra.me.REG[0], init_table);
@@ -62605,7 +64289,7 @@ val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(val_t p0){
   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 = 2870;
+  fra.me.line = 3618;
   fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -62613,7 +64297,7 @@ val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2870 */
+  /* parser/parser_prod.nit:3618 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALtMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[1]);
   parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -62628,13 +64312,13 @@ val_t NEW_ALtMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALtMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -62642,7 +64326,7 @@ val_t NEW_ALtMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[84] = {
   {(bigint) 4471 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGtMethid" /* 2: Class Name */},
@@ -62661,16 +64345,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AGtMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -62678,8 +64352,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62687,6 +64360,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AGtMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -62700,36 +64384,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGtMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGtMethid___visit_all},
-  {(bigint) 2 /* 63: AGtMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AGtMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AGtMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGtMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AGtMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AGtMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AGtMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AGtMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AGtMethid___empty_init},
   {(bigint) parser___parser_prod___AGtMethid___init_agtmethid},
-  {(bigint) 4 /* 80: AGtMethid < AGtMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AGtMethid < AGtMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AGtMethid___n_gt},
+  {(bigint) parser___parser_prod___AGtMethid___n_gt__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AGtMethid::_parent */
-/* 3: Attribute AGtMethid::_location */
+/* 2: Attribute AGtMethid::_location */
+/* 3: Attribute AGtMethid::@parent */
 /* 4: Attribute AGtMethid::_first_location */
 /* 5: Attribute AGtMethid::_last_location */
 /* 6: Attribute AGtMethid::_n_annotations */
@@ -62749,7 +64435,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -62791,13 +64483,13 @@ val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init(void){
   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 = 2899;
+  fra.me.line = 3654;
   fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2899 */
+  /* parser/parser_prod.nit:3654 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGtMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[0]);
   parser___parser_prod___AGtMethid___empty_init(fra.me.REG[0], init_table);
@@ -62812,7 +64504,7 @@ val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(val_t p0){
   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 = 2901;
+  fra.me.line = 3656;
   fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -62820,7 +64512,7 @@ val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2901 */
+  /* parser/parser_prod.nit:3656 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AGtMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[1]);
   parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -62835,13 +64527,13 @@ val_t NEW_AGtMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGtMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -62849,7 +64541,7 @@ val_t NEW_AGtMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[84] = {
   {(bigint) 4411 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALlMethid" /* 2: Class Name */},
@@ -62868,16 +64560,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ALlMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -62885,8 +64567,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62894,6 +64575,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ALlMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -62907,37 +64599,38 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[83] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALlMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALlMethid___visit_all},
-  {(bigint) 2 /* 63: ALlMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ALlMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALlMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALlMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ALlMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ALlMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ALlMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ALlMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ALlMethid___empty_init},
   {(bigint) parser___parser_prod___ALlMethid___init_allmethid},
-  {(bigint) 4 /* 80: ALlMethid < ALlMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ALlMethid < ALlMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALlMethid___n_ll},
-  {(bigint) parser___parser_nodes___ALlMethid___n_ll__eq},
+  {(bigint) parser___parser_prod___ALlMethid___n_ll__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALlMethid::_parent */
-/* 3: Attribute ALlMethid::_location */
+/* 2: Attribute ALlMethid::_location */
+/* 3: Attribute ALlMethid::@parent */
 /* 4: Attribute ALlMethid::_first_location */
 /* 5: Attribute ALlMethid::_last_location */
 /* 6: Attribute ALlMethid::_n_annotations */
@@ -62957,7 +64650,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -62999,13 +64698,13 @@ val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init(void){
   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 = 2930;
+  fra.me.line = 3692;
   fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2930 */
+  /* parser/parser_prod.nit:3692 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALlMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[0]);
   parser___parser_prod___ALlMethid___empty_init(fra.me.REG[0], init_table);
@@ -63020,7 +64719,7 @@ val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(val_t p0){
   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 = 2932;
+  fra.me.line = 3694;
   fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -63028,7 +64727,7 @@ val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2932 */
+  /* parser/parser_prod.nit:3694 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALlMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[1]);
   parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -63043,13 +64742,13 @@ val_t NEW_ALlMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALlMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -63057,7 +64756,7 @@ val_t NEW_ALlMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[84] = {
   {(bigint) 4475 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGgMethid" /* 2: Class Name */},
@@ -63076,16 +64775,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AGgMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -63093,8 +64782,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63102,6 +64790,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AGgMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -63115,37 +64814,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[83] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGgMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGgMethid___visit_all},
-  {(bigint) 2 /* 63: AGgMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AGgMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AGgMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGgMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AGgMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AGgMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AGgMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AGgMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AGgMethid___empty_init},
   {(bigint) parser___parser_prod___AGgMethid___init_aggmethid},
-  {(bigint) 4 /* 80: AGgMethid < AGgMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AGgMethid < AGgMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AGgMethid___n_gg},
-  {(bigint) parser___parser_nodes___AGgMethid___n_gg__eq},
+  {(bigint) parser___parser_prod___AGgMethid___n_gg__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AGgMethid::_parent */
-/* 3: Attribute AGgMethid::_location */
+/* 2: Attribute AGgMethid::_location */
+/* 3: Attribute AGgMethid::@parent */
 /* 4: Attribute AGgMethid::_first_location */
 /* 5: Attribute AGgMethid::_last_location */
 /* 6: Attribute AGgMethid::_n_annotations */
@@ -63165,7 +64865,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -63207,13 +64913,13 @@ val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init(void){
   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 = 2961;
+  fra.me.line = 3730;
   fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2961 */
+  /* parser/parser_prod.nit:3730 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGgMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[0]);
   parser___parser_prod___AGgMethid___empty_init(fra.me.REG[0], init_table);
@@ -63228,7 +64934,7 @@ val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(val_t p0){
   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 = 2963;
+  fra.me.line = 3732;
   fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -63236,7 +64942,7 @@ val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:2963 */
+  /* parser/parser_prod.nit:3732 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AGgMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[1]);
   parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -63251,13 +64957,13 @@ val_t NEW_AGgMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGgMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -63265,7 +64971,7 @@ val_t NEW_AGgMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[86] = {
   {(bigint) 4539 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraMethid" /* 2: Class Name */},
@@ -63284,16 +64990,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ABraMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -63301,8 +64997,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63310,6 +65005,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ABraMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -63323,37 +65029,40 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[83] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraMethid___visit_all},
-  {(bigint) 2 /* 63: ABraMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ABraMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABraMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ABraMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ABraMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ABraMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ABraMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ABraMethid___empty_init},
   {(bigint) parser___parser_prod___ABraMethid___init_abramethid},
-  {(bigint) 4 /* 80: ABraMethid < ABraMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ABraMethid < ABraMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraMethid___n_obra},
+  {(bigint) parser___parser_prod___ABraMethid___n_obra__eq},
   {(bigint) parser___parser_nodes___ABraMethid___n_cbra},
+  {(bigint) parser___parser_prod___ABraMethid___n_cbra__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABraMethid::_parent */
-/* 3: Attribute ABraMethid::_location */
+/* 2: Attribute ABraMethid::_location */
+/* 3: Attribute ABraMethid::@parent */
 /* 4: Attribute ABraMethid::_first_location */
 /* 5: Attribute ABraMethid::_last_location */
 /* 6: Attribute ABraMethid::_n_annotations */
@@ -63374,7 +65083,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -63421,13 +65136,13 @@ val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init(void){
   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 = 2992;
+  fra.me.line = 3768;
   fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:2992 */
+  /* parser/parser_prod.nit:3768 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[0]);
   parser___parser_prod___ABraMethid___empty_init(fra.me.REG[0], init_table);
@@ -63442,7 +65157,7 @@ val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(val_t p
   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 = 2994;
+  fra.me.line = 3770;
   fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -63452,7 +65167,7 @@ val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2994 */
+  /* parser/parser_prod.nit:3770 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ABraMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[2]);
   parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -63467,13 +65182,13 @@ val_t NEW_ABraMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -63481,7 +65196,7 @@ val_t NEW_ABraMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[84] = {
   {(bigint) 4307 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarshipMethid" /* 2: Class Name */},
@@ -63500,16 +65215,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AStarshipMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -63517,8 +65222,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63526,6 +65230,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AStarshipMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -63539,36 +65254,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[82] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarshipMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarshipMethid___visit_all},
-  {(bigint) 2 /* 63: AStarshipMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AStarshipMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStarshipMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarshipMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AStarshipMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AStarshipMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AStarshipMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AStarshipMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AStarshipMethid___empty_init},
   {(bigint) parser___parser_prod___AStarshipMethid___init_astarshipmethid},
-  {(bigint) 4 /* 80: AStarshipMethid < AStarshipMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AStarshipMethid < AStarshipMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStarshipMethid___n_starship},
+  {(bigint) parser___parser_prod___AStarshipMethid___n_starship__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStarshipMethid::_parent */
-/* 3: Attribute AStarshipMethid::_location */
+/* 2: Attribute AStarshipMethid::_location */
+/* 3: Attribute AStarshipMethid::@parent */
 /* 4: Attribute AStarshipMethid::_first_location */
 /* 5: Attribute AStarshipMethid::_last_location */
 /* 6: Attribute AStarshipMethid::_n_annotations */
@@ -63588,7 +65305,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -63630,13 +65353,13 @@ val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init(vo
   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 = 3037;
+  fra.me.line = 3825;
   fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3037 */
+  /* parser/parser_prod.nit:3825 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
   parser___parser_prod___AStarshipMethid___empty_init(fra.me.REG[0], init_table);
@@ -63651,7 +65374,7 @@ val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshi
   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 = 3039;
+  fra.me.line = 3827;
   fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -63659,7 +65382,7 @@ val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshi
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:3039 */
+  /* parser/parser_prod.nit:3827 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
   parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -63674,13 +65397,13 @@ val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -63688,7 +65411,7 @@ val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[86] = {
   {(bigint) 4567 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAssignMethid" /* 2: Class Name */},
@@ -63707,16 +65430,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAssignMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -63724,8 +65437,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63733,6 +65445,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAssignMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -63746,37 +65469,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[83] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAssignMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAssignMethid___visit_all},
-  {(bigint) 2 /* 63: AAssignMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAssignMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAssignMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAssignMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAssignMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAssignMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: AAssignMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: AAssignMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AAssignMethid___empty_init},
   {(bigint) parser___parser_prod___AAssignMethid___init_aassignmethid},
-  {(bigint) 4 /* 80: AAssignMethid < AAssignMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: AAssignMethid < AAssignMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignMethid___n_id},
+  {(bigint) parser___parser_prod___AAssignMethid___n_id__eq},
   {(bigint) parser___parser_nodes___AAssignMethid___n_assign},
+  {(bigint) parser___parser_prod___AAssignMethid___n_assign__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAssignMethid::_parent */
-/* 3: Attribute AAssignMethid::_location */
+/* 2: Attribute AAssignMethid::_location */
+/* 3: Attribute AAssignMethid::@parent */
 /* 4: Attribute AAssignMethid::_first_location */
 /* 5: Attribute AAssignMethid::_last_location */
 /* 6: Attribute AAssignMethid::_n_annotations */
@@ -63797,7 +65523,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -63844,13 +65576,13 @@ val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init(void){
   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 = 3068;
+  fra.me.line = 3863;
   fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3068 */
+  /* parser/parser_prod.nit:3863 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAssignMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
   parser___parser_prod___AAssignMethid___empty_init(fra.me.REG[0], init_table);
@@ -63865,7 +65597,7 @@ val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethi
   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 = 3070;
+  fra.me.line = 3865;
   fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -63875,7 +65607,7 @@ val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethi
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3070 */
+  /* parser/parser_prod.nit:3865 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AAssignMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[2]);
   parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -63890,13 +65622,13 @@ val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAssignMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -63904,7 +65636,7 @@ val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[84] = {
+const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[88] = {
   {(bigint) 4535 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraassignMethid" /* 2: Class Name */},
@@ -63923,16 +65655,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ABraassignMethid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -63940,8 +65662,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63949,6 +65670,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[84] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ABraassignMethid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -63962,38 +65694,42 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[84] = {
   {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraassignMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraassignMethid___visit_all},
-  {(bigint) 2 /* 63: ABraassignMethid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ABraassignMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABraassignMethid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraassignMethid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ABraassignMethid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ABraassignMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 0 /* 77: ABraassignMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 78: ABraassignMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ABraassignMethid___empty_init},
   {(bigint) parser___parser_prod___ABraassignMethid___init_abraassignmethid},
-  {(bigint) 4 /* 80: ABraassignMethid < ABraassignMethid: superclass init_table position */},
+  {(bigint) 4 /* 81: ABraassignMethid < ABraassignMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraassignMethid___n_obra},
+  {(bigint) parser___parser_prod___ABraassignMethid___n_obra__eq},
   {(bigint) parser___parser_nodes___ABraassignMethid___n_cbra},
+  {(bigint) parser___parser_prod___ABraassignMethid___n_cbra__eq},
   {(bigint) parser___parser_nodes___ABraassignMethid___n_assign},
+  {(bigint) parser___parser_prod___ABraassignMethid___n_assign__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABraassignMethid::_parent */
-/* 3: Attribute ABraassignMethid::_location */
+/* 2: Attribute ABraassignMethid::_location */
+/* 3: Attribute ABraassignMethid::@parent */
 /* 4: Attribute ABraassignMethid::_first_location */
 /* 5: Attribute ABraassignMethid::_last_location */
 /* 6: Attribute ABraassignMethid::_n_annotations */
@@ -64015,7 +65751,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -64067,13 +65809,13 @@ val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init(
   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 = 3113;
+  fra.me.line = 3920;
   fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3113 */
+  /* parser/parser_prod.nit:3920 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraassignMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
   parser___parser_prod___ABraassignMethid___empty_init(fra.me.REG[0], init_table);
@@ -64088,7 +65830,7 @@ val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraas
   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 = 3115;
+  fra.me.line = 3922;
   fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -64100,7 +65842,7 @@ val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraas
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3115 */
+  /* parser/parser_prod.nit:3922 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ABraassignMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[3]);
   parser___parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -64115,13 +65857,13 @@ val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraassignMethid();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -64129,7 +65871,7 @@ val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASignature[86] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASignature[90] = {
   {(bigint) 3743 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASignature" /* 2: Class Name */},
@@ -64148,16 +65890,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ASignature < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -64165,8 +65897,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64174,6 +65905,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[86] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ASignature < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -64187,40 +65929,44 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[86] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ASignature___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASignature___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASignature___visit_all},
-  {(bigint) 1 /* 63: ASignature < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: ASignature < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASignature___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASignature___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASignature___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASignature < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: ASignature < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___mmbuilder___ASignature___check_visibility},
   {(bigint) parser___parser_prod___ASignature___empty_init},
   {(bigint) parser___parser_prod___ASignature___init_asignature},
-  {(bigint) 3 /* 79: ASignature < ASignature: superclass init_table position */},
+  {(bigint) 3 /* 80: ASignature < ASignature: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASignature___n_opar},
+  {(bigint) parser___parser_prod___ASignature___n_opar__eq},
   {(bigint) parser___parser_nodes___ASignature___n_params},
   {(bigint) parser___parser_nodes___ASignature___n_cpar},
+  {(bigint) parser___parser_prod___ASignature___n_cpar__eq},
   {(bigint) parser___parser_nodes___ASignature___n_type},
+  {(bigint) parser___parser_prod___ASignature___n_type__eq},
   {(bigint) parser___parser_nodes___ASignature___n_closure_decls},
   {(bigint) syntax___icode_generation___ASignature___fill_iroutine_parameters},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASignature::_parent */
-/* 3: Attribute ASignature::_location */
+/* 2: Attribute ASignature::_location */
+/* 3: Attribute ASignature::@parent */
 /* 4: Attribute ASignature::_first_location */
 /* 5: Attribute ASignature::_last_location */
 /* 6: Attribute ASignature::_n_annotations */
@@ -64243,23 +65989,31 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASignature(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:721 */
+  /* parser/parser_nodes.nit:974 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:722 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:975 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:723 */
+  /* parser/parser_nodes.nit:976 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:724 */
+  /* parser/parser_nodes.nit:977 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:725 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:978 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -64305,13 +66059,13 @@ val_t NEW_ASignature_parser___parser_prod___ASignature___empty_init(void){
   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 = 3172;
+  fra.me.line = 3996;
   fra.me.meth = LOCATE_NEW_ASignature_parser___parser_prod___ASignature___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3172 */
+  /* parser/parser_prod.nit:3996 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASignature();
   INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[0]);
   parser___parser_prod___ASignature___empty_init(fra.me.REG[0], init_table);
@@ -64326,7 +66080,7 @@ val_t NEW_ASignature_parser___parser_prod___ASignature___init_asignature(val_t p
   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 = 3174;
+  fra.me.line = 3998;
   fra.me.meth = LOCATE_NEW_ASignature_parser___parser_prod___ASignature___init_asignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -64342,7 +66096,7 @@ val_t NEW_ASignature_parser___parser_prod___ASignature___init_asignature(val_t p
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:3174 */
+  /* parser/parser_prod.nit:3998 */
   fra.me.REG[5] = NEW_parser___parser_nodes___ASignature();
   INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[5]);
   parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -64357,13 +66111,13 @@ val_t NEW_ASignature_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASignature_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASignature();
   INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -64371,7 +66125,7 @@ val_t NEW_ASignature_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
+const classtable_elt_t VFT_parser___parser_nodes___AParam[91] = {
   {(bigint) 3755 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AParam" /* 2: Class Name */},
@@ -64390,16 +66144,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AParam < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -64407,8 +66151,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64416,6 +66159,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AParam < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -64429,24 +66183,25 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AParam___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AParam___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AParam___visit_all},
-  {(bigint) 1 /* 63: AParam < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AParam < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AParam___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AParam___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AParam___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AParam < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AParam < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AParam___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AParam___stype},
   {(bigint) syntax___mmbuilder___AParam___stype__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -64455,15 +66210,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
   {(bigint) syntax___mmbuilder___AParam___variable},
   {(bigint) parser___parser_prod___AParam___empty_init},
   {(bigint) parser___parser_prod___AParam___init_aparam},
-  {(bigint) 3 /* 83: AParam < AParam: superclass init_table position */},
+  {(bigint) 3 /* 84: AParam < AParam: superclass init_table position */},
   {(bigint) parser___parser_nodes___AParam___n_id},
+  {(bigint) parser___parser_prod___AParam___n_id__eq},
   {(bigint) parser___parser_nodes___AParam___n_type},
+  {(bigint) parser___parser_prod___AParam___n_type__eq},
   {(bigint) parser___parser_nodes___AParam___n_dotdotdot},
+  {(bigint) parser___parser_prod___AParam___n_dotdotdot__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AParam::_parent */
-/* 3: Attribute AParam::_location */
+/* 2: Attribute AParam::_location */
+/* 3: Attribute AParam::@parent */
 /* 4: Attribute AParam::_first_location */
 /* 5: Attribute AParam::_last_location */
 /* 6: Attribute AParam::_n_annotations */
@@ -64488,13 +66246,19 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AParam(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:730 */
+  /* parser/parser_nodes.nit:985 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:731 */
+  /* parser/parser_nodes.nit:986 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/mmbuilder.nit:1323 */
@@ -64544,13 +66308,13 @@ val_t NEW_AParam_parser___parser_prod___AParam___empty_init(void){
   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 = 3285;
+  fra.me.line = 4132;
   fra.me.meth = LOCATE_NEW_AParam_parser___parser_prod___AParam___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3285 */
+  /* parser/parser_prod.nit:4132 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParam();
   INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[0]);
   parser___parser_prod___AParam___empty_init(fra.me.REG[0], init_table);
@@ -64565,7 +66329,7 @@ val_t NEW_AParam_parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1,
   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 = 3287;
+  fra.me.line = 4134;
   fra.me.meth = LOCATE_NEW_AParam_parser___parser_prod___AParam___init_aparam;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -64579,7 +66343,7 @@ val_t NEW_AParam_parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:3287 */
+  /* parser/parser_prod.nit:4134 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AParam();
   INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[4]);
   parser___parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -64594,13 +66358,13 @@ val_t NEW_AParam_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AParam_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParam();
   INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -64608,7 +66372,7 @@ val_t NEW_AParam_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[88] = {
+const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[94] = {
   {(bigint) 3823 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureDecl" /* 2: Class Name */},
@@ -64627,16 +66391,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AClosureDecl < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -64644,8 +66398,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64653,6 +66406,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[88] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AClosureDecl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -64666,42 +66430,48 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[88] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AClosureDecl___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AClosureDecl___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AClosureDecl___visit_all},
-  {(bigint) 1 /* 63: AClosureDecl < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AClosureDecl < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AClosureDecl___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AClosureDecl___visit_all},
   {(bigint) syntax___icode_generation___AClosureDecl___accept_icode_generation},
   {(bigint) syntax___typing___AClosureDecl___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AClosureDecl < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AClosureDecl < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___mmbuilder___AClosureDecl___position},
   {(bigint) syntax___mmbuilder___AClosureDecl___variable},
   {(bigint) parser___parser_prod___AClosureDecl___empty_init},
   {(bigint) parser___parser_prod___AClosureDecl___init_aclosuredecl},
-  {(bigint) 3 /* 80: AClosureDecl < AClosureDecl: superclass init_table position */},
+  {(bigint) 3 /* 81: AClosureDecl < AClosureDecl: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClosureDecl___n_kwbreak},
+  {(bigint) parser___parser_prod___AClosureDecl___n_kwbreak__eq},
   {(bigint) parser___parser_nodes___AClosureDecl___n_bang},
+  {(bigint) parser___parser_prod___AClosureDecl___n_bang__eq},
   {(bigint) parser___parser_nodes___AClosureDecl___n_id},
+  {(bigint) parser___parser_prod___AClosureDecl___n_id__eq},
   {(bigint) parser___parser_nodes___AClosureDecl___n_signature},
+  {(bigint) parser___parser_prod___AClosureDecl___n_signature__eq},
   {(bigint) parser___parser_nodes___AClosureDecl___n_expr},
+  {(bigint) parser___parser_prod___AClosureDecl___n_expr__eq},
   {(bigint) syntax___typing___AClosureDecl___escapable},
   {(bigint) syntax___typing___ANode___accept_typing},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AClosureDecl::_parent */
-/* 3: Attribute AClosureDecl::_location */
+/* 2: Attribute AClosureDecl::_location */
+/* 3: Attribute AClosureDecl::@parent */
 /* 4: Attribute AClosureDecl::_first_location */
 /* 5: Attribute AClosureDecl::_last_location */
 /* 6: Attribute AClosureDecl::_n_annotations */
@@ -64728,13 +66498,19 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:735 */
+  /* parser/parser_nodes.nit:991 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:739 */
+  /* parser/parser_nodes.nit:995 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/mmbuilder.nit:1364 */
@@ -64794,13 +66570,13 @@ val_t NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init(void){
   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 = 3370;
+  fra.me.line = 4245;
   fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3370 */
+  /* parser/parser_prod.nit:4245 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDecl();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
   parser___parser_prod___AClosureDecl___empty_init(fra.me.REG[0], init_table);
@@ -64815,7 +66591,7 @@ val_t NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(v
   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 = 3372;
+  fra.me.line = 4247;
   fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -64831,7 +66607,7 @@ val_t NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(v
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:3372 */
+  /* parser/parser_prod.nit:4247 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AClosureDecl();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[5]);
   parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -64846,13 +66622,13 @@ val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDecl();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -64860,7 +66636,7 @@ val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
+const classtable_elt_t VFT_parser___parser_nodes___AType[91] = {
   {(bigint) 3735 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AType" /* 2: Class Name */},
@@ -64879,16 +66655,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AType < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -64896,8 +66662,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64905,6 +66670,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AType < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -64918,24 +66694,25 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AType___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AType___visit_all},
-  {(bigint) 1 /* 63: AType < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AType < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AType___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AType___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AType___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AType < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AType < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AType___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___mmbuilder___AType___check_visibility},
   {(bigint) syntax___typing___AType___is_typed},
   {(bigint) syntax___typing___AType___stype},
@@ -64945,15 +66722,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
   {(bigint) syntax___syntax_base___AType___check_conform},
   {(bigint) parser___parser_prod___AType___empty_init},
   {(bigint) parser___parser_prod___AType___init_atype},
-  {(bigint) 3 /* 84: AType < AType: superclass init_table position */},
+  {(bigint) 3 /* 85: AType < AType: superclass init_table position */},
   {(bigint) parser___parser_nodes___AType___n_kwnullable},
+  {(bigint) parser___parser_prod___AType___n_kwnullable__eq},
   {(bigint) parser___parser_nodes___AType___n_id},
+  {(bigint) parser___parser_prod___AType___n_id__eq},
   {(bigint) parser___parser_nodes___AType___n_types},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AType::_parent */
-/* 3: Attribute AType::_location */
+/* 2: Attribute AType::_location */
+/* 3: Attribute AType::@parent */
 /* 4: Attribute AType::_first_location */
 /* 5: Attribute AType::_last_location */
 /* 6: Attribute AType::_n_annotations */
@@ -64978,14 +66757,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AType(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:743 */
+  /* parser/parser_nodes.nit:1001 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:745 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1006 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* parser/parser_nodes.nit:1007 */
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/syntax_base.nit:593 */
   fra.me.REG[1] = NIT_NULL;
@@ -65042,13 +66829,13 @@ val_t NEW_AType_parser___parser_prod___AType___empty_init(void){
   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 = 3465;
+  fra.me.line = 4371;
   fra.me.meth = LOCATE_NEW_AType_parser___parser_prod___AType___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3465 */
+  /* parser/parser_prod.nit:4371 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AType();
   INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[0]);
   parser___parser_prod___AType___empty_init(fra.me.REG[0], init_table);
@@ -65063,7 +66850,7 @@ val_t NEW_AType_parser___parser_prod___AType___init_atype(val_t p0, val_t p1, va
   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 = 3467;
+  fra.me.line = 4373;
   fra.me.meth = LOCATE_NEW_AType_parser___parser_prod___AType___init_atype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -65077,7 +66864,7 @@ val_t NEW_AType_parser___parser_prod___AType___init_atype(val_t p0, val_t p1, va
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:3467 */
+  /* parser/parser_prod.nit:4373 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AType();
   INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[4]);
   parser___parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -65092,13 +66879,13 @@ val_t NEW_AType_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AType_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AType();
   INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -65106,7 +66893,7 @@ val_t NEW_AType_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALabel[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___ALabel[83] = {
   {(bigint) 3779 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALabel" /* 2: Class Name */},
@@ -65125,16 +66912,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ALabel < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -65142,8 +66919,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65151,6 +66927,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ALabel < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -65164,34 +66951,37 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALabel___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALabel___visit_all},
-  {(bigint) 1 /* 63: ALabel < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: ALabel < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALabel___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALabel___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALabel < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: ALabel < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___ALabel___empty_init},
   {(bigint) parser___parser_prod___ALabel___init_alabel},
-  {(bigint) 3 /* 77: ALabel < ALabel: superclass init_table position */},
+  {(bigint) 3 /* 78: ALabel < ALabel: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabel___n_kwlabel},
+  {(bigint) parser___parser_prod___ALabel___n_kwlabel__eq},
   {(bigint) parser___parser_nodes___ALabel___n_id},
+  {(bigint) parser___parser_prod___ALabel___n_id__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALabel::_parent */
-/* 3: Attribute ALabel::_location */
+/* 2: Attribute ALabel::_location */
+/* 3: Attribute ALabel::@parent */
 /* 4: Attribute ALabel::_first_location */
 /* 5: Attribute ALabel::_last_location */
 /* 6: Attribute ALabel::_n_annotations */
@@ -65211,7 +67001,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALabel(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -65258,13 +67054,13 @@ val_t NEW_ALabel_parser___parser_prod___ALabel___empty_init(void){
   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 = 3553;
+  fra.me.line = 4480;
   fra.me.meth = LOCATE_NEW_ALabel_parser___parser_prod___ALabel___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3553 */
+  /* parser/parser_prod.nit:4480 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALabel();
   INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[0]);
   parser___parser_prod___ALabel___empty_init(fra.me.REG[0], init_table);
@@ -65279,7 +67075,7 @@ val_t NEW_ALabel_parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1)
   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 = 3555;
+  fra.me.line = 4482;
   fra.me.meth = LOCATE_NEW_ALabel_parser___parser_prod___ALabel___init_alabel;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -65289,7 +67085,7 @@ val_t NEW_ALabel_parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1)
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3555 */
+  /* parser/parser_prod.nit:4482 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALabel();
   INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[2]);
   parser___parser_prod___ALabel___init_alabel(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -65304,13 +67100,13 @@ val_t NEW_ALabel_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALabel_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALabel();
   INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -65318,7 +67114,7 @@ val_t NEW_ALabel_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[97] = {
   {(bigint) 4551 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABlockExpr" /* 2: Class Name */},
@@ -65337,16 +67133,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ABlockExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -65354,8 +67140,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65363,6 +67148,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ABlockExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -65376,31 +67172,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABlockExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABlockExpr___visit_all},
-  {(bigint) 2 /* 63: ABlockExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ABlockExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABlockExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABlockExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ABlockExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ABlockExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ABlockExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: ABlockExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: ABlockExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ABlockExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -65410,14 +67208,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ABlockExpr___empty_init},
   {(bigint) parser___parser_prod___ABlockExpr___init_ablockexpr},
-  {(bigint) 4 /* 91: ABlockExpr < ABlockExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: ABlockExpr < ABlockExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABlockExpr___n_expr},
   {(bigint) parser___parser_nodes___ABlockExpr___n_kwend},
+  {(bigint) parser___parser_prod___ABlockExpr___n_kwend__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABlockExpr::_parent */
-/* 3: Attribute ABlockExpr::_location */
+/* 2: Attribute ABlockExpr::_location */
+/* 3: Attribute ABlockExpr::@parent */
 /* 4: Attribute ABlockExpr::_first_location */
 /* 5: Attribute ABlockExpr::_last_location */
 /* 6: Attribute ABlockExpr::_n_annotations */
@@ -65443,16 +67242,23 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:755 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1027 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:756 */
+  /* parser/parser_nodes.nit:1028 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -65499,13 +67305,13 @@ val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init(void){
   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 = 3598;
+  fra.me.line = 4537;
   fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3598 */
+  /* parser/parser_prod.nit:4537 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABlockExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
   parser___parser_prod___ABlockExpr___empty_init(fra.me.REG[0], init_table);
@@ -65520,7 +67326,7 @@ val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p
   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 = 3600;
+  fra.me.line = 4539;
   fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -65530,7 +67336,7 @@ val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3600 */
+  /* parser/parser_prod.nit:4539 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ABlockExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[2]);
   parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -65545,13 +67351,13 @@ val_t NEW_ABlockExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABlockExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -65559,7 +67365,7 @@ val_t NEW_ABlockExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
+const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[105] = {
   {(bigint) 4263 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVardeclExpr" /* 2: Class Name */},
@@ -65578,16 +67384,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AVardeclExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -65595,8 +67391,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65604,6 +67399,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AVardeclExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -65617,31 +67423,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVardeclExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVardeclExpr___visit_all},
-  {(bigint) 2 /* 63: AVardeclExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AVardeclExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AVardeclExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVardeclExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AVardeclExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AVardeclExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AVardeclExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AVardeclExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AVardeclExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AVardeclExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AVardeclExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -65652,17 +67460,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
   {(bigint) syntax___typing___AVardeclExpr___variable},
   {(bigint) parser___parser_prod___AVardeclExpr___empty_init},
   {(bigint) parser___parser_prod___AVardeclExpr___init_avardeclexpr},
-  {(bigint) 4 /* 92: AVardeclExpr < AVardeclExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: AVardeclExpr < AVardeclExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_kwvar},
+  {(bigint) parser___parser_prod___AVardeclExpr___n_kwvar__eq},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_id},
+  {(bigint) parser___parser_prod___AVardeclExpr___n_id__eq},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_type},
+  {(bigint) parser___parser_prod___AVardeclExpr___n_type__eq},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_assign},
+  {(bigint) parser___parser_prod___AVardeclExpr___n_assign__eq},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_expr},
+  {(bigint) parser___parser_prod___AVardeclExpr___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AVardeclExpr::_parent */
-/* 3: Attribute AVardeclExpr::_location */
+/* 2: Attribute AVardeclExpr::_location */
+/* 3: Attribute AVardeclExpr::@parent */
 /* 4: Attribute AVardeclExpr::_first_location */
 /* 5: Attribute AVardeclExpr::_last_location */
 /* 6: Attribute AVardeclExpr::_n_annotations */
@@ -65692,19 +67505,25 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:762 */
+  /* parser/parser_nodes.nit:1036 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:763 */
+  /* parser/parser_nodes.nit:1037 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:764 */
+  /* parser/parser_nodes.nit:1039 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -65756,13 +67575,13 @@ val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init(void){
   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 = 3654;
+  fra.me.line = 4602;
   fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3654 */
+  /* parser/parser_prod.nit:4602 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVardeclExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
   parser___parser_prod___AVardeclExpr___empty_init(fra.me.REG[0], init_table);
@@ -65777,7 +67596,7 @@ val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(v
   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 = 3656;
+  fra.me.line = 4604;
   fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -65795,7 +67614,7 @@ val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(v
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:3656 */
+  /* parser/parser_prod.nit:4604 */
   fra.me.REG[6] = NEW_parser___parser_nodes___AVardeclExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[6]);
   parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
@@ -65810,13 +67629,13 @@ val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVardeclExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -65824,7 +67643,7 @@ val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[98] = {
   {(bigint) 4327 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AReturnExpr" /* 2: Class Name */},
@@ -65843,16 +67662,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AReturnExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -65860,8 +67669,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65869,6 +67677,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AReturnExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -65882,31 +67701,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AReturnExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AReturnExpr___visit_all},
-  {(bigint) 2 /* 63: AReturnExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AReturnExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AReturnExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AReturnExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AReturnExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AReturnExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AReturnExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AReturnExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AReturnExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AReturnExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -65916,14 +67737,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AReturnExpr___empty_init},
   {(bigint) parser___parser_prod___AReturnExpr___init_areturnexpr},
-  {(bigint) 4 /* 91: AReturnExpr < AReturnExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AReturnExpr < AReturnExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReturnExpr___n_kwreturn},
+  {(bigint) parser___parser_prod___AReturnExpr___n_kwreturn__eq},
   {(bigint) parser___parser_nodes___AReturnExpr___n_expr},
+  {(bigint) parser___parser_prod___AReturnExpr___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AReturnExpr::_parent */
-/* 3: Attribute AReturnExpr::_location */
+/* 2: Attribute AReturnExpr::_location */
+/* 3: Attribute AReturnExpr::@parent */
 /* 4: Attribute AReturnExpr::_first_location */
 /* 5: Attribute AReturnExpr::_last_location */
 /* 6: Attribute AReturnExpr::_n_annotations */
@@ -65949,16 +67772,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:768 */
+  /* parser/parser_nodes.nit:1046 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:769 */
+  /* parser/parser_nodes.nit:1047 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -66000,13 +67829,13 @@ val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init(void){
   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 = 3771;
+  fra.me.line = 4759;
   fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3771 */
+  /* parser/parser_prod.nit:4759 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AReturnExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
   parser___parser_prod___AReturnExpr___empty_init(fra.me.REG[0], init_table);
@@ -66021,7 +67850,7 @@ val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(val_
   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 = 3773;
+  fra.me.line = 4761;
   fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -66031,7 +67860,7 @@ val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3773 */
+  /* parser/parser_prod.nit:4761 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AReturnExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[2]);
   parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -66046,13 +67875,13 @@ val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AReturnExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -66060,8 +67889,8 @@ val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
-  {(bigint) 4787 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[102] = {
+  {(bigint) 4791 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABreakExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABreakExpr < Object: superclass typecheck marker */},
@@ -66070,7 +67899,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
   {(bigint) 3775 /* 6: ABreakExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ABreakExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4495 /* 8: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 4787 /* 9: ABreakExpr < ABreakExpr: superclass typecheck marker */},
+  {(bigint) 4791 /* 9: ABreakExpr < ABreakExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66079,16 +67908,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ABreakExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -66096,8 +67915,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66105,6 +67923,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ABreakExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -66118,31 +67947,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABreakExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABreakExpr___visit_all},
-  {(bigint) 3 /* 63: ABreakExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ABreakExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABreakExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABreakExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ABreakExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ABreakExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ABreakExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 1 /* 75: ABreakExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 1 /* 76: ABreakExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___ABreakExpr___n_label__eq},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ABreakExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ABreakExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ABreakExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -66150,20 +67981,22 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: ABreakExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) 0 /* 91: ABreakExpr < AEscapeExpr: superclass init_table position */},
   {(bigint) syntax___scope___AEscapeExpr___escapable},
   {(bigint) syntax___scope___ABreakExpr___kwname},
   {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
   {(bigint) parser___parser_prod___ABreakExpr___empty_init},
   {(bigint) parser___parser_prod___ABreakExpr___init_abreakexpr},
-  {(bigint) 6 /* 95: ABreakExpr < ABreakExpr: superclass init_table position */},
+  {(bigint) 6 /* 97: ABreakExpr < ABreakExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABreakExpr___n_kwbreak},
+  {(bigint) parser___parser_prod___ABreakExpr___n_kwbreak__eq},
   {(bigint) parser___parser_nodes___ABreakExpr___n_expr},
+  {(bigint) parser___parser_prod___ABreakExpr___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABreakExpr::_parent */
-/* 3: Attribute ABreakExpr::_location */
+/* 2: Attribute ABreakExpr::_location */
+/* 3: Attribute ABreakExpr::@parent */
 /* 4: Attribute ABreakExpr::_first_location */
 /* 5: Attribute ABreakExpr::_last_location */
 /* 6: Attribute ABreakExpr::_n_annotations */
@@ -66190,16 +68023,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:779 */
+  /* parser/parser_nodes.nit:1061 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -66246,13 +68085,13 @@ val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3824;
+  fra.me.line = 4828;
   fra.me.meth = LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3824 */
+  /* parser/parser_prod.nit:4828 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABreakExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
   parser___parser_prod___ABreakExpr___empty_init(fra.me.REG[0], init_table);
@@ -66267,7 +68106,7 @@ val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3826;
+  fra.me.line = 4830;
   fra.me.meth = LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -66279,7 +68118,7 @@ val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3826 */
+  /* parser/parser_prod.nit:4830 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ABreakExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[3]);
   parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -66294,13 +68133,13 @@ val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABreakExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABreakExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -66308,7 +68147,7 @@ val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[96] = {
   {(bigint) 4599 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbortExpr" /* 2: Class Name */},
@@ -66327,16 +68166,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAbortExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -66344,8 +68173,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66353,6 +68181,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAbortExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -66366,31 +68205,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAbortExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAbortExpr___visit_all},
-  {(bigint) 2 /* 63: AAbortExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAbortExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAbortExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAbortExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAbortExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAbortExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAbortExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AAbortExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AAbortExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAbortExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -66400,13 +68241,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AAbortExpr___empty_init},
   {(bigint) parser___parser_prod___AAbortExpr___init_aabortexpr},
-  {(bigint) 4 /* 91: AAbortExpr < AAbortExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAbortExpr < AAbortExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAbortExpr___n_kwabort},
+  {(bigint) parser___parser_prod___AAbortExpr___n_kwabort__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAbortExpr::_parent */
-/* 3: Attribute AAbortExpr::_location */
+/* 2: Attribute AAbortExpr::_location */
+/* 3: Attribute AAbortExpr::@parent */
 /* 4: Attribute AAbortExpr::_first_location */
 /* 5: Attribute AAbortExpr::_last_location */
 /* 6: Attribute AAbortExpr::_n_annotations */
@@ -66431,7 +68273,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -66481,13 +68329,13 @@ val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init(void){
   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 = 3891;
+  fra.me.line = 4916;
   fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3891 */
+  /* parser/parser_prod.nit:4916 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAbortExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
   parser___parser_prod___AAbortExpr___empty_init(fra.me.REG[0], init_table);
@@ -66502,7 +68350,7 @@ val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p
   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 = 3893;
+  fra.me.line = 4918;
   fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -66510,7 +68358,7 @@ val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:3893 */
+  /* parser/parser_prod.nit:4918 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AAbortExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
   parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -66525,13 +68373,13 @@ val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAbortExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -66539,8 +68387,8 @@ val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
-  {(bigint) 4771 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[102] = {
+  {(bigint) 4775 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AContinueExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AContinueExpr < Object: superclass typecheck marker */},
@@ -66549,7 +68397,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
   {(bigint) 3775 /* 6: AContinueExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AContinueExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4495 /* 8: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 4771 /* 9: AContinueExpr < AContinueExpr: superclass typecheck marker */},
+  {(bigint) 4775 /* 9: AContinueExpr < AContinueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66558,16 +68406,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AContinueExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -66575,8 +68413,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66584,6 +68421,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AContinueExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -66597,31 +68445,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AContinueExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AContinueExpr___visit_all},
-  {(bigint) 3 /* 63: AContinueExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AContinueExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AContinueExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AContinueExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AContinueExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AContinueExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AContinueExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 1 /* 75: AContinueExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 1 /* 76: AContinueExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___AContinueExpr___n_label__eq},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AContinueExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AContinueExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AContinueExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -66629,20 +68479,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AContinueExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) 0 /* 91: AContinueExpr < AEscapeExpr: superclass init_table position */},
   {(bigint) syntax___scope___AEscapeExpr___escapable},
   {(bigint) syntax___scope___AContinueExpr___kwname},
   {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
   {(bigint) parser___parser_prod___AContinueExpr___empty_init},
   {(bigint) parser___parser_prod___AContinueExpr___init_acontinueexpr},
-  {(bigint) 6 /* 95: AContinueExpr < AContinueExpr: superclass init_table position */},
+  {(bigint) 6 /* 97: AContinueExpr < AContinueExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AContinueExpr___n_kwcontinue},
+  {(bigint) parser___parser_prod___AContinueExpr___n_kwcontinue__eq},
   {(bigint) parser___parser_nodes___AContinueExpr___n_expr},
+  {(bigint) parser___parser_prod___AContinueExpr___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AContinueExpr::_parent */
-/* 3: Attribute AContinueExpr::_location */
+/* 2: Attribute AContinueExpr::_location */
+/* 3: Attribute AContinueExpr::@parent */
 /* 4: Attribute AContinueExpr::_first_location */
 /* 5: Attribute AContinueExpr::_last_location */
 /* 6: Attribute AContinueExpr::_n_annotations */
@@ -66669,19 +68521,25 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:788 */
+  /* parser/parser_nodes.nit:1074 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:789 */
+  /* parser/parser_nodes.nit:1075 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -66723,13 +68581,13 @@ val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3922;
+  fra.me.line = 4954;
   fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3922 */
+  /* parser/parser_prod.nit:4954 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AContinueExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
   parser___parser_prod___AContinueExpr___empty_init(fra.me.REG[0], init_table);
@@ -66744,7 +68602,7 @@ val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexp
   int init_table[7] = {0, 0, 0, 0, 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 = 4956;
   fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -66756,7 +68614,7 @@ val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexp
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3924 */
+  /* parser/parser_prod.nit:4956 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AContinueExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[3]);
   parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -66771,13 +68629,13 @@ val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AContinueExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -66785,8 +68643,8 @@ val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
-  {(bigint) 4759 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[102] = {
+  {(bigint) 4763 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADoExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ADoExpr < Object: superclass typecheck marker */},
@@ -66795,7 +68653,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
   {(bigint) 3775 /* 6: ADoExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ADoExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4591 /* 8: ADoExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 4759 /* 9: ADoExpr < ADoExpr: superclass typecheck marker */},
+  {(bigint) 4763 /* 9: ADoExpr < ADoExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66804,16 +68662,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ADoExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -66821,8 +68669,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66830,6 +68677,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ADoExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -66843,31 +68701,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADoExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADoExpr___visit_all},
-  {(bigint) 3 /* 63: ADoExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ADoExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ADoExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ADoExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ADoExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ADoExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ADoExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 5 /* 75: ADoExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 5 /* 76: ADoExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___ADoExpr___n_label__eq},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: ADoExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: ADoExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ADoExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -66875,20 +68735,22 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: ADoExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 91: ADoExpr < AAbsControl: superclass init_table position */},
   {(bigint) syntax___typing___AAbsControl___escapable},
   {(bigint) syntax___typing___AAbsControl___process_control},
   {(bigint) syntax___typing___ADoExpr___process_control_inside},
   {(bigint) parser___parser_prod___ADoExpr___empty_init},
   {(bigint) parser___parser_prod___ADoExpr___init_adoexpr},
-  {(bigint) 6 /* 95: ADoExpr < ADoExpr: superclass init_table position */},
+  {(bigint) 6 /* 97: ADoExpr < ADoExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADoExpr___n_kwdo},
+  {(bigint) parser___parser_prod___ADoExpr___n_kwdo__eq},
   {(bigint) parser___parser_nodes___ADoExpr___n_block},
+  {(bigint) parser___parser_prod___ADoExpr___n_block__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ADoExpr::_parent */
-/* 3: Attribute ADoExpr::_location */
+/* 2: Attribute ADoExpr::_location */
+/* 3: Attribute ADoExpr::@parent */
 /* 4: Attribute ADoExpr::_first_location */
 /* 5: Attribute ADoExpr::_last_location */
 /* 6: Attribute ADoExpr::_n_annotations */
@@ -66915,16 +68777,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:795 */
+  /* parser/parser_nodes.nit:1083 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -66971,13 +68839,13 @@ val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3993;
+  fra.me.line = 5048;
   fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:3993 */
+  /* parser/parser_prod.nit:5048 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADoExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[0]);
   parser___parser_prod___ADoExpr___empty_init(fra.me.REG[0], init_table);
@@ -66992,7 +68860,7 @@ val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3995;
+  fra.me.line = 5050;
   fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -67004,7 +68872,7 @@ val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3995 */
+  /* parser/parser_prod.nit:5050 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ADoExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[3]);
   parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -67019,13 +68887,13 @@ val_t NEW_ADoExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADoExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -67033,7 +68901,7 @@ val_t NEW_ADoExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[102] = {
   {(bigint) 4459 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIfExpr" /* 2: Class Name */},
@@ -67052,16 +68920,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AIfExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -67069,8 +68927,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67078,6 +68935,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AIfExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -67091,31 +68959,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIfExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIfExpr___visit_all},
-  {(bigint) 2 /* 63: AIfExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AIfExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIfExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIfExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AIfExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIfExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AIfExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AIfExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AIfExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AIfExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -67125,16 +68995,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AIfExpr___empty_init},
   {(bigint) parser___parser_prod___AIfExpr___init_aifexpr},
-  {(bigint) 4 /* 91: AIfExpr < AIfExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AIfExpr < AIfExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIfExpr___n_kwif},
+  {(bigint) parser___parser_prod___AIfExpr___n_kwif__eq},
   {(bigint) parser___parser_nodes___AIfExpr___n_expr},
+  {(bigint) parser___parser_prod___AIfExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AIfExpr___n_then},
+  {(bigint) parser___parser_prod___AIfExpr___n_then__eq},
   {(bigint) parser___parser_nodes___AIfExpr___n_else},
+  {(bigint) parser___parser_prod___AIfExpr___n_else__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIfExpr::_parent */
-/* 3: Attribute AIfExpr::_location */
+/* 2: Attribute AIfExpr::_location */
+/* 3: Attribute AIfExpr::@parent */
 /* 4: Attribute AIfExpr::_first_location */
 /* 5: Attribute AIfExpr::_last_location */
 /* 6: Attribute AIfExpr::_n_annotations */
@@ -67162,16 +69036,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:801 */
+  /* parser/parser_nodes.nit:1091 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:802 */
+  /* parser/parser_nodes.nit:1092 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -67223,13 +69103,13 @@ val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init(void){
   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 = 4060;
+  fra.me.line = 5136;
   fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4060 */
+  /* parser/parser_prod.nit:5136 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[0]);
   parser___parser_prod___AIfExpr___empty_init(fra.me.REG[0], init_table);
@@ -67244,7 +69124,7 @@ val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t
   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 = 4062;
+  fra.me.line = 5138;
   fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -67258,7 +69138,7 @@ val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:4062 */
+  /* parser/parser_prod.nit:5138 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AIfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[4]);
   parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -67273,13 +69153,13 @@ val_t NEW_AIfExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -67287,7 +69167,7 @@ val_t NEW_AIfExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
+const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[106] = {
   {(bigint) 4455 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIfexprExpr" /* 2: Class Name */},
@@ -67306,16 +69186,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AIfexprExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -67323,8 +69193,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67332,6 +69201,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AIfexprExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -67345,31 +69225,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIfexprExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIfexprExpr___visit_all},
-  {(bigint) 2 /* 63: AIfexprExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AIfexprExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIfexprExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIfexprExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AIfexprExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIfexprExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AIfexprExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AIfexprExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AIfexprExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AIfexprExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -67379,18 +69261,24 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AIfexprExpr___empty_init},
   {(bigint) parser___parser_prod___AIfexprExpr___init_aifexprexpr},
-  {(bigint) 4 /* 91: AIfexprExpr < AIfexprExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AIfexprExpr < AIfexprExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_kwif},
+  {(bigint) parser___parser_prod___AIfexprExpr___n_kwif__eq},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_expr},
+  {(bigint) parser___parser_prod___AIfexprExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_kwthen},
+  {(bigint) parser___parser_prod___AIfexprExpr___n_kwthen__eq},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_then},
+  {(bigint) parser___parser_prod___AIfexprExpr___n_then__eq},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_kwelse},
+  {(bigint) parser___parser_prod___AIfexprExpr___n_kwelse__eq},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_else},
+  {(bigint) parser___parser_prod___AIfexprExpr___n_else__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIfexprExpr::_parent */
-/* 3: Attribute AIfexprExpr::_location */
+/* 2: Attribute AIfexprExpr::_location */
+/* 3: Attribute AIfexprExpr::@parent */
 /* 4: Attribute AIfexprExpr::_first_location */
 /* 5: Attribute AIfexprExpr::_last_location */
 /* 6: Attribute AIfexprExpr::_n_annotations */
@@ -67420,7 +69308,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -67495,13 +69389,13 @@ val_t NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init(void){
   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 = 4141;
+  fra.me.line = 5243;
   fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4141 */
+  /* parser/parser_prod.nit:5243 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIfexprExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
   parser___parser_prod___AIfexprExpr___empty_init(fra.me.REG[0], init_table);
@@ -67516,7 +69410,7 @@ val_t NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_
   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 = 4143;
+  fra.me.line = 5245;
   fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -67534,7 +69428,7 @@ val_t NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:4143 */
+  /* parser/parser_prod.nit:5245 */
   fra.me.REG[6] = NEW_parser___parser_nodes___AIfexprExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[6]);
   parser___parser_prod___AIfexprExpr___init_aifexprexpr(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
@@ -67549,13 +69443,13 @@ val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIfexprExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -67563,7 +69457,7 @@ val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
+const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[106] = {
   {(bigint) 4639 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AWhileExpr" /* 2: Class Name */},
@@ -67582,16 +69476,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AWhileExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -67599,8 +69483,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67608,6 +69491,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AWhileExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -67621,31 +69515,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AWhileExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AWhileExpr___visit_all},
-  {(bigint) 3 /* 63: AWhileExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AWhileExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AWhileExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AWhileExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AWhileExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AWhileExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AWhileExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 5 /* 75: AWhileExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 5 /* 76: AWhileExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___AWhileExpr___n_label__eq},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AWhileExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AWhileExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AWhileExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -67653,22 +69549,26 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AWhileExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 91: AWhileExpr < AAbsControl: superclass init_table position */},
   {(bigint) syntax___typing___AAbsControl___escapable},
   {(bigint) syntax___typing___AAbsControl___process_control},
   {(bigint) syntax___typing___AWhileExpr___process_control_inside},
   {(bigint) parser___parser_prod___AWhileExpr___empty_init},
   {(bigint) parser___parser_prod___AWhileExpr___init_awhileexpr},
-  {(bigint) 6 /* 95: AWhileExpr < AWhileExpr: superclass init_table position */},
+  {(bigint) 6 /* 97: AWhileExpr < AWhileExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AWhileExpr___n_kwwhile},
+  {(bigint) parser___parser_prod___AWhileExpr___n_kwwhile__eq},
   {(bigint) parser___parser_nodes___AWhileExpr___n_expr},
+  {(bigint) parser___parser_prod___AWhileExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AWhileExpr___n_kwdo},
+  {(bigint) parser___parser_prod___AWhileExpr___n_kwdo__eq},
   {(bigint) parser___parser_nodes___AWhileExpr___n_block},
+  {(bigint) parser___parser_prod___AWhileExpr___n_block__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AWhileExpr::_parent */
-/* 3: Attribute AWhileExpr::_location */
+/* 2: Attribute AWhileExpr::_location */
+/* 3: Attribute AWhileExpr::@parent */
 /* 4: Attribute AWhileExpr::_first_location */
 /* 5: Attribute AWhileExpr::_last_location */
 /* 6: Attribute AWhileExpr::_n_annotations */
@@ -67697,16 +69597,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:819 */
+  /* parser/parser_nodes.nit:1113 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -67763,13 +69669,13 @@ val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4242;
+  fra.me.line = 5376;
   fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4242 */
+  /* parser/parser_prod.nit:5376 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AWhileExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
   parser___parser_prod___AWhileExpr___empty_init(fra.me.REG[0], init_table);
@@ -67784,7 +69690,7 @@ val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4244;
+  fra.me.line = 5378;
   fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -67800,7 +69706,7 @@ val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:4244 */
+  /* parser/parser_prod.nit:5378 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AWhileExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[5]);
   parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -67815,13 +69721,13 @@ val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AWhileExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -67829,8 +69735,8 @@ val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
-  {(bigint) 4699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[102] = {
+  {(bigint) 4703 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALoopExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALoopExpr < Object: superclass typecheck marker */},
@@ -67839,7 +69745,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
   {(bigint) 3775 /* 6: ALoopExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ALoopExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4591 /* 8: ALoopExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 4699 /* 9: ALoopExpr < ALoopExpr: superclass typecheck marker */},
+  {(bigint) 4703 /* 9: ALoopExpr < ALoopExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67848,16 +69754,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ALoopExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -67865,8 +69761,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67874,6 +69769,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ALoopExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -67887,31 +69793,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALoopExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALoopExpr___visit_all},
-  {(bigint) 3 /* 63: ALoopExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ALoopExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALoopExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALoopExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ALoopExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ALoopExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ALoopExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 5 /* 75: ALoopExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 5 /* 76: ALoopExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___ALoopExpr___n_label__eq},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: ALoopExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: ALoopExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ALoopExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -67919,20 +69827,22 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: ALoopExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 91: ALoopExpr < AAbsControl: superclass init_table position */},
   {(bigint) syntax___typing___AAbsControl___escapable},
   {(bigint) syntax___typing___AAbsControl___process_control},
   {(bigint) syntax___typing___ALoopExpr___process_control_inside},
   {(bigint) parser___parser_prod___ALoopExpr___empty_init},
   {(bigint) parser___parser_prod___ALoopExpr___init_aloopexpr},
-  {(bigint) 6 /* 95: ALoopExpr < ALoopExpr: superclass init_table position */},
+  {(bigint) 6 /* 97: ALoopExpr < ALoopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALoopExpr___n_kwloop},
+  {(bigint) parser___parser_prod___ALoopExpr___n_kwloop__eq},
   {(bigint) parser___parser_nodes___ALoopExpr___n_block},
+  {(bigint) parser___parser_prod___ALoopExpr___n_block__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALoopExpr::_parent */
-/* 3: Attribute ALoopExpr::_location */
+/* 2: Attribute ALoopExpr::_location */
+/* 3: Attribute ALoopExpr::@parent */
 /* 4: Attribute ALoopExpr::_first_location */
 /* 5: Attribute ALoopExpr::_last_location */
 /* 6: Attribute ALoopExpr::_n_annotations */
@@ -67959,16 +69869,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:825 */
+  /* parser/parser_nodes.nit:1121 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -68015,13 +69931,13 @@ val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4337;
+  fra.me.line = 5502;
   fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4337 */
+  /* parser/parser_prod.nit:5502 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALoopExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
   parser___parser_prod___ALoopExpr___empty_init(fra.me.REG[0], init_table);
@@ -68036,7 +69952,7 @@ val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0,
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4339;
+  fra.me.line = 5504;
   fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -68048,7 +69964,7 @@ val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4339 */
+  /* parser/parser_prod.nit:5504 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ALoopExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[3]);
   parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -68063,13 +69979,13 @@ val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALoopExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -68077,8 +69993,8 @@ val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
-  {(bigint) 4739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AForExpr[109] = {
+  {(bigint) 4743 /* 0: Identity */},
   {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AForExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AForExpr < Object: superclass typecheck marker */},
@@ -68087,7 +70003,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {(bigint) 3775 /* 6: AForExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AForExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4591 /* 8: AForExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 4739 /* 9: AForExpr < AForExpr: superclass typecheck marker */},
+  {(bigint) 4743 /* 9: AForExpr < AForExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68096,16 +70012,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AForExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -68113,8 +70019,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68122,6 +70027,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AForExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -68135,31 +70051,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AForExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AForExpr___visit_all},
-  {(bigint) 3 /* 63: AForExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AForExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AForExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AForExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AForExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AForExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AForExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 5 /* 75: AForExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 5 /* 76: AForExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___AForExpr___n_label__eq},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AForExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AForExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AForExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -68167,7 +70085,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AForExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 91: AForExpr < AAbsControl: superclass init_table position */},
   {(bigint) syntax___typing___AAbsControl___escapable},
   {(bigint) syntax___typing___AAbsControl___process_control},
   {(bigint) syntax___typing___AForExpr___process_control_inside},
@@ -68175,17 +70093,21 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
   {(bigint) syntax___typing___AForExpr___variables},
   {(bigint) parser___parser_prod___AForExpr___empty_init},
   {(bigint) parser___parser_prod___AForExpr___init_aforexpr},
-  {(bigint) 6 /* 97: AForExpr < AForExpr: superclass init_table position */},
+  {(bigint) 6 /* 99: AForExpr < AForExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AForExpr___n_kwfor},
+  {(bigint) parser___parser_prod___AForExpr___n_kwfor__eq},
   {(bigint) parser___parser_nodes___AForExpr___n_ids},
   {(bigint) parser___parser_nodes___AForExpr___n_expr},
+  {(bigint) parser___parser_prod___AForExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AForExpr___n_kwdo},
+  {(bigint) parser___parser_prod___AForExpr___n_kwdo__eq},
   {(bigint) parser___parser_nodes___AForExpr___n_block},
+  {(bigint) parser___parser_prod___AForExpr___n_block__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AForExpr::_parent */
-/* 3: Attribute AForExpr::_location */
+/* 2: Attribute AForExpr::_location */
+/* 3: Attribute AForExpr::@parent */
 /* 4: Attribute AForExpr::_first_location */
 /* 5: Attribute AForExpr::_last_location */
 /* 6: Attribute AForExpr::_n_annotations */
@@ -68216,19 +70138,26 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:831 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1129 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:834 */
+  /* parser/parser_nodes.nit:1132 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -68290,13 +70219,13 @@ val_t NEW_AForExpr_parser___parser_prod___AForExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4404;
+  fra.me.line = 5590;
   fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4404 */
+  /* parser/parser_prod.nit:5590 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AForExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[0]);
   parser___parser_prod___AForExpr___empty_init(fra.me.REG[0], init_table);
@@ -68311,7 +70240,7 @@ val_t NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4406;
+  fra.me.line = 5592;
   fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -68329,7 +70258,7 @@ val_t NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:4406 */
+  /* parser/parser_prod.nit:5592 */
   fra.me.REG[6] = NEW_parser___parser_nodes___AForExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[6]);
   parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
@@ -68344,13 +70273,13 @@ val_t NEW_AForExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AForExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -68358,7 +70287,7 @@ val_t NEW_AForExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[102] = {
   {(bigint) 4575 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAssertExpr" /* 2: Class Name */},
@@ -68377,16 +70306,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAssertExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -68394,8 +70313,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68403,6 +70321,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAssertExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -68416,31 +70345,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAssertExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAssertExpr___visit_all},
-  {(bigint) 2 /* 63: AAssertExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAssertExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAssertExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAssertExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AAssertExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAssertExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAssertExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AAssertExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AAssertExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAssertExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -68450,16 +70381,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AAssertExpr___empty_init},
   {(bigint) parser___parser_prod___AAssertExpr___init_aassertexpr},
-  {(bigint) 4 /* 91: AAssertExpr < AAssertExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAssertExpr < AAssertExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssertExpr___n_kwassert},
+  {(bigint) parser___parser_prod___AAssertExpr___n_kwassert__eq},
   {(bigint) parser___parser_nodes___AAssertExpr___n_id},
+  {(bigint) parser___parser_prod___AAssertExpr___n_id__eq},
   {(bigint) parser___parser_nodes___AAssertExpr___n_expr},
+  {(bigint) parser___parser_prod___AAssertExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAssertExpr___n_else},
+  {(bigint) parser___parser_prod___AAssertExpr___n_else__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAssertExpr::_parent */
-/* 3: Attribute AAssertExpr::_location */
+/* 2: Attribute AAssertExpr::_location */
+/* 3: Attribute AAssertExpr::@parent */
 /* 4: Attribute AAssertExpr::_first_location */
 /* 5: Attribute AAssertExpr::_last_location */
 /* 6: Attribute AAssertExpr::_n_annotations */
@@ -68487,16 +70422,22 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:839 */
+  /* parser/parser_nodes.nit:1139 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:841 */
+  /* parser/parser_nodes.nit:1141 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -68548,13 +70489,13 @@ val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init(void){
   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 = 4520;
+  fra.me.line = 5737;
   fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4520 */
+  /* parser/parser_prod.nit:5737 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAssertExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
   parser___parser_prod___AAssertExpr___empty_init(fra.me.REG[0], init_table);
@@ -68569,7 +70510,7 @@ val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(val_
   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 = 4522;
+  fra.me.line = 5739;
   fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -68583,7 +70524,7 @@ val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(val_
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:4522 */
+  /* parser/parser_prod.nit:5739 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AAssertExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[4]);
   parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -68598,13 +70539,13 @@ val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAssertExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -68612,7 +70553,7 @@ val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[100] = {
   {(bigint) 4687 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOnceExpr" /* 2: Class Name */},
@@ -68631,16 +70572,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AOnceExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -68648,8 +70579,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68657,6 +70587,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AOnceExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -68670,31 +70611,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOnceExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOnceExpr___visit_all},
-  {(bigint) 3 /* 63: AOnceExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AOnceExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AOnceExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOnceExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AOnceExpr___accept_typing},
   {(bigint) syntax___typing___AProxyExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AOnceExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AOnceExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AOnceExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AOnceExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AOnceExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AProxyExpr___is_self},
@@ -68702,18 +70645,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AOnceExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) 0 /* 91: AOnceExpr < AProxyExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
+  {(bigint) parser___parser_prod___AOnceExpr___n_expr__eq},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___AOnceExpr___empty_init},
   {(bigint) parser___parser_prod___AOnceExpr___init_aonceexpr},
-  {(bigint) 5 /* 94: AOnceExpr < AOnceExpr: superclass init_table position */},
+  {(bigint) 5 /* 97: AOnceExpr < AOnceExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOnceExpr___n_kwonce},
+  {(bigint) parser___parser_prod___AOnceExpr___n_kwonce__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AOnceExpr::_parent */
-/* 3: Attribute AOnceExpr::_location */
+/* 2: Attribute AOnceExpr::_location */
+/* 3: Attribute AOnceExpr::@parent */
 /* 4: Attribute AOnceExpr::_first_location */
 /* 5: Attribute AOnceExpr::_last_location */
 /* 6: Attribute AOnceExpr::_n_annotations */
@@ -68739,7 +70684,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -68794,13 +70745,13 @@ val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4601;
+  fra.me.line = 5844;
   fra.me.meth = LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4601 */
+  /* parser/parser_prod.nit:5844 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOnceExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
   parser___parser_prod___AOnceExpr___empty_init(fra.me.REG[0], init_table);
@@ -68815,7 +70766,7 @@ val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0,
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4603;
+  fra.me.line = 5846;
   fra.me.meth = LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -68825,7 +70776,7 @@ val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4603 */
+  /* parser/parser_prod.nit:5846 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AOnceExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[2]);
   parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -68840,13 +70791,13 @@ val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AOnceExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOnceExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -68854,7 +70805,7 @@ val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
+const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[98] = {
   {(bigint) 4679 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOrExpr" /* 2: Class Name */},
@@ -68873,16 +70824,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AOrExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -68890,8 +70831,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68899,6 +70839,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AOrExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -68912,31 +70863,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOrExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOrExpr___visit_all},
-  {(bigint) 3 /* 63: AOrExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AOrExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AOrExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOrExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AOrExpr___accept_typing},
   {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AOrExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AOrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: AOrExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AOrExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AOrExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AOrExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -68944,17 +70897,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AOrExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AOrExpr___empty_init},
   {(bigint) parser___parser_prod___AOrExpr___init_aorexpr},
-  {(bigint) 5 /* 92: AOrExpr < AOrExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: AOrExpr < AOrExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOrExpr___n_expr},
+  {(bigint) parser___parser_prod___AOrExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AOrExpr___n_expr2},
+  {(bigint) parser___parser_prod___AOrExpr___n_expr2__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AOrExpr::_parent */
-/* 3: Attribute AOrExpr::_location */
+/* 2: Attribute AOrExpr::_location */
+/* 3: Attribute AOrExpr::@parent */
 /* 4: Attribute AOrExpr::_first_location */
 /* 5: Attribute AOrExpr::_last_location */
 /* 6: Attribute AOrExpr::_n_annotations */
@@ -68980,7 +70934,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -69035,13 +70995,13 @@ val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4722;
+  fra.me.line = 5996;
   fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4722 */
+  /* parser/parser_prod.nit:5996 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[0]);
   parser___parser_prod___AOrExpr___empty_init(fra.me.REG[0], init_table);
@@ -69056,7 +71016,7 @@ val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4724;
+  fra.me.line = 5998;
   fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -69066,7 +71026,7 @@ val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4724 */
+  /* parser/parser_prod.nit:5998 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AOrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[2]);
   parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -69081,13 +71041,13 @@ val_t NEW_AOrExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -69095,8 +71055,8 @@ val_t NEW_AOrExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
-  {(bigint) 4815 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[98] = {
+  {(bigint) 4819 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAndExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAndExpr < Object: superclass typecheck marker */},
@@ -69105,7 +71065,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: AAndExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4547 /* 8: AAndExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4815 /* 9: AAndExpr < AAndExpr: superclass typecheck marker */},
+  {(bigint) 4819 /* 9: AAndExpr < AAndExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69114,16 +71074,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAndExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -69131,8 +71081,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69140,6 +71089,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAndExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -69153,31 +71113,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAndExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAndExpr___visit_all},
-  {(bigint) 3 /* 63: AAndExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAndExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAndExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAndExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AAndExpr___accept_typing},
   {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAndExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAndExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: AAndExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AAndExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AAndExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAndExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -69185,17 +71147,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AAndExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AAndExpr___empty_init},
   {(bigint) parser___parser_prod___AAndExpr___init_aandexpr},
-  {(bigint) 5 /* 92: AAndExpr < AAndExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: AAndExpr < AAndExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAndExpr___n_expr},
+  {(bigint) parser___parser_prod___AAndExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAndExpr___n_expr2},
+  {(bigint) parser___parser_prod___AAndExpr___n_expr2__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAndExpr::_parent */
-/* 3: Attribute AAndExpr::_location */
+/* 2: Attribute AAndExpr::_location */
+/* 3: Attribute AAndExpr::@parent */
 /* 4: Attribute AAndExpr::_first_location */
 /* 5: Attribute AAndExpr::_last_location */
 /* 6: Attribute AAndExpr::_n_annotations */
@@ -69221,7 +71184,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -69276,13 +71245,13 @@ val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4767;
+  fra.me.line = 6053;
   fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4767 */
+  /* parser/parser_prod.nit:6053 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAndExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[0]);
   parser___parser_prod___AAndExpr___empty_init(fra.me.REG[0], init_table);
@@ -69297,7 +71266,7 @@ val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4769;
+  fra.me.line = 6055;
   fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -69307,7 +71276,7 @@ val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4769 */
+  /* parser/parser_prod.nit:6055 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AAndExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[2]);
   parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -69322,13 +71291,13 @@ val_t NEW_AAndExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAndExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -69336,7 +71305,7 @@ val_t NEW_AAndExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
+const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[98] = {
   {(bigint) 4683 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOrElseExpr" /* 2: Class Name */},
@@ -69355,16 +71324,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AOrElseExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -69372,8 +71331,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69381,6 +71339,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AOrElseExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -69394,31 +71363,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOrElseExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOrElseExpr___visit_all},
-  {(bigint) 3 /* 63: AOrElseExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AOrElseExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AOrElseExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOrElseExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AOrElseExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AOrElseExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AOrElseExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: AOrElseExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AOrElseExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AOrElseExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AOrElseExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -69426,17 +71397,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AOrElseExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AOrElseExpr___empty_init},
   {(bigint) parser___parser_prod___AOrElseExpr___init_aorelseexpr},
-  {(bigint) 5 /* 92: AOrElseExpr < AOrElseExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: AOrElseExpr < AOrElseExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOrElseExpr___n_expr},
+  {(bigint) parser___parser_prod___AOrElseExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AOrElseExpr___n_expr2},
+  {(bigint) parser___parser_prod___AOrElseExpr___n_expr2__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AOrElseExpr::_parent */
-/* 3: Attribute AOrElseExpr::_location */
+/* 2: Attribute AOrElseExpr::_location */
+/* 3: Attribute AOrElseExpr::@parent */
 /* 4: Attribute AOrElseExpr::_first_location */
 /* 5: Attribute AOrElseExpr::_last_location */
 /* 6: Attribute AOrElseExpr::_n_annotations */
@@ -69462,7 +71434,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -69517,13 +71495,13 @@ val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4812;
+  fra.me.line = 6110;
   fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4812 */
+  /* parser/parser_prod.nit:6110 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrElseExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
   parser___parser_prod___AOrElseExpr___empty_init(fra.me.REG[0], init_table);
@@ -69538,7 +71516,7 @@ val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4814;
+  fra.me.line = 6112;
   fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -69548,7 +71526,7 @@ val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4814 */
+  /* parser/parser_prod.nit:6112 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AOrElseExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[2]);
   parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -69563,13 +71541,13 @@ val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrElseExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -69577,7 +71555,7 @@ val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
+const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[98] = {
   {(bigint) 4691 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANotExpr" /* 2: Class Name */},
@@ -69596,16 +71574,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ANotExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -69613,8 +71581,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69622,6 +71589,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ANotExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -69635,31 +71613,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANotExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANotExpr___visit_all},
-  {(bigint) 3 /* 63: ANotExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ANotExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ANotExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANotExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANotExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ANotExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ANotExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: ANotExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: ANotExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: ANotExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ANotExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -69667,17 +71647,18 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: ANotExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___ANotExpr___empty_init},
   {(bigint) parser___parser_prod___ANotExpr___init_anotexpr},
-  {(bigint) 5 /* 92: ANotExpr < ANotExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: ANotExpr < ANotExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANotExpr___n_kwnot},
+  {(bigint) parser___parser_prod___ANotExpr___n_kwnot__eq},
   {(bigint) parser___parser_nodes___ANotExpr___n_expr},
+  {(bigint) parser___parser_prod___ANotExpr___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ANotExpr::_parent */
-/* 3: Attribute ANotExpr::_location */
+/* 2: Attribute ANotExpr::_location */
+/* 3: Attribute ANotExpr::@parent */
 /* 4: Attribute ANotExpr::_first_location */
 /* 5: Attribute ANotExpr::_last_location */
 /* 6: Attribute ANotExpr::_n_annotations */
@@ -69703,7 +71684,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -69758,13 +71745,13 @@ val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4857;
+  fra.me.line = 6167;
   fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4857 */
+  /* parser/parser_prod.nit:6167 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANotExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[0]);
   parser___parser_prod___ANotExpr___empty_init(fra.me.REG[0], init_table);
@@ -69779,7 +71766,7 @@ val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4859;
+  fra.me.line = 6169;
   fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -69789,7 +71776,7 @@ val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4859 */
+  /* parser/parser_prod.nit:6169 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ANotExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[2]);
   parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -69804,13 +71791,13 @@ val_t NEW_ANotExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANotExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -69818,8 +71805,8 @@ val_t NEW_ANotExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
-  {(bigint) 4943 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[134] = {
+  {(bigint) 4947 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEqExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEqExpr < Object: superclass typecheck marker */},
@@ -69828,25 +71815,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
   {(bigint) 4595 /* 6: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AEqExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AEqExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AEqExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AEqExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4943 /* 13: AEqExpr < AEqExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AEqExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AEqExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AEqExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4947 /* 13: AEqExpr < AEqExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AEqExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -69854,8 +71831,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69863,6 +71839,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AEqExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -69876,31 +71863,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEqExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEqExpr___visit_all},
-  {(bigint) 7 /* 63: AEqExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AEqExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AEqExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEqExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AEqExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AEqExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AEqExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AEqExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AEqExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AEqExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AEqExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -69916,17 +71905,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AEqExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AEqExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AEqExpr___name},
@@ -69934,23 +71926,25 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AEqExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AEqExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AEqExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AEqExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AEqExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AEqExpr___n_expr2__eq},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___AEqExpr___try_to_isa},
   {(bigint) parser___parser_prod___AEqExpr___empty_init},
   {(bigint) parser___parser_prod___AEqExpr___init_aeqexpr},
-  {(bigint) 9 /* 126: AEqExpr < AEqExpr: superclass init_table position */},
+  {(bigint) 9 /* 133: AEqExpr < AEqExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AEqExpr::_parent */
-/* 3: Attribute AEqExpr::_location */
+/* 2: Attribute AEqExpr::_location */
+/* 3: Attribute AEqExpr::@parent */
 /* 4: Attribute AEqExpr::_first_location */
 /* 5: Attribute AEqExpr::_last_location */
 /* 6: Attribute AEqExpr::_n_annotations */
@@ -69984,7 +71978,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -69993,8 +71993,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -70050,13 +72051,13 @@ val_t NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -70071,13 +72072,13 @@ val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4902;
+  fra.me.line = 6224;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4902 */
+  /* parser/parser_prod.nit:6224 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   parser___parser_prod___AEqExpr___empty_init(fra.me.REG[0], init_table);
@@ -70092,7 +72093,7 @@ val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4904;
+  fra.me.line = 6226;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -70102,7 +72103,7 @@ val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4904 */
+  /* parser/parser_prod.nit:6226 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[2]);
   parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -70117,13 +72118,13 @@ val_t NEW_AEqExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -70138,13 +72139,13 @@ val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -70159,7 +72160,7 @@ val_t NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -70169,7 +72170,7 @@ val_t NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -70184,7 +72185,7 @@ val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -70192,7 +72193,7 @@ val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AEqExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -70200,8 +72201,8 @@ val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
-  {(bigint) 4755 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[98] = {
+  {(bigint) 4759 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEeExpr < Object: superclass typecheck marker */},
@@ -70210,7 +72211,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: AEeExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4547 /* 8: AEeExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4755 /* 9: AEeExpr < AEeExpr: superclass typecheck marker */},
+  {(bigint) 4759 /* 9: AEeExpr < AEeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70219,16 +72220,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AEeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -70236,8 +72227,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -70245,6 +72235,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AEeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -70258,31 +72259,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEeExpr___visit_all},
-  {(bigint) 3 /* 63: AEeExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AEeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AEeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AEeExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AEeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: AEeExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AEeExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AEeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AEeExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -70290,17 +72293,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AEeExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AEeExpr___empty_init},
   {(bigint) parser___parser_prod___AEeExpr___init_aeeexpr},
-  {(bigint) 5 /* 92: AEeExpr < AEeExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: AEeExpr < AEeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEeExpr___n_expr},
+  {(bigint) parser___parser_prod___AEeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AEeExpr___n_expr2},
+  {(bigint) parser___parser_prod___AEeExpr___n_expr2__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AEeExpr::_parent */
-/* 3: Attribute AEeExpr::_location */
+/* 2: Attribute AEeExpr::_location */
+/* 3: Attribute AEeExpr::@parent */
 /* 4: Attribute AEeExpr::_first_location */
 /* 5: Attribute AEeExpr::_last_location */
 /* 6: Attribute AEeExpr::_n_annotations */
@@ -70326,7 +72330,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -70381,13 +72391,13 @@ val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4947;
+  fra.me.line = 6281;
   fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4947 */
+  /* parser/parser_prod.nit:6281 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[0]);
   parser___parser_prod___AEeExpr___empty_init(fra.me.REG[0], init_table);
@@ -70402,7 +72412,7 @@ val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4949;
+  fra.me.line = 6283;
   fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -70412,7 +72422,7 @@ val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4949 */
+  /* parser/parser_prod.nit:6283 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AEeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[2]);
   parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -70427,13 +72437,13 @@ val_t NEW_AEeExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -70441,8 +72451,8 @@ val_t NEW_AEeExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
-  {(bigint) 4911 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[134] = {
+  {(bigint) 4915 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANeExpr < Object: superclass typecheck marker */},
@@ -70451,25 +72461,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
   {(bigint) 4595 /* 6: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ANeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ANeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ANeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: ANeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4911 /* 13: ANeExpr < ANeExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ANeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ANeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: ANeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4915 /* 13: ANeExpr < ANeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ANeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -70477,8 +72477,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -70486,6 +72485,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ANeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -70499,31 +72509,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANeExpr___visit_all},
-  {(bigint) 7 /* 63: ANeExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ANeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ANeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANeExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ANeExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ANeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ANeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ANeExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ANeExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ANeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -70539,17 +72551,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ANeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ANeExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ANeExpr___name},
@@ -70557,23 +72572,25 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ANeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ANeExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ANeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: ANeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ANeExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ANeExpr___n_expr2__eq},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ANeExpr___try_to_isa},
   {(bigint) parser___parser_prod___ANeExpr___empty_init},
   {(bigint) parser___parser_prod___ANeExpr___init_aneexpr},
-  {(bigint) 9 /* 126: ANeExpr < ANeExpr: superclass init_table position */},
+  {(bigint) 9 /* 133: ANeExpr < ANeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ANeExpr::_parent */
-/* 3: Attribute ANeExpr::_location */
+/* 2: Attribute ANeExpr::_location */
+/* 3: Attribute ANeExpr::@parent */
 /* 4: Attribute ANeExpr::_first_location */
 /* 5: Attribute ANeExpr::_last_location */
 /* 6: Attribute ANeExpr::_n_annotations */
@@ -70607,7 +72624,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -70616,8 +72639,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -70673,13 +72697,13 @@ val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -70694,13 +72718,13 @@ val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 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 = 6338;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4992 */
+  /* parser/parser_prod.nit:6338 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
   parser___parser_prod___ANeExpr___empty_init(fra.me.REG[0], init_table);
@@ -70715,7 +72739,7 @@ val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4994;
+  fra.me.line = 6340;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -70725,7 +72749,7 @@ val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4994 */
+  /* parser/parser_prod.nit:6340 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[2]);
   parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -70740,13 +72764,13 @@ val_t NEW_ANeExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -70761,13 +72785,13 @@ val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -70782,7 +72806,7 @@ val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -70792,7 +72816,7 @@ val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -70807,7 +72831,7 @@ val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -70815,7 +72839,7 @@ val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ANeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -70823,8 +72847,8 @@ val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
-  {(bigint) 4919 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[132] = {
+  {(bigint) 4923 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALtExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALtExpr < Object: superclass typecheck marker */},
@@ -70833,25 +72857,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
   {(bigint) 4595 /* 6: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ALtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ALtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ALtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: ALtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4919 /* 13: ALtExpr < ALtExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ALtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ALtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: ALtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4923 /* 13: ALtExpr < ALtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ALtExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -70859,8 +72873,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -70868,6 +72881,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ALtExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -70881,31 +72905,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALtExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALtExpr___visit_all},
-  {(bigint) 7 /* 63: ALtExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ALtExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALtExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALtExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ALtExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ALtExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ALtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ALtExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ALtExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ALtExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -70921,17 +72947,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ALtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ALtExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ALtExpr___name},
@@ -70939,21 +72968,23 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ALtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ALtExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ALtExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: ALtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ALtExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ALtExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___ALtExpr___empty_init},
   {(bigint) parser___parser_prod___ALtExpr___init_altexpr},
-  {(bigint) 9 /* 124: ALtExpr < ALtExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: ALtExpr < ALtExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALtExpr::_parent */
-/* 3: Attribute ALtExpr::_location */
+/* 2: Attribute ALtExpr::_location */
+/* 3: Attribute ALtExpr::@parent */
 /* 4: Attribute ALtExpr::_first_location */
 /* 5: Attribute ALtExpr::_last_location */
 /* 6: Attribute ALtExpr::_n_annotations */
@@ -70987,7 +73018,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -70996,8 +73033,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -71053,13 +73091,13 @@ val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -71074,13 +73112,13 @@ val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5037;
+  fra.me.line = 6395;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5037 */
+  /* parser/parser_prod.nit:6395 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
   parser___parser_prod___ALtExpr___empty_init(fra.me.REG[0], init_table);
@@ -71095,7 +73133,7 @@ val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5039;
+  fra.me.line = 6397;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -71105,7 +73143,7 @@ val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5039 */
+  /* parser/parser_prod.nit:6397 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[2]);
   parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -71120,13 +73158,13 @@ val_t NEW_ALtExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -71141,13 +73179,13 @@ val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -71162,7 +73200,7 @@ val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -71172,7 +73210,7 @@ val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -71187,7 +73225,7 @@ val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -71195,7 +73233,7 @@ val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -71203,8 +73241,8 @@ val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
-  {(bigint) 4927 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[132] = {
+  {(bigint) 4931 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALeExpr < Object: superclass typecheck marker */},
@@ -71213,25 +73251,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
   {(bigint) 4595 /* 6: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ALeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ALeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ALeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: ALeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4927 /* 13: ALeExpr < ALeExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ALeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ALeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: ALeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4931 /* 13: ALeExpr < ALeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ALeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -71239,8 +73267,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -71248,6 +73275,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ALeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -71261,31 +73299,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALeExpr___visit_all},
-  {(bigint) 7 /* 63: ALeExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ALeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ALeExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ALeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ALeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ALeExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ALeExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ALeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -71301,17 +73341,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ALeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ALeExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ALeExpr___name},
@@ -71319,21 +73362,23 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ALeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ALeExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ALeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: ALeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ALeExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ALeExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___ALeExpr___empty_init},
   {(bigint) parser___parser_prod___ALeExpr___init_aleexpr},
-  {(bigint) 9 /* 124: ALeExpr < ALeExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: ALeExpr < ALeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALeExpr::_parent */
-/* 3: Attribute ALeExpr::_location */
+/* 2: Attribute ALeExpr::_location */
+/* 3: Attribute ALeExpr::@parent */
 /* 4: Attribute ALeExpr::_first_location */
 /* 5: Attribute ALeExpr::_last_location */
 /* 6: Attribute ALeExpr::_n_annotations */
@@ -71367,7 +73412,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -71376,8 +73427,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -71433,13 +73485,13 @@ val_t NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -71454,13 +73506,13 @@ val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5082;
+  fra.me.line = 6452;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5082 */
+  /* parser/parser_prod.nit:6452 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   parser___parser_prod___ALeExpr___empty_init(fra.me.REG[0], init_table);
@@ -71475,7 +73527,7 @@ val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5084;
+  fra.me.line = 6454;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -71485,7 +73537,7 @@ val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5084 */
+  /* parser/parser_prod.nit:6454 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[2]);
   parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -71500,13 +73552,13 @@ val_t NEW_ALeExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -71521,13 +73573,13 @@ val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -71542,7 +73594,7 @@ val_t NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -71552,7 +73604,7 @@ val_t NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -71567,7 +73619,7 @@ val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -71575,7 +73627,7 @@ val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -71583,8 +73635,8 @@ val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
-  {(bigint) 4923 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[132] = {
+  {(bigint) 4927 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALlExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALlExpr < Object: superclass typecheck marker */},
@@ -71593,25 +73645,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
   {(bigint) 4595 /* 6: ALlExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ALlExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ALlExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ALlExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: ALlExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4923 /* 13: ALlExpr < ALlExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ALlExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ALlExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: ALlExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4927 /* 13: ALlExpr < ALlExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ALlExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -71619,8 +73661,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -71628,6 +73669,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ALlExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -71641,31 +73693,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALlExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALlExpr___visit_all},
-  {(bigint) 7 /* 63: ALlExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ALlExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ALlExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALlExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ALlExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ALlExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ALlExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ALlExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ALlExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ALlExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -71681,17 +73735,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ALlExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ALlExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ALlExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ALlExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ALlExpr___name},
@@ -71699,21 +73756,23 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ALlExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ALlExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ALlExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: ALlExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ALlExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ALlExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___ALlExpr___empty_init},
   {(bigint) parser___parser_prod___ALlExpr___init_allexpr},
-  {(bigint) 9 /* 124: ALlExpr < ALlExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: ALlExpr < ALlExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ALlExpr::_parent */
-/* 3: Attribute ALlExpr::_location */
+/* 2: Attribute ALlExpr::_location */
+/* 3: Attribute ALlExpr::@parent */
 /* 4: Attribute ALlExpr::_first_location */
 /* 5: Attribute ALlExpr::_last_location */
 /* 6: Attribute ALlExpr::_n_annotations */
@@ -71747,7 +73806,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -71756,8 +73821,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -71813,13 +73879,13 @@ val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -71834,13 +73900,13 @@ val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5127;
+  fra.me.line = 6509;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5127 */
+  /* parser/parser_prod.nit:6509 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   parser___parser_prod___ALlExpr___empty_init(fra.me.REG[0], init_table);
@@ -71855,7 +73921,7 @@ val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5129;
+  fra.me.line = 6511;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -71865,7 +73931,7 @@ val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5129 */
+  /* parser/parser_prod.nit:6511 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[2]);
   parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -71880,13 +73946,13 @@ val_t NEW_ALlExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -71901,13 +73967,13 @@ val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -71922,7 +73988,7 @@ val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -71932,7 +73998,7 @@ val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -71947,7 +74013,7 @@ val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -71955,7 +74021,7 @@ val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ALlExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -71963,8 +74029,8 @@ val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
-  {(bigint) 4931 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[132] = {
+  {(bigint) 4935 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGtExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGtExpr < Object: superclass typecheck marker */},
@@ -71973,25 +74039,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
   {(bigint) 4595 /* 6: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AGtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AGtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AGtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AGtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4931 /* 13: AGtExpr < AGtExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AGtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AGtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AGtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4935 /* 13: AGtExpr < AGtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AGtExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -71999,8 +74055,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72008,6 +74063,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AGtExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -72021,31 +74087,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGtExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGtExpr___visit_all},
-  {(bigint) 7 /* 63: AGtExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AGtExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AGtExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGtExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AGtExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AGtExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AGtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AGtExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AGtExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AGtExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -72061,17 +74129,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AGtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AGtExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AGtExpr___name},
@@ -72079,21 +74150,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AGtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AGtExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AGtExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AGtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AGtExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AGtExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AGtExpr___empty_init},
   {(bigint) parser___parser_prod___AGtExpr___init_agtexpr},
-  {(bigint) 9 /* 124: AGtExpr < AGtExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: AGtExpr < AGtExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AGtExpr::_parent */
-/* 3: Attribute AGtExpr::_location */
+/* 2: Attribute AGtExpr::_location */
+/* 3: Attribute AGtExpr::@parent */
 /* 4: Attribute AGtExpr::_first_location */
 /* 5: Attribute AGtExpr::_last_location */
 /* 6: Attribute AGtExpr::_n_annotations */
@@ -72127,7 +74200,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -72136,8 +74215,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -72193,13 +74273,13 @@ val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -72214,13 +74294,13 @@ val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5172;
+  fra.me.line = 6566;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5172 */
+  /* parser/parser_prod.nit:6566 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   parser___parser_prod___AGtExpr___empty_init(fra.me.REG[0], init_table);
@@ -72235,7 +74315,7 @@ val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5174;
+  fra.me.line = 6568;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -72245,7 +74325,7 @@ val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5174 */
+  /* parser/parser_prod.nit:6568 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[2]);
   parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -72260,13 +74340,13 @@ val_t NEW_AGtExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -72281,13 +74361,13 @@ val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -72302,7 +74382,7 @@ val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -72312,7 +74392,7 @@ val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -72327,7 +74407,7 @@ val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -72335,7 +74415,7 @@ val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AGtExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -72343,8 +74423,8 @@ val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
-  {(bigint) 4939 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[132] = {
+  {(bigint) 4943 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGeExpr < Object: superclass typecheck marker */},
@@ -72353,25 +74433,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
   {(bigint) 4595 /* 6: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AGeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AGeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AGeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AGeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4939 /* 13: AGeExpr < AGeExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AGeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AGeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AGeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4943 /* 13: AGeExpr < AGeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AGeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -72379,8 +74449,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72388,6 +74457,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AGeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -72401,31 +74481,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGeExpr___visit_all},
-  {(bigint) 7 /* 63: AGeExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AGeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AGeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AGeExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AGeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AGeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AGeExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AGeExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AGeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -72441,17 +74523,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AGeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AGeExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AGeExpr___name},
@@ -72459,21 +74544,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AGeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AGeExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AGeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AGeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AGeExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AGeExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AGeExpr___empty_init},
   {(bigint) parser___parser_prod___AGeExpr___init_ageexpr},
-  {(bigint) 9 /* 124: AGeExpr < AGeExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: AGeExpr < AGeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AGeExpr::_parent */
-/* 3: Attribute AGeExpr::_location */
+/* 2: Attribute AGeExpr::_location */
+/* 3: Attribute AGeExpr::@parent */
 /* 4: Attribute AGeExpr::_first_location */
 /* 5: Attribute AGeExpr::_last_location */
 /* 6: Attribute AGeExpr::_n_annotations */
@@ -72507,7 +74594,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -72516,8 +74609,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -72573,13 +74667,13 @@ val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -72594,13 +74688,13 @@ val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5217;
+  fra.me.line = 6623;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5217 */
+  /* parser/parser_prod.nit:6623 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   parser___parser_prod___AGeExpr___empty_init(fra.me.REG[0], init_table);
@@ -72615,7 +74709,7 @@ val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5219;
+  fra.me.line = 6625;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -72625,7 +74719,7 @@ val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5219 */
+  /* parser/parser_prod.nit:6625 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[2]);
   parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -72640,13 +74734,13 @@ val_t NEW_AGeExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -72661,13 +74755,13 @@ val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -72682,7 +74776,7 @@ val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -72692,7 +74786,7 @@ val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -72707,7 +74801,7 @@ val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -72715,7 +74809,7 @@ val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AGeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -72723,8 +74817,8 @@ val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
-  {(bigint) 4935 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[132] = {
+  {(bigint) 4939 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGgExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGgExpr < Object: superclass typecheck marker */},
@@ -72733,25 +74827,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
   {(bigint) 4595 /* 6: AGgExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AGgExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AGgExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AGgExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AGgExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4935 /* 13: AGgExpr < AGgExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AGgExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AGgExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AGgExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4939 /* 13: AGgExpr < AGgExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AGgExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -72759,8 +74843,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72768,6 +74851,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AGgExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -72781,31 +74875,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGgExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGgExpr___visit_all},
-  {(bigint) 7 /* 63: AGgExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AGgExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AGgExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGgExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AGgExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AGgExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AGgExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AGgExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AGgExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AGgExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -72821,17 +74917,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AGgExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AGgExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AGgExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AGgExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AGgExpr___name},
@@ -72839,21 +74938,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AGgExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AGgExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AGgExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AGgExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AGgExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AGgExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AGgExpr___empty_init},
   {(bigint) parser___parser_prod___AGgExpr___init_aggexpr},
-  {(bigint) 9 /* 124: AGgExpr < AGgExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: AGgExpr < AGgExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AGgExpr::_parent */
-/* 3: Attribute AGgExpr::_location */
+/* 2: Attribute AGgExpr::_location */
+/* 3: Attribute AGgExpr::@parent */
 /* 4: Attribute AGgExpr::_first_location */
 /* 5: Attribute AGgExpr::_last_location */
 /* 6: Attribute AGgExpr::_n_annotations */
@@ -72887,7 +74988,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -72896,8 +75003,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -72953,13 +75061,13 @@ val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -72974,13 +75082,13 @@ val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5262;
+  fra.me.line = 6680;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5262 */
+  /* parser/parser_prod.nit:6680 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
   parser___parser_prod___AGgExpr___empty_init(fra.me.REG[0], init_table);
@@ -72995,7 +75103,7 @@ val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5264;
+  fra.me.line = 6682;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -73005,7 +75113,7 @@ val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5264 */
+  /* parser/parser_prod.nit:6682 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[2]);
   parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -73020,13 +75128,13 @@ val_t NEW_AGgExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -73041,13 +75149,13 @@ val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -73062,7 +75170,7 @@ val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -73072,7 +75180,7 @@ val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -73087,7 +75195,7 @@ val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -73095,7 +75203,7 @@ val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AGgExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -73103,8 +75211,8 @@ val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
-  {(bigint) 4715 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[98] = {
+  {(bigint) 4719 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIsaExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIsaExpr < Object: superclass typecheck marker */},
@@ -73113,7 +75221,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
   {(bigint) 4275 /* 6: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AIsaExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4547 /* 8: AIsaExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4715 /* 9: AIsaExpr < AIsaExpr: superclass typecheck marker */},
+  {(bigint) 4719 /* 9: AIsaExpr < AIsaExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73122,16 +75230,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AIsaExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -73139,8 +75237,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73148,6 +75245,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AIsaExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -73161,31 +75269,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIsaExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIsaExpr___visit_all},
-  {(bigint) 3 /* 63: AIsaExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AIsaExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIsaExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIsaExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AIsaExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AIsaExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AIsaExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
   {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) 5 /* 78: AIsaExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AIsaExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AIsaExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AIsaExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -73193,17 +75303,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 5 /* 89: AIsaExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AIsaExpr___empty_init},
   {(bigint) parser___parser_prod___AIsaExpr___init_aisaexpr},
-  {(bigint) 6 /* 92: AIsaExpr < AIsaExpr: superclass init_table position */},
+  {(bigint) 6 /* 93: AIsaExpr < AIsaExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIsaExpr___n_expr},
+  {(bigint) parser___parser_prod___AIsaExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AIsaExpr___n_type},
+  {(bigint) parser___parser_prod___AIsaExpr___n_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIsaExpr::_parent */
-/* 3: Attribute AIsaExpr::_location */
+/* 2: Attribute AIsaExpr::_location */
+/* 3: Attribute AIsaExpr::@parent */
 /* 4: Attribute AIsaExpr::_first_location */
 /* 5: Attribute AIsaExpr::_last_location */
 /* 6: Attribute AIsaExpr::_n_annotations */
@@ -73229,7 +75340,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -73284,13 +75401,13 @@ val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5307;
+  fra.me.line = 6737;
   fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5307 */
+  /* parser/parser_prod.nit:6737 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIsaExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
   parser___parser_prod___AIsaExpr___empty_init(fra.me.REG[0], init_table);
@@ -73305,7 +75422,7 @@ val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5309;
+  fra.me.line = 6739;
   fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -73315,7 +75432,7 @@ val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5309 */
+  /* parser/parser_prod.nit:6739 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AIsaExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[2]);
   parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -73330,13 +75447,13 @@ val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIsaExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -73344,8 +75461,8 @@ val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
-  {(bigint) 4903 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[132] = {
+  {(bigint) 4907 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APlusExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: APlusExpr < Object: superclass typecheck marker */},
@@ -73354,25 +75471,15 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
   {(bigint) 4595 /* 6: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: APlusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: APlusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: APlusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: APlusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4903 /* 13: APlusExpr < APlusExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: APlusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: APlusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: APlusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4907 /* 13: APlusExpr < APlusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: APlusExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -73380,8 +75487,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73389,6 +75495,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: APlusExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -73402,31 +75519,33 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APlusExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APlusExpr___visit_all},
-  {(bigint) 7 /* 63: APlusExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: APlusExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APlusExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APlusExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: APlusExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: APlusExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: APlusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: APlusExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: APlusExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: APlusExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -73442,17 +75561,20 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: APlusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: APlusExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___APlusExpr___name},
@@ -73460,21 +75582,23 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: APlusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: APlusExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___APlusExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: APlusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: APlusExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___APlusExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___APlusExpr___empty_init},
   {(bigint) parser___parser_prod___APlusExpr___init_aplusexpr},
-  {(bigint) 9 /* 124: APlusExpr < APlusExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: APlusExpr < APlusExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APlusExpr::_parent */
-/* 3: Attribute APlusExpr::_location */
+/* 2: Attribute APlusExpr::_location */
+/* 3: Attribute APlusExpr::@parent */
 /* 4: Attribute APlusExpr::_first_location */
 /* 5: Attribute APlusExpr::_last_location */
 /* 6: Attribute APlusExpr::_n_annotations */
@@ -73508,7 +75632,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -73517,8 +75647,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -73574,13 +75705,13 @@ val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -73595,13 +75726,13 @@ val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5352;
+  fra.me.line = 6794;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5352 */
+  /* parser/parser_prod.nit:6794 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   parser___parser_prod___APlusExpr___empty_init(fra.me.REG[0], init_table);
@@ -73616,7 +75747,7 @@ val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5354;
+  fra.me.line = 6796;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -73626,7 +75757,7 @@ val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5354 */
+  /* parser/parser_prod.nit:6796 */
   fra.me.REG[2] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[2]);
   parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -73641,13 +75772,13 @@ val_t NEW_APlusExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -73662,13 +75793,13 @@ val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -73683,7 +75814,7 @@ val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -73693,7 +75824,7 @@ val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -73708,7 +75839,7 @@ val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -73716,7 +75847,7 @@ val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___APlusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -73724,8 +75855,8 @@ val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
-  {(bigint) 4915 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[132] = {
+  {(bigint) 4919 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMinusExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMinusExpr < Object: superclass typecheck marker */},
@@ -73734,25 +75865,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
   {(bigint) 4595 /* 6: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AMinusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AMinusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AMinusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4915 /* 13: AMinusExpr < AMinusExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AMinusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AMinusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4919 /* 13: AMinusExpr < AMinusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AMinusExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -73760,8 +75881,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73769,6 +75889,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AMinusExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -73782,31 +75913,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMinusExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMinusExpr___visit_all},
-  {(bigint) 7 /* 63: AMinusExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AMinusExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AMinusExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMinusExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AMinusExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AMinusExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AMinusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AMinusExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AMinusExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AMinusExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -73822,17 +75955,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AMinusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AMinusExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AMinusExpr___name},
@@ -73840,21 +75976,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AMinusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AMinusExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AMinusExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AMinusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AMinusExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AMinusExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AMinusExpr___empty_init},
   {(bigint) parser___parser_prod___AMinusExpr___init_aminusexpr},
-  {(bigint) 9 /* 124: AMinusExpr < AMinusExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: AMinusExpr < AMinusExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AMinusExpr::_parent */
-/* 3: Attribute AMinusExpr::_location */
+/* 2: Attribute AMinusExpr::_location */
+/* 3: Attribute AMinusExpr::@parent */
 /* 4: Attribute AMinusExpr::_first_location */
 /* 5: Attribute AMinusExpr::_last_location */
 /* 6: Attribute AMinusExpr::_n_annotations */
@@ -73888,7 +76026,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -73897,8 +76041,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -73954,13 +76099,13 @@ val_t NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -73975,13 +76120,13 @@ val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5397;
+  fra.me.line = 6851;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5397 */
+  /* parser/parser_prod.nit:6851 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   parser___parser_prod___AMinusExpr___empty_init(fra.me.REG[0], init_table);
@@ -73996,7 +76141,7 @@ val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5399;
+  fra.me.line = 6853;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -74006,7 +76151,7 @@ val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5399 */
+  /* parser/parser_prod.nit:6853 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
   parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -74021,13 +76166,13 @@ val_t NEW_AMinusExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -74042,13 +76187,13 @@ val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -74063,7 +76208,7 @@ val_t NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -74073,7 +76218,7 @@ val_t NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -74088,7 +76233,7 @@ val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0)
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -74096,7 +76241,7 @@ val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AMinusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -74104,8 +76249,8 @@ val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
-  {(bigint) 4891 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[132] = {
+  {(bigint) 4895 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarshipExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStarshipExpr < Object: superclass typecheck marker */},
@@ -74114,25 +76259,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
   {(bigint) 4595 /* 6: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AStarshipExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AStarshipExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4891 /* 13: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AStarshipExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4895 /* 13: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AStarshipExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -74140,8 +76275,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74149,6 +76283,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AStarshipExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -74162,31 +76307,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarshipExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarshipExpr___visit_all},
-  {(bigint) 7 /* 63: AStarshipExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AStarshipExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStarshipExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarshipExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AStarshipExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AStarshipExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AStarshipExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AStarshipExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AStarshipExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AStarshipExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -74202,17 +76349,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AStarshipExpr___name},
@@ -74220,21 +76370,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AStarshipExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AStarshipExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AStarshipExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AStarshipExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AStarshipExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AStarshipExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AStarshipExpr___empty_init},
   {(bigint) parser___parser_prod___AStarshipExpr___init_astarshipexpr},
-  {(bigint) 9 /* 124: AStarshipExpr < AStarshipExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: AStarshipExpr < AStarshipExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStarshipExpr::_parent */
-/* 3: Attribute AStarshipExpr::_location */
+/* 2: Attribute AStarshipExpr::_location */
+/* 3: Attribute AStarshipExpr::@parent */
 /* 4: Attribute AStarshipExpr::_first_location */
 /* 5: Attribute AStarshipExpr::_last_location */
 /* 6: Attribute AStarshipExpr::_n_annotations */
@@ -74268,7 +76420,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -74277,8 +76435,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -74334,13 +76493,13 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -74355,13 +76514,13 @@ val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5442;
+  fra.me.line = 6908;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5442 */
+  /* parser/parser_prod.nit:6908 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   parser___parser_prod___AStarshipExpr___empty_init(fra.me.REG[0], init_table);
@@ -74376,7 +76535,7 @@ val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexp
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5444;
+  fra.me.line = 6910;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -74386,7 +76545,7 @@ val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexp
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5444 */
+  /* parser/parser_prod.nit:6910 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
   parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -74401,13 +76560,13 @@ val_t NEW_AStarshipExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -74422,13 +76581,13 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -74443,7 +76602,7 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -74453,7 +76612,7 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -74468,7 +76627,7 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -74476,7 +76635,7 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -74484,8 +76643,8 @@ val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
-  {(bigint) 4895 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[132] = {
+  {(bigint) 4899 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStarExpr < Object: superclass typecheck marker */},
@@ -74494,25 +76653,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
   {(bigint) 4595 /* 6: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AStarExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AStarExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AStarExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: AStarExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4895 /* 13: AStarExpr < AStarExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AStarExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AStarExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: AStarExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4899 /* 13: AStarExpr < AStarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: AStarExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -74520,8 +76669,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74529,6 +76677,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: AStarExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -74542,31 +76701,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarExpr___visit_all},
-  {(bigint) 7 /* 63: AStarExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: AStarExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStarExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: AStarExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: AStarExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: AStarExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: AStarExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: AStarExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: AStarExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -74582,17 +76743,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: AStarExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: AStarExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AStarExpr___name},
@@ -74600,21 +76764,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: AStarExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: AStarExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AStarExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: AStarExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: AStarExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AStarExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AStarExpr___empty_init},
   {(bigint) parser___parser_prod___AStarExpr___init_astarexpr},
-  {(bigint) 9 /* 124: AStarExpr < AStarExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: AStarExpr < AStarExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStarExpr::_parent */
-/* 3: Attribute AStarExpr::_location */
+/* 2: Attribute AStarExpr::_location */
+/* 3: Attribute AStarExpr::@parent */
 /* 4: Attribute AStarExpr::_first_location */
 /* 5: Attribute AStarExpr::_last_location */
 /* 6: Attribute AStarExpr::_n_annotations */
@@ -74648,7 +76814,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -74657,8 +76829,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -74714,13 +76887,13 @@ val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -74735,13 +76908,13 @@ val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5487;
+  fra.me.line = 6965;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5487 */
+  /* parser/parser_prod.nit:6965 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
   parser___parser_prod___AStarExpr___empty_init(fra.me.REG[0], init_table);
@@ -74756,7 +76929,7 @@ val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5489;
+  fra.me.line = 6967;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -74766,7 +76939,7 @@ val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5489 */
+  /* parser/parser_prod.nit:6967 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[2]);
   parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -74781,13 +76954,13 @@ val_t NEW_AStarExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -74802,13 +76975,13 @@ val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -74823,7 +76996,7 @@ val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -74833,7 +77006,7 @@ val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -74848,7 +77021,7 @@ val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -74856,7 +77029,7 @@ val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AStarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -74864,8 +77037,8 @@ val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
-  {(bigint) 4899 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[132] = {
+  {(bigint) 4903 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASlashExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASlashExpr < Object: superclass typecheck marker */},
@@ -74874,25 +77047,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
   {(bigint) 4595 /* 6: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ASlashExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ASlashExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: ASlashExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4899 /* 13: ASlashExpr < ASlashExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ASlashExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: ASlashExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4903 /* 13: ASlashExpr < ASlashExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ASlashExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -74900,8 +77063,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74909,6 +77071,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ASlashExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -74922,31 +77095,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASlashExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASlashExpr___visit_all},
-  {(bigint) 7 /* 63: ASlashExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ASlashExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASlashExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASlashExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ASlashExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ASlashExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ASlashExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ASlashExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ASlashExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ASlashExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -74962,17 +77137,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ASlashExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ASlashExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASlashExpr___name},
@@ -74980,21 +77158,23 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ASlashExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ASlashExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ASlashExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: ASlashExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ASlashExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ASlashExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___ASlashExpr___empty_init},
   {(bigint) parser___parser_prod___ASlashExpr___init_aslashexpr},
-  {(bigint) 9 /* 124: ASlashExpr < ASlashExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: ASlashExpr < ASlashExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASlashExpr::_parent */
-/* 3: Attribute ASlashExpr::_location */
+/* 2: Attribute ASlashExpr::_location */
+/* 3: Attribute ASlashExpr::@parent */
 /* 4: Attribute ASlashExpr::_first_location */
 /* 5: Attribute ASlashExpr::_last_location */
 /* 6: Attribute ASlashExpr::_n_annotations */
@@ -75028,7 +77208,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -75037,8 +77223,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -75094,13 +77281,13 @@ val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -75115,13 +77302,13 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 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 = 7022;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5532 */
+  /* parser/parser_prod.nit:7022 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
   parser___parser_prod___ASlashExpr___empty_init(fra.me.REG[0], init_table);
@@ -75136,7 +77323,7 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5534;
+  fra.me.line = 7024;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -75146,7 +77333,7 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5534 */
+  /* parser/parser_prod.nit:7024 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
   parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -75161,13 +77348,13 @@ val_t NEW_ASlashExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -75182,13 +77369,13 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -75203,7 +77390,7 @@ val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -75213,7 +77400,7 @@ val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -75228,7 +77415,7 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0)
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -75236,7 +77423,7 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ASlashExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -75244,8 +77431,8 @@ val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
-  {(bigint) 4907 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[132] = {
+  {(bigint) 4911 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APercentExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: APercentExpr < Object: superclass typecheck marker */},
@@ -75254,25 +77441,15 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
   {(bigint) 4595 /* 6: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: APercentExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: APercentExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: APercentExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4887 /* 12: APercentExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4907 /* 13: APercentExpr < APercentExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: APercentExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: APercentExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 12: APercentExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4911 /* 13: APercentExpr < APercentExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: APercentExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -75280,8 +77457,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75289,6 +77465,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: APercentExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -75302,31 +77489,33 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APercentExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APercentExpr___visit_all},
-  {(bigint) 7 /* 63: APercentExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: APercentExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APercentExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APercentExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: APercentExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: APercentExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: APercentExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: APercentExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: APercentExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: APercentExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -75342,17 +77531,20 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: APercentExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: APercentExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___APercentExpr___name},
@@ -75360,21 +77552,23 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: APercentExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: APercentExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___APercentExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 0 /* 120: APercentExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: APercentExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___APercentExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___APercentExpr___empty_init},
   {(bigint) parser___parser_prod___APercentExpr___init_apercentexpr},
-  {(bigint) 9 /* 124: APercentExpr < APercentExpr: superclass init_table position */},
+  {(bigint) 9 /* 131: APercentExpr < APercentExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APercentExpr::_parent */
-/* 3: Attribute APercentExpr::_location */
+/* 2: Attribute APercentExpr::_location */
+/* 3: Attribute APercentExpr::@parent */
 /* 4: Attribute APercentExpr::_first_location */
 /* 5: Attribute APercentExpr::_last_location */
 /* 6: Attribute APercentExpr::_n_annotations */
@@ -75408,7 +77602,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -75417,8 +77617,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -75474,13 +77675,13 @@ val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4677 */
+  /* parser/parser_prod.nit:5939 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
   parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
@@ -75495,13 +77696,13 @@ val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5577;
+  fra.me.line = 7079;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5577 */
+  /* parser/parser_prod.nit:7079 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
   parser___parser_prod___APercentExpr___empty_init(fra.me.REG[0], init_table);
@@ -75516,7 +77717,7 @@ val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(v
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5579;
+  fra.me.line = 7081;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -75526,7 +77727,7 @@ val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5579 */
+  /* parser/parser_prod.nit:7081 */
   fra.me.REG[2] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[2]);
   parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -75541,13 +77742,13 @@ val_t NEW_APercentExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -75562,13 +77763,13 @@ val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -75583,7 +77784,7 @@ val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -75593,7 +77794,7 @@ val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[2] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[2]);
   parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -75608,7 +77809,7 @@ val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -75616,7 +77817,7 @@ val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___APercentExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -75624,8 +77825,8 @@ val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
-  {(bigint) 4863 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[129] = {
+  {(bigint) 4867 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AUminusExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AUminusExpr < Object: superclass typecheck marker */},
@@ -75634,25 +77835,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
   {(bigint) 4595 /* 6: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AUminusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AUminusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4863 /* 12: AUminusExpr < AUminusExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AUminusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4867 /* 12: AUminusExpr < AUminusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 7 /* 19: AUminusExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -75660,8 +77851,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75669,6 +77859,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 7 /* 33: AUminusExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -75682,31 +77883,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AUminusExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AUminusExpr___visit_all},
-  {(bigint) 6 /* 63: AUminusExpr < ANode: superclass init_table position */},
+  {(bigint) 6 /* 57: AUminusExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AUminusExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AUminusExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 5 /* 72: AUminusExpr < Prod: superclass init_table position */},
+  {(bigint) 5 /* 71: AUminusExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 1 /* 76: AUminusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 1 /* 77: AUminusExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 81: AUminusExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 83: AUminusExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -75722,17 +77925,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___AUminusExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 3 /* 101: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 106: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 2 /* 107: AUminusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 112: AUminusExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AUminusExpr___name},
@@ -75740,18 +77946,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 0 /* 115: AUminusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 0 /* 120: AUminusExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AUminusExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___AUminusExpr___empty_init},
   {(bigint) parser___parser_prod___AUminusExpr___init_auminusexpr},
-  {(bigint) 8 /* 120: AUminusExpr < AUminusExpr: superclass init_table position */},
+  {(bigint) 8 /* 126: AUminusExpr < AUminusExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AUminusExpr___n_minus},
+  {(bigint) parser___parser_prod___AUminusExpr___n_minus__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AUminusExpr::_parent */
-/* 3: Attribute AUminusExpr::_location */
+/* 2: Attribute AUminusExpr::_location */
+/* 3: Attribute AUminusExpr::@parent */
 /* 4: Attribute AUminusExpr::_first_location */
 /* 5: Attribute AUminusExpr::_last_location */
 /* 6: Attribute AUminusExpr::_n_annotations */
@@ -75785,7 +77993,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -75794,8 +78008,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -75851,13 +78066,13 @@ val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -75872,13 +78087,13 @@ val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init(void){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5622;
+  fra.me.line = 7136;
   fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5622 */
+  /* parser/parser_prod.nit:7136 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
   parser___parser_prod___AUminusExpr___empty_init(fra.me.REG[0], init_table);
@@ -75893,7 +78108,7 @@ val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(val_
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5624;
+  fra.me.line = 7138;
   fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -75903,7 +78118,7 @@ val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5624 */
+  /* parser/parser_prod.nit:7138 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AUminusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[2]);
   parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -75918,13 +78133,13 @@ val_t NEW_AUminusExpr_parser___parser_nodes___ANode___init(void){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -75939,7 +78154,7 @@ val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -75947,7 +78162,7 @@ val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AUminusExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -75955,8 +78170,8 @@ val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
-  {(bigint) 4835 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[126] = {
+  {(bigint) 4839 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANewExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANewExpr < Object: superclass typecheck marker */},
@@ -75965,8 +78180,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
   {(bigint) 4595 /* 6: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ANewExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4835 /* 10: ANewExpr < ANewExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4839 /* 10: ANewExpr < ANewExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75974,16 +78189,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 19: ANewExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -75991,8 +78196,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76000,6 +78204,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: ANewExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -76013,31 +78228,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANewExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANewExpr___visit_all},
-  {(bigint) 4 /* 63: ANewExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 57: ANewExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ANewExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANewExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANewExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ANewExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 71: ANewExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___ANewExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 2 /* 81: ANewExpr < AExpr: superclass init_table position */},
+  {(bigint) 2 /* 83: ANewExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ANewExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -76053,31 +78270,38 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ANewExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 101: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 106: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 0 /* 107: ANewExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 0 /* 112: ANewExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) parser___parser_prod___ANewExpr___empty_init},
   {(bigint) parser___parser_prod___ANewExpr___init_anewexpr},
-  {(bigint) 6 /* 112: ANewExpr < ANewExpr: superclass init_table position */},
+  {(bigint) 6 /* 117: ANewExpr < ANewExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANewExpr___n_kwnew},
+  {(bigint) parser___parser_prod___ANewExpr___n_kwnew__eq},
   {(bigint) parser___parser_nodes___ANewExpr___n_type},
+  {(bigint) parser___parser_prod___ANewExpr___n_type__eq},
   {(bigint) parser___parser_nodes___ANewExpr___n_id},
+  {(bigint) parser___parser_prod___ANewExpr___n_id__eq},
   {(bigint) parser___parser_nodes___ANewExpr___n_args},
+  {(bigint) parser___parser_prod___ANewExpr___n_args__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ANewExpr::_parent */
-/* 3: Attribute ANewExpr::_location */
+/* 2: Attribute ANewExpr::_location */
+/* 3: Attribute ANewExpr::@parent */
 /* 4: Attribute ANewExpr::_first_location */
 /* 5: Attribute ANewExpr::_last_location */
 /* 6: Attribute ANewExpr::_n_annotations */
@@ -76112,7 +78336,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -76121,7 +78351,7 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:949 */
+  /* parser/parser_nodes.nit:1310 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -76178,13 +78408,13 @@ val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init(void){
   int init_table[7] = {0, 0, 0, 0, 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 = 7193;
   fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5667 */
+  /* parser/parser_prod.nit:7193 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANewExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[0]);
   parser___parser_prod___ANewExpr___empty_init(fra.me.REG[0], init_table);
@@ -76199,7 +78429,7 @@ val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5669;
+  fra.me.line = 7195;
   fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -76213,7 +78443,7 @@ val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:5669 */
+  /* parser/parser_prod.nit:7195 */
   fra.me.REG[4] = NEW_parser___parser_nodes___ANewExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[4]);
   parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -76228,13 +78458,13 @@ val_t NEW_ANewExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANewExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -76242,8 +78472,8 @@ val_t NEW_ANewExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
-  {(bigint) 4795 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[113] = {
+  {(bigint) 4799 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrExpr < Object: superclass typecheck marker */},
@@ -76251,7 +78481,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
   {(bigint) 3019 /* 5: AAttrExpr < Prod: superclass typecheck marker */},
   {(bigint) 4559 /* 6: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AAttrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 4795 /* 8: AAttrExpr < AAttrExpr: superclass typecheck marker */},
+  {(bigint) 4799 /* 8: AAttrExpr < AAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76261,16 +78491,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAttrExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -76278,8 +78498,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76287,6 +78506,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAttrExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -76300,31 +78530,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrExpr___visit_all},
-  {(bigint) 3 /* 63: AAttrExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAttrExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAttrExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAttrExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAttrExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAttrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AAttrExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAttrExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -76340,20 +78572,25 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 0 /* 100: AAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 105: AAttrExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_prod___AAttrExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser___parser_prod___AAttrExpr___n_id__eq},
   {(bigint) parser___parser_prod___AAttrExpr___empty_init},
   {(bigint) parser___parser_prod___AAttrExpr___init_aattrexpr},
-  {(bigint) 5 /* 105: AAttrExpr < AAttrExpr: superclass init_table position */},
+  {(bigint) 5 /* 112: AAttrExpr < AAttrExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAttrExpr::_parent */
-/* 3: Attribute AAttrExpr::_location */
+/* 2: Attribute AAttrExpr::_location */
+/* 3: Attribute AAttrExpr::@parent */
 /* 4: Attribute AAttrExpr::_first_location */
 /* 5: Attribute AAttrExpr::_last_location */
 /* 6: Attribute AAttrExpr::_n_annotations */
@@ -76386,7 +78623,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -76441,13 +78684,13 @@ val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5744;
+  fra.me.line = 7294;
   fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5744 */
+  /* parser/parser_prod.nit:7294 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
   parser___parser_prod___AAttrExpr___empty_init(fra.me.REG[0], init_table);
@@ -76462,7 +78705,7 @@ val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0,
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5746;
+  fra.me.line = 7296;
   fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -76472,7 +78715,7 @@ val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5746 */
+  /* parser/parser_prod.nit:7296 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AAttrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[2]);
   parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -76487,13 +78730,13 @@ val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -76501,8 +78744,8 @@ val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
-  {(bigint) 4799 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[110] = {
+  {(bigint) 4803 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrAssignExpr < Object: superclass typecheck marker */},
@@ -76511,7 +78754,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
   {(bigint) 4559 /* 6: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AAttrAssignExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4571 /* 8: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4799 /* 9: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
+  {(bigint) 4803 /* 9: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76520,16 +78763,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAttrAssignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -76537,8 +78770,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76546,6 +78778,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAttrAssignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -76559,31 +78802,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___visit_all},
-  {(bigint) 3 /* 63: AAttrAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAttrAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAttrAssignExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAttrAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAttrAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___empty_init},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr},
+  {(bigint) 6 /* 78: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AAttrAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AAttrAssignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAttrAssignExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -76591,25 +78836,30 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___empty_init},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr},
-  {(bigint) 6 /* 91: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
-  {(bigint) 5 /* 92: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 5 /* 95: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___n_assign__eq},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___n_value__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 0 /* 100: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 105: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___n_id__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAttrAssignExpr::_parent */
-/* 3: Attribute AAttrAssignExpr::_location */
+/* 2: Attribute AAttrAssignExpr::_location */
+/* 3: Attribute AAttrAssignExpr::@parent */
 /* 4: Attribute AAttrAssignExpr::_first_location */
 /* 5: Attribute AAttrAssignExpr::_last_location */
 /* 6: Attribute AAttrAssignExpr::_n_annotations */
@@ -76642,7 +78892,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -76707,13 +78963,13 @@ val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init(vo
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5789;
+  fra.me.line = 7351;
   fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5789 */
+  /* parser/parser_prod.nit:7351 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
   parser___parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[0], init_table);
@@ -76728,7 +78984,7 @@ val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrass
   int init_table[7] = {0, 0, 0, 0, 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 = 7353;
   fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -76742,7 +78998,7 @@ val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrass
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:5791 */
+  /* parser/parser_prod.nit:7353 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AAttrAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[4]);
   parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -76757,13 +79013,13 @@ val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -76771,8 +79027,8 @@ val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
-  {(bigint) 4791 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[110] = {
+  {(bigint) 4795 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrReassignExpr < Object: superclass typecheck marker */},
@@ -76781,7 +79037,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
   {(bigint) 4559 /* 6: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AAttrReassignExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4331 /* 8: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4791 /* 9: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
+  {(bigint) 4795 /* 9: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76790,16 +79046,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAttrReassignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -76807,8 +79053,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76816,6 +79061,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAttrReassignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -76829,31 +79085,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___visit_all},
-  {(bigint) 3 /* 63: AAttrReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAttrReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAttrReassignExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAttrReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAttrReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___empty_init},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
+  {(bigint) 6 /* 78: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AAttrReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AAttrReassignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAttrReassignExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -76861,25 +79119,30 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___empty_init},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
-  {(bigint) 6 /* 91: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 94: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 97: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___n_assign_op__eq},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___n_value__eq},
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 0 /* 100: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 105: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___n_id__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAttrReassignExpr::_parent */
-/* 3: Attribute AAttrReassignExpr::_location */
+/* 2: Attribute AAttrReassignExpr::_location */
+/* 3: Attribute AAttrReassignExpr::@parent */
 /* 4: Attribute AAttrReassignExpr::_first_location */
 /* 5: Attribute AAttrReassignExpr::_last_location */
 /* 6: Attribute AAttrReassignExpr::_n_annotations */
@@ -76912,7 +79175,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -76977,13 +79246,13 @@ val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_ini
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5862;
+  fra.me.line = 7446;
   fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5862 */
+  /* parser/parser_prod.nit:7446 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
   parser___parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[0], init_table);
@@ -76998,7 +79267,7 @@ val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aatt
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5864;
+  fra.me.line = 7448;
   fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -77012,7 +79281,7 @@ val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aatt
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:5864 */
+  /* parser/parser_prod.nit:7448 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AAttrReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[4]);
   parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -77027,13 +79296,13 @@ val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAttrReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -77041,8 +79310,8 @@ val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
-  {(bigint) 4951 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[134] = {
+  {(bigint) 4955 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallExpr < Object: superclass typecheck marker */},
@@ -77051,25 +79320,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
   {(bigint) 4595 /* 6: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ACallExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ACallExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ACallExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ACallExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ACallExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4879 /* 14: ACallExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 4951 /* 15: ACallExpr < ACallExpr: superclass typecheck marker */},
+  {(bigint) 4883 /* 14: ACallExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 4955 /* 15: ACallExpr < ACallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ACallExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -77077,8 +79336,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77086,6 +79344,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ACallExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -77099,31 +79368,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACallExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACallExpr___visit_all},
-  {(bigint) 7 /* 63: ACallExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ACallExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ACallExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACallExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ACallExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ACallExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ACallExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ACallExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ACallExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ACallExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -77139,17 +79410,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ACallExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ACallExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ACallExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ACallExpr___name},
@@ -77157,22 +79431,25 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ACallExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ACallExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ACallExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallExpr___variable_create},
-  {(bigint) 0 /* 120: ACallExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ACallExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser___parser_prod___ACallExpr___n_id__eq},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser___parser_prod___ACallExpr___n_args__eq},
   {(bigint) parser___parser_prod___ACallExpr___empty_init},
   {(bigint) parser___parser_prod___ACallExpr___init_acallexpr},
-  {(bigint) 9 /* 125: ACallExpr < ACallExpr: superclass init_table position */},
+  {(bigint) 9 /* 133: ACallExpr < ACallExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACallExpr::_parent */
-/* 3: Attribute ACallExpr::_location */
+/* 2: Attribute ACallExpr::_location */
+/* 3: Attribute ACallExpr::@parent */
 /* 4: Attribute ACallExpr::_first_location */
 /* 5: Attribute ACallExpr::_last_location */
 /* 6: Attribute ACallExpr::_n_annotations */
@@ -77207,7 +79484,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -77216,8 +79499,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -77278,13 +79562,13 @@ val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -77299,13 +79583,13 @@ val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5935;
+  fra.me.line = 7541;
   fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:5935 */
+  /* parser/parser_prod.nit:7541 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
   parser___parser_prod___ACallExpr___empty_init(fra.me.REG[0], init_table);
@@ -77320,7 +79604,7 @@ val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(val_t p0,
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5937;
+  fra.me.line = 7543;
   fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -77334,7 +79618,7 @@ val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(val_t p0,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:5937 */
+  /* parser/parser_prod.nit:7543 */
   fra.me.REG[4] = NEW_parser___parser_nodes___ACallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[4]);
   parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -77349,13 +79633,13 @@ val_t NEW_ACallExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -77370,7 +79654,7 @@ val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -77378,7 +79662,7 @@ val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ACallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -77386,8 +79670,8 @@ val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
-  {(bigint) 4955 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[131] = {
+  {(bigint) 4959 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallAssignExpr < Object: superclass typecheck marker */},
@@ -77396,25 +79680,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
   {(bigint) 4595 /* 6: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ACallAssignExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4571 /* 8: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4819 /* 9: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4955 /* 12: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4959 /* 12: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4879 /* 14: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 4883 /* 14: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ACallAssignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -77422,8 +79696,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77431,6 +79704,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ACallAssignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -77444,31 +79728,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACallAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACallAssignExpr___visit_all},
-  {(bigint) 7 /* 63: ACallAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ACallAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ACallAssignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACallAssignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ACallAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ACallAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ACallAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ACallAssignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -77478,23 +79764,26 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ACallAssignExpr___empty_init},
   {(bigint) parser___parser_prod___ACallAssignExpr___init_acallassignexpr},
-  {(bigint) 10 /* 91: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
-  {(bigint) 9 /* 92: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 93: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) 9 /* 95: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_prod___ACallAssignExpr___n_assign__eq},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {(bigint) parser___parser_prod___ACallAssignExpr___n_value__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ACallAssignExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ACallAssignExpr___name},
@@ -77502,19 +79791,22 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[123] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ACallAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ACallAssignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ACallAssignExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallAssignExpr___variable_create},
-  {(bigint) 0 /* 120: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 126: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser___parser_prod___ACallAssignExpr___n_id__eq},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser___parser_prod___ACallAssignExpr___n_args__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACallAssignExpr::_parent */
-/* 3: Attribute ACallAssignExpr::_location */
+/* 2: Attribute ACallAssignExpr::_location */
+/* 3: Attribute ACallAssignExpr::@parent */
 /* 4: Attribute ACallAssignExpr::_first_location */
 /* 5: Attribute ACallAssignExpr::_last_location */
 /* 6: Attribute ACallAssignExpr::_n_annotations */
@@ -77549,7 +79841,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -77558,8 +79856,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -77630,13 +79929,13 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -77651,13 +79950,13 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init(vo
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6015;
+  fra.me.line = 7638;
   fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6015 */
+  /* parser/parser_prod.nit:7638 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
   parser___parser_prod___ACallAssignExpr___empty_init(fra.me.REG[0], init_table);
@@ -77672,7 +79971,7 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallass
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6017;
+  fra.me.line = 7640;
   fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -77688,7 +79987,7 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallass
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:6017 */
+  /* parser/parser_prod.nit:7640 */
   fra.me.REG[5] = NEW_parser___parser_nodes___ACallAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[5]);
   parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -77703,13 +80002,13 @@ val_t NEW_ACallAssignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -77724,7 +80023,7 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -77732,7 +80031,7 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ACallAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -77740,8 +80039,8 @@ val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
-  {(bigint) 4947 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[134] = {
+  {(bigint) 4951 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallReassignExpr < Object: superclass typecheck marker */},
@@ -77750,25 +80049,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
   {(bigint) 4595 /* 6: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ACallReassignExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4331 /* 8: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4819 /* 9: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4867 /* 12: ACallReassignExpr < ASendReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4871 /* 13: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 4879 /* 14: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 4947 /* 15: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4871 /* 12: ACallReassignExpr < ASendReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4875 /* 13: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 4883 /* 14: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 4951 /* 15: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 9 /* 19: ACallReassignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -77776,8 +80065,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77785,6 +80073,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 9 /* 33: ACallReassignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -77798,31 +80097,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACallReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACallReassignExpr___visit_all},
-  {(bigint) 8 /* 63: ACallReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 8 /* 57: ACallReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ACallReassignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACallReassignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 7 /* 72: ACallReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 7 /* 71: ACallReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 11 /* 78: ACallReassignExpr < ASendReassignFormExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 81: ACallReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 83: ACallReassignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -77830,25 +80131,28 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 11 /* 89: ACallReassignExpr < ASendReassignFormExpr: superclass init_table position */},
-  {(bigint) 0 /* 90: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 91: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
   {(bigint) syntax___typing___ASendReassignExpr___read_prop},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 94: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 97: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_prod___ACallReassignExpr___n_assign_op__eq},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) parser___parser_prod___ACallReassignExpr___n_value__eq},
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ACallReassignExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ACallReassignExpr___name},
@@ -77856,22 +80160,25 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ACallReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ACallReassignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ACallReassignExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallReassignExpr___variable_create},
-  {(bigint) 10 /* 120: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 126: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser___parser_prod___ACallReassignExpr___n_id__eq},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser___parser_prod___ACallReassignExpr___n_args__eq},
   {(bigint) parser___parser_prod___ACallReassignExpr___empty_init},
   {(bigint) parser___parser_prod___ACallReassignExpr___init_acallreassignexpr},
-  {(bigint) 12 /* 125: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
+  {(bigint) 12 /* 133: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACallReassignExpr::_parent */
-/* 3: Attribute ACallReassignExpr::_location */
+/* 2: Attribute ACallReassignExpr::_location */
+/* 3: Attribute ACallReassignExpr::@parent */
 /* 4: Attribute ACallReassignExpr::_first_location */
 /* 5: Attribute ACallReassignExpr::_last_location */
 /* 6: Attribute ACallReassignExpr::_n_annotations */
@@ -77906,7 +80213,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -77915,8 +80228,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -77987,13 +80301,13 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -78008,13 +80322,13 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_ini
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6102;
+  fra.me.line = 7752;
   fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6102 */
+  /* parser/parser_prod.nit:7752 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
   parser___parser_prod___ACallReassignExpr___empty_init(fra.me.REG[0], init_table);
@@ -78029,7 +80343,7 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acal
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6104;
+  fra.me.line = 7754;
   fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -78045,7 +80359,7 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acal
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:6104 */
+  /* parser/parser_prod.nit:7754 */
   fra.me.REG[5] = NEW_parser___parser_nodes___ACallReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[5]);
   parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -78060,13 +80374,13 @@ val_t NEW_ACallReassignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -78081,7 +80395,7 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(va
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -78089,7 +80403,7 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(va
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ACallReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -78097,8 +80411,8 @@ val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
-  {(bigint) 4855 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[125] = {
+  {(bigint) 4859 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASuperExpr < Object: superclass typecheck marker */},
@@ -78107,25 +80421,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
   {(bigint) 4595 /* 6: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ASuperExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4855 /* 11: ASuperExpr < ASuperExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ASuperExpr < ASuperExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 6 /* 19: ASuperExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -78133,8 +80437,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78142,6 +80445,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 6 /* 33: ASuperExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -78155,31 +80469,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperExpr___visit_all},
-  {(bigint) 5 /* 63: ASuperExpr < ANode: superclass init_table position */},
+  {(bigint) 5 /* 57: ASuperExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASuperExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASuperExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 4 /* 72: ASuperExpr < Prod: superclass init_table position */},
+  {(bigint) 4 /* 71: ASuperExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 76: ASuperExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 77: ASuperExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 81: ASuperExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 83: ASuperExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASuperExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -78195,31 +80511,37 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ASuperExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 101: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 106: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 107: ASuperExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 112: ASuperExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASuperExpr___init_in_superclass},
   {(bigint) parser___parser_prod___ASuperExpr___empty_init},
   {(bigint) parser___parser_prod___ASuperExpr___init_asuperexpr},
-  {(bigint) 7 /* 113: ASuperExpr < ASuperExpr: superclass init_table position */},
+  {(bigint) 7 /* 118: ASuperExpr < ASuperExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperExpr___n_qualified},
+  {(bigint) parser___parser_prod___ASuperExpr___n_qualified__eq},
   {(bigint) parser___parser_nodes___ASuperExpr___n_kwsuper},
+  {(bigint) parser___parser_prod___ASuperExpr___n_kwsuper__eq},
   {(bigint) parser___parser_nodes___ASuperExpr___n_args},
+  {(bigint) parser___parser_prod___ASuperExpr___n_args__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASuperExpr::_parent */
-/* 3: Attribute ASuperExpr::_location */
+/* 2: Attribute ASuperExpr::_location */
+/* 3: Attribute ASuperExpr::@parent */
 /* 4: Attribute ASuperExpr::_first_location */
 /* 5: Attribute ASuperExpr::_last_location */
 /* 6: Attribute ASuperExpr::_n_annotations */
@@ -78254,7 +80576,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -78263,7 +80591,7 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:992 */
+  /* parser/parser_nodes.nit:1386 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -78315,13 +80643,13 @@ val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init(void){
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6189;
+  fra.me.line = 7866;
   fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6189 */
+  /* parser/parser_prod.nit:7866 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
   parser___parser_prod___ASuperExpr___empty_init(fra.me.REG[0], init_table);
@@ -78336,7 +80664,7 @@ val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6191;
+  fra.me.line = 7868;
   fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -78348,7 +80676,7 @@ val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6191 */
+  /* parser/parser_prod.nit:7868 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ASuperExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[3]);
   parser___parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -78363,13 +80691,13 @@ val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init(void){
   int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -78377,8 +80705,8 @@ val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
-  {(bigint) 4875 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[131] = {
+  {(bigint) 4879 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInitExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInitExpr < Object: superclass typecheck marker */},
@@ -78387,25 +80715,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
   {(bigint) 4595 /* 6: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AInitExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: AInitExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: AInitExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4875 /* 12: AInitExpr < AInitExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: AInitExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: AInitExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4879 /* 12: AInitExpr < AInitExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 7 /* 19: AInitExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -78413,8 +80731,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78422,6 +80739,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 7 /* 33: AInitExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -78435,31 +80763,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInitExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInitExpr___visit_all},
-  {(bigint) 6 /* 63: AInitExpr < ANode: superclass init_table position */},
+  {(bigint) 6 /* 57: AInitExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AInitExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInitExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 5 /* 72: AInitExpr < Prod: superclass init_table position */},
+  {(bigint) 5 /* 71: AInitExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 1 /* 76: AInitExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 1 /* 77: AInitExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 81: AInitExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 83: AInitExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -78475,17 +80805,20 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___AInitExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 3 /* 101: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 106: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 2 /* 107: AInitExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 112: AInitExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AInitExpr___name},
@@ -78493,19 +80826,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 0 /* 115: AInitExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 0 /* 120: AInitExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___AInitExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___AInitExpr___empty_init},
   {(bigint) parser___parser_prod___AInitExpr___init_ainitexpr},
-  {(bigint) 8 /* 120: AInitExpr < AInitExpr: superclass init_table position */},
+  {(bigint) 8 /* 126: AInitExpr < AInitExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitExpr___n_kwinit},
+  {(bigint) parser___parser_prod___AInitExpr___n_kwinit__eq},
   {(bigint) parser___parser_nodes___AInitExpr___n_args},
+  {(bigint) parser___parser_prod___AInitExpr___n_args__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AInitExpr::_parent */
-/* 3: Attribute AInitExpr::_location */
+/* 2: Attribute AInitExpr::_location */
+/* 3: Attribute AInitExpr::@parent */
 /* 4: Attribute AInitExpr::_first_location */
 /* 5: Attribute AInitExpr::_last_location */
 /* 6: Attribute AInitExpr::_n_annotations */
@@ -78540,7 +80876,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -78549,8 +80891,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -78611,13 +80954,13 @@ val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -78632,13 +80975,13 @@ val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init(void){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6252;
+  fra.me.line = 7948;
   fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6252 */
+  /* parser/parser_prod.nit:7948 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
   parser___parser_prod___AInitExpr___empty_init(fra.me.REG[0], init_table);
@@ -78653,7 +80996,7 @@ val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0,
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6254;
+  fra.me.line = 7950;
   fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -78665,7 +81008,7 @@ val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6254 */
+  /* parser/parser_prod.nit:7950 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AInitExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[3]);
   parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -78680,13 +81023,13 @@ val_t NEW_AInitExpr_parser___parser_nodes___ANode___init(void){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -78701,7 +81044,7 @@ val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -78709,7 +81052,7 @@ val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AInitExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -78717,8 +81060,8 @@ val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
-  {(bigint) 4963 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[130] = {
+  {(bigint) 4967 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraExpr < Object: superclass typecheck marker */},
@@ -78727,25 +81070,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
   {(bigint) 4595 /* 6: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ABraExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4819 /* 9: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ABraExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ABraExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ABraExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ABraExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4883 /* 14: ABraExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 4963 /* 15: ABraExpr < ABraExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 14: ABraExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 4967 /* 15: ABraExpr < ABraExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ABraExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -78753,8 +81086,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78762,6 +81094,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ABraExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -78775,31 +81118,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraExpr___visit_all},
-  {(bigint) 7 /* 63: ABraExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ABraExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABraExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ABraExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ABraExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ABraExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ABraExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ABraExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ABraExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -78815,17 +81160,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABraExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ABraExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ABraExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ABraExpr___name},
@@ -78833,19 +81181,21 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
   {(bigint) syntax___typing___ABraExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ABraExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ABraExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ABraExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 0 /* 118: ABraExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 124: ABraExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser___parser_prod___ABraExpr___n_args__eq},
   {(bigint) parser___parser_prod___ABraExpr___empty_init},
   {(bigint) parser___parser_prod___ABraExpr___init_abraexpr},
-  {(bigint) 9 /* 122: ABraExpr < ABraExpr: superclass init_table position */},
+  {(bigint) 9 /* 129: ABraExpr < ABraExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABraExpr::_parent */
-/* 3: Attribute ABraExpr::_location */
+/* 2: Attribute ABraExpr::_location */
+/* 3: Attribute ABraExpr::@parent */
 /* 4: Attribute ABraExpr::_first_location */
 /* 5: Attribute ABraExpr::_last_location */
 /* 6: Attribute ABraExpr::_n_annotations */
@@ -78879,7 +81229,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -78888,8 +81244,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -78945,13 +81302,13 @@ val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -78966,13 +81323,13 @@ val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6311;
+  fra.me.line = 8024;
   fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6311 */
+  /* parser/parser_prod.nit:8024 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
   parser___parser_prod___ABraExpr___empty_init(fra.me.REG[0], init_table);
@@ -78987,7 +81344,7 @@ val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6313;
+  fra.me.line = 8026;
   fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -78999,7 +81356,7 @@ val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6313 */
+  /* parser/parser_prod.nit:8026 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ABraExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[3]);
   parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -79014,13 +81371,13 @@ val_t NEW_ABraExpr_parser___parser_nodes___ANode___init(void){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -79035,7 +81392,7 @@ val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -79043,7 +81400,7 @@ val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ABraExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -79051,8 +81408,8 @@ val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
-  {(bigint) 4967 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[127] = {
+  {(bigint) 4971 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraAssignExpr < Object: superclass typecheck marker */},
@@ -79061,25 +81418,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
   {(bigint) 4595 /* 6: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ABraAssignExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4571 /* 8: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4819 /* 9: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4967 /* 12: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4971 /* 12: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4883 /* 14: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 14: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 8 /* 19: ABraAssignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -79087,8 +81434,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79096,6 +81442,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 8 /* 33: ABraAssignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -79109,31 +81466,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraAssignExpr___visit_all},
-  {(bigint) 7 /* 63: ABraAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 7 /* 57: ABraAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABraAssignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraAssignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 6 /* 72: ABraAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 6 /* 71: ABraAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 81: ABraAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 83: ABraAssignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -79143,23 +81502,26 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ABraAssignExpr___empty_init},
   {(bigint) parser___parser_prod___ABraAssignExpr___init_abraassignexpr},
-  {(bigint) 10 /* 91: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
-  {(bigint) 9 /* 92: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 93: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) 9 /* 95: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_prod___ABraAssignExpr___n_assign__eq},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {(bigint) parser___parser_prod___ABraAssignExpr___n_value__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABraAssignExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ABraAssignExpr___name},
@@ -79167,16 +81529,18 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ABraAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ABraAssignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ABraAssignExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 0 /* 118: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 124: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser___parser_prod___ABraAssignExpr___n_args__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABraAssignExpr::_parent */
-/* 3: Attribute ABraAssignExpr::_location */
+/* 2: Attribute ABraAssignExpr::_location */
+/* 3: Attribute ABraAssignExpr::@parent */
 /* 4: Attribute ABraAssignExpr::_first_location */
 /* 5: Attribute ABraAssignExpr::_last_location */
 /* 6: Attribute ABraAssignExpr::_n_annotations */
@@ -79210,7 +81574,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -79219,8 +81589,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -79286,13 +81657,13 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -79307,13 +81678,13 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init(void
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6377;
+  fra.me.line = 8102;
   fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6377 */
+  /* parser/parser_prod.nit:8102 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
   parser___parser_prod___ABraAssignExpr___empty_init(fra.me.REG[0], init_table);
@@ -79328,7 +81699,7 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassign
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6379;
+  fra.me.line = 8104;
   fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -79342,7 +81713,7 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassign
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6379 */
+  /* parser/parser_prod.nit:8104 */
   fra.me.REG[4] = NEW_parser___parser_nodes___ABraAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[4]);
   parser___parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -79357,13 +81728,13 @@ val_t NEW_ABraAssignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -79378,7 +81749,7 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t
   int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -79386,7 +81757,7 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ABraAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -79394,8 +81765,8 @@ val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
-  {(bigint) 4959 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[130] = {
+  {(bigint) 4963 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraReassignExpr < Object: superclass typecheck marker */},
@@ -79404,25 +81775,15 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
   {(bigint) 4595 /* 6: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: ABraReassignExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4331 /* 8: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4819 /* 9: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4831 /* 10: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4859 /* 11: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4867 /* 12: ABraReassignExpr < ASendReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4871 /* 13: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 4883 /* 14: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 4959 /* 15: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
+  {(bigint) 4823 /* 9: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4863 /* 11: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4871 /* 12: ABraReassignExpr < ASendReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4875 /* 13: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 14: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 4963 /* 15: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 9 /* 19: ABraReassignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -79430,8 +81791,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79439,6 +81799,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 9 /* 33: ABraReassignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -79452,31 +81823,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraReassignExpr___visit_all},
-  {(bigint) 8 /* 63: ABraReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 8 /* 57: ABraReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABraReassignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraReassignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 7 /* 72: ABraReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 7 /* 71: ABraReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 2 /* 76: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 2 /* 77: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 11 /* 78: ABraReassignExpr < ASendReassignFormExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 81: ABraReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 83: ABraReassignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -79484,25 +81857,28 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 11 /* 89: ABraReassignExpr < ASendReassignFormExpr: superclass init_table position */},
-  {(bigint) 0 /* 90: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 91: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
   {(bigint) syntax___typing___ASendReassignExpr___read_prop},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 94: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 97: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_prod___ABraReassignExpr___n_assign_op__eq},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) parser___parser_prod___ABraReassignExpr___n_value__eq},
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___ABraReassignExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 101: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 106: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AAbsSendExpr___do_typing},
   {(bigint) syntax___typing___AAbsSendExpr___get_property},
   {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 3 /* 107: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 112: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ABraReassignExpr___name},
@@ -79510,19 +81886,21 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 1 /* 115: ABraReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 1 /* 120: ABraReassignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_prod___ABraReassignExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 10 /* 118: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 124: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser___parser_prod___ABraReassignExpr___n_args__eq},
   {(bigint) parser___parser_prod___ABraReassignExpr___empty_init},
   {(bigint) parser___parser_prod___ABraReassignExpr___init_abrareassignexpr},
-  {(bigint) 12 /* 122: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
+  {(bigint) 12 /* 129: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABraReassignExpr::_parent */
-/* 3: Attribute ABraReassignExpr::_location */
+/* 2: Attribute ABraReassignExpr::_location */
+/* 3: Attribute ABraReassignExpr::@parent */
 /* 4: Attribute ABraReassignExpr::_first_location */
 /* 5: Attribute ABraReassignExpr::_last_location */
 /* 6: Attribute ABraReassignExpr::_n_annotations */
@@ -79556,7 +81934,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -79565,8 +81949,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:860 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1170 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -79632,13 +82017,13 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init(void){
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:4646 */
+  /* parser/parser_prod.nit:5901 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
   parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
@@ -79653,13 +82038,13 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init(
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 = 8197;
   fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6450 */
+  /* parser/parser_prod.nit:8197 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
   parser___parser_prod___ABraReassignExpr___empty_init(fra.me.REG[0], init_table);
@@ -79674,7 +82059,7 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrare
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6452;
+  fra.me.line = 8199;
   fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -79688,7 +82073,7 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrare
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6452 */
+  /* parser/parser_prod.nit:8199 */
   fra.me.REG[4] = NEW_parser___parser_nodes___ABraReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[4]);
   parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -79703,13 +82088,13 @@ val_t NEW_ABraReassignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -79724,7 +82109,7 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val
   int init_table[13] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -79732,7 +82117,7 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ABraReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
   parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -79740,8 +82125,8 @@ val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
-  {(bigint) 4779 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[118] = {
+  {(bigint) 4783 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureCallExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClosureCallExpr < Object: superclass typecheck marker */},
@@ -79749,7 +82134,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
   {(bigint) 3019 /* 5: AClosureCallExpr < Prod: superclass typecheck marker */},
   {(bigint) 4595 /* 6: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AClosureCallExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 4779 /* 8: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
+  {(bigint) 4783 /* 8: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79759,16 +82144,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AClosureCallExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -79776,8 +82151,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79785,6 +82159,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AClosureCallExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -79798,31 +82183,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AClosureCallExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AClosureCallExpr___visit_all},
-  {(bigint) 3 /* 63: AClosureCallExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AClosureCallExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AClosureCallExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AClosureCallExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AClosureCallExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AClosureCallExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AClosureCallExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AClosureCallExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AClosureCallExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AClosureCallExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -79838,25 +82225,30 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___AClosureCallExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 0 /* 101: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 0 /* 106: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
   {(bigint) syntax___typing___AClosureCallExpr___variable},
   {(bigint) parser___parser_prod___AClosureCallExpr___empty_init},
   {(bigint) parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr},
-  {(bigint) 5 /* 107: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
+  {(bigint) 5 /* 112: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClosureCallExpr___n_id},
+  {(bigint) parser___parser_prod___AClosureCallExpr___n_id__eq},
   {(bigint) parser___parser_nodes___AClosureCallExpr___n_args},
+  {(bigint) parser___parser_prod___AClosureCallExpr___n_args__eq},
   {(bigint) parser___parser_nodes___AClosureCallExpr___n_closure_defs},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AClosureCallExpr::_parent */
-/* 3: Attribute AClosureCallExpr::_location */
+/* 2: Attribute AClosureCallExpr::_location */
+/* 3: Attribute AClosureCallExpr::@parent */
 /* 4: Attribute AClosureCallExpr::_first_location */
 /* 5: Attribute AClosureCallExpr::_last_location */
 /* 6: Attribute AClosureCallExpr::_n_annotations */
@@ -79886,7 +82278,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -79895,8 +82293,9 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(val_t p0){
   /* syntax/typing.nit:1441 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1024 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1432 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -79952,7 +82351,7 @@ val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosu
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6525;
+  fra.me.line = 8294;
   fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -79964,7 +82363,7 @@ val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosu
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6525 */
+  /* parser/parser_prod.nit:8294 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AClosureCallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[3]);
   parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -79979,13 +82378,13 @@ val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init(
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6523;
+  fra.me.line = 8292;
   fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6523 */
+  /* parser/parser_prod.nit:8292 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AClosureCallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
   parser___parser_prod___AClosureCallExpr___empty_init(fra.me.REG[0], init_table);
@@ -80000,13 +82399,13 @@ val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AClosureCallExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -80014,7 +82413,7 @@ val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
+const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[98] = {
   {(bigint) 4647 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarExpr" /* 2: Class Name */},
@@ -80033,16 +82432,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AVarExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -80050,8 +82439,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80059,6 +82447,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AVarExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -80072,31 +82471,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVarExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVarExpr___visit_all},
-  {(bigint) 3 /* 63: AVarExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AVarExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AVarExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVarExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AVarExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AVarExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AVarExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AVarExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AVarExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AVarExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -80105,16 +82506,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 0 /* 90: AVarExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 92: AVarExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
+  {(bigint) parser___parser_prod___AVarExpr___n_id__eq},
   {(bigint) parser___parser_prod___AVarExpr___empty_init},
   {(bigint) parser___parser_prod___AVarExpr___init_avarexpr},
-  {(bigint) 5 /* 94: AVarExpr < AVarExpr: superclass init_table position */},
+  {(bigint) 5 /* 97: AVarExpr < AVarExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AVarExpr::_parent */
-/* 3: Attribute AVarExpr::_location */
+/* 2: Attribute AVarExpr::_location */
+/* 3: Attribute AVarExpr::@parent */
 /* 4: Attribute AVarExpr::_first_location */
 /* 5: Attribute AVarExpr::_last_location */
 /* 6: Attribute AVarExpr::_n_annotations */
@@ -80140,7 +82542,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -80190,7 +82598,7 @@ val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(val_t p0){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6591;
+  fra.me.line = 8372;
   fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -80198,7 +82606,7 @@ val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:6591 */
+  /* parser/parser_prod.nit:8372 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AVarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[1]);
   parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -80213,13 +82621,13 @@ val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6589;
+  fra.me.line = 8370;
   fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6589 */
+  /* parser/parser_prod.nit:8370 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[0]);
   parser___parser_prod___AVarExpr___empty_init(fra.me.REG[0], init_table);
@@ -80234,13 +82642,13 @@ val_t NEW_AVarExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVarExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -80248,7 +82656,7 @@ val_t NEW_AVarExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
+const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[100] = {
   {(bigint) 4651 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarAssignExpr" /* 2: Class Name */},
@@ -80267,16 +82675,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AVarAssignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -80284,8 +82682,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80293,6 +82690,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AVarAssignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -80306,31 +82714,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVarAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVarAssignExpr___visit_all},
-  {(bigint) 3 /* 63: AVarAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AVarAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AVarAssignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVarAssignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AVarAssignExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AVarAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AVarAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_prod___AVarAssignExpr___empty_init},
+  {(bigint) parser___parser_prod___AVarAssignExpr___init_avarassignexpr},
+  {(bigint) 6 /* 78: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AVarAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AVarAssignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AVarAssignExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -80339,19 +82749,19 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 0 /* 90: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 92: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
-  {(bigint) 5 /* 92: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVarAssignExpr___n_id__eq},
+  {(bigint) 5 /* 95: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_prod___AVarAssignExpr___n_assign__eq},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser___parser_prod___AVarAssignExpr___empty_init},
-  {(bigint) parser___parser_prod___AVarAssignExpr___init_avarassignexpr},
-  {(bigint) 6 /* 97: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVarAssignExpr___n_value__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AVarAssignExpr::_parent */
-/* 3: Attribute AVarAssignExpr::_location */
+/* 2: Attribute AVarAssignExpr::_location */
+/* 3: Attribute AVarAssignExpr::@parent */
 /* 4: Attribute AVarAssignExpr::_first_location */
 /* 5: Attribute AVarAssignExpr::_last_location */
 /* 6: Attribute AVarAssignExpr::_n_annotations */
@@ -80379,7 +82789,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -80439,7 +82855,7 @@ val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassign
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6622;
+  fra.me.line = 8410;
   fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -80451,7 +82867,7 @@ val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassign
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6622 */
+  /* parser/parser_prod.nit:8410 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AVarAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[3]);
   parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -80466,13 +82882,13 @@ val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init(void
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6620;
+  fra.me.line = 8408;
   fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6620 */
+  /* parser/parser_prod.nit:8408 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVarAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
   parser___parser_prod___AVarAssignExpr___empty_init(fra.me.REG[0], init_table);
@@ -80487,13 +82903,13 @@ val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVarAssignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -80501,7 +82917,7 @@ val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
+const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[102] = {
   {(bigint) 4643 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarReassignExpr" /* 2: Class Name */},
@@ -80520,16 +82936,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AVarReassignExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -80537,8 +82943,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80546,6 +82951,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AVarReassignExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -80559,31 +82975,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVarReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVarReassignExpr___visit_all},
-  {(bigint) 3 /* 63: AVarReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AVarReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AVarReassignExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVarReassignExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AVarReassignExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AVarReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AVarReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) parser___parser_prod___AVarReassignExpr___empty_init},
+  {(bigint) parser___parser_prod___AVarReassignExpr___init_avarreassignexpr},
+  {(bigint) 6 /* 78: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AVarReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AVarReassignExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AVarReassignExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -80592,21 +83010,21 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 0 /* 90: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 92: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
+  {(bigint) parser___parser_prod___AVarReassignExpr___n_id__eq},
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 94: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 97: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_prod___AVarReassignExpr___n_assign_op__eq},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser___parser_prod___AVarReassignExpr___empty_init},
-  {(bigint) parser___parser_prod___AVarReassignExpr___init_avarreassignexpr},
-  {(bigint) 6 /* 99: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVarReassignExpr___n_value__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AVarReassignExpr::_parent */
-/* 3: Attribute AVarReassignExpr::_location */
+/* 2: Attribute AVarReassignExpr::_location */
+/* 3: Attribute AVarReassignExpr::@parent */
 /* 4: Attribute AVarReassignExpr::_first_location */
 /* 5: Attribute AVarReassignExpr::_last_location */
 /* 6: Attribute AVarReassignExpr::_n_annotations */
@@ -80635,7 +83053,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -80695,7 +83119,7 @@ val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarre
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6681;
+  fra.me.line = 8486;
   fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -80707,7 +83131,7 @@ val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarre
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6681 */
+  /* parser/parser_prod.nit:8486 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AVarReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[3]);
   parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -80722,13 +83146,13 @@ val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init(
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6679;
+  fra.me.line = 8484;
   fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6679 */
+  /* parser/parser_prod.nit:8484 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVarReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
   parser___parser_prod___AVarReassignExpr___empty_init(fra.me.REG[0], init_table);
@@ -80743,13 +83167,13 @@ val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init(void){
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AVarReassignExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -80757,8 +83181,8 @@ val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
-  {(bigint) 4767 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[105] = {
+  {(bigint) 4771 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACrangeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACrangeExpr < Object: superclass typecheck marker */},
@@ -80767,7 +83191,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: ACrangeExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4339 /* 8: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 4767 /* 9: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
+  {(bigint) 4771 /* 9: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80776,16 +83200,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ACrangeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -80793,8 +83207,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80802,6 +83215,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ACrangeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -80815,31 +83239,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACrangeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACrangeExpr___visit_all},
-  {(bigint) 3 /* 63: ACrangeExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ACrangeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ACrangeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACrangeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ARangeExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ACrangeExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ACrangeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ACrangeExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: ACrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: ACrangeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ACrangeExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -80849,19 +83275,23 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ARangeExpr___empty_init},
   {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 0 /* 91: ACrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) 0 /* 93: ACrangeExpr < ARangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser___parser_prod___ACrangeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) parser___parser_prod___ACrangeExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___ACrangeExpr___empty_init},
   {(bigint) parser___parser_prod___ACrangeExpr___init_acrangeexpr},
-  {(bigint) 5 /* 96: ACrangeExpr < ACrangeExpr: superclass init_table position */},
+  {(bigint) 5 /* 100: ACrangeExpr < ACrangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACrangeExpr___n_obra},
+  {(bigint) parser___parser_prod___ACrangeExpr___n_obra__eq},
   {(bigint) parser___parser_nodes___ACrangeExpr___n_cbra},
+  {(bigint) parser___parser_prod___ACrangeExpr___n_cbra__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACrangeExpr::_parent */
-/* 3: Attribute ACrangeExpr::_location */
+/* 2: Attribute ACrangeExpr::_location */
+/* 3: Attribute ACrangeExpr::@parent */
 /* 4: Attribute ACrangeExpr::_first_location */
 /* 5: Attribute ACrangeExpr::_last_location */
 /* 6: Attribute ACrangeExpr::_n_annotations */
@@ -80889,7 +83319,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -80954,13 +83390,13 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6738;
+  fra.me.line = 8560;
   fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6738 */
+  /* parser/parser_prod.nit:8560 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
   parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
@@ -80975,13 +83411,13 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6801;
+  fra.me.line = 8642;
   fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6801 */
+  /* parser/parser_prod.nit:8642 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
   parser___parser_prod___ACrangeExpr___empty_init(fra.me.REG[0], init_table);
@@ -80996,7 +83432,7 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6803;
+  fra.me.line = 8644;
   fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -81012,7 +83448,7 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:6803 */
+  /* parser/parser_prod.nit:8644 */
   fra.me.REG[5] = NEW_parser___parser_nodes___ACrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[5]);
   parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -81027,13 +83463,13 @@ val_t NEW_ACrangeExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -81048,7 +83484,7 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6740;
+  fra.me.line = 8562;
   fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -81060,7 +83496,7 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6740 */
+  /* parser/parser_prod.nit:8562 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ACrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[3]);
   parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -81068,7 +83504,7 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
+const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[105] = {
   {(bigint) 4675 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOrangeExpr" /* 2: Class Name */},
@@ -81087,16 +83523,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AOrangeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -81104,8 +83530,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81113,6 +83538,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AOrangeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -81126,31 +83562,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOrangeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOrangeExpr___visit_all},
-  {(bigint) 3 /* 63: AOrangeExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AOrangeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AOrangeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOrangeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ARangeExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AOrangeExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AOrangeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AOrangeExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AOrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AOrangeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AOrangeExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -81160,19 +83598,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ARangeExpr___empty_init},
   {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 0 /* 91: AOrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) 0 /* 93: AOrangeExpr < ARangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser___parser_prod___AOrangeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) parser___parser_prod___AOrangeExpr___n_expr2__eq},
   {(bigint) parser___parser_prod___AOrangeExpr___empty_init},
   {(bigint) parser___parser_prod___AOrangeExpr___init_aorangeexpr},
-  {(bigint) 5 /* 96: AOrangeExpr < AOrangeExpr: superclass init_table position */},
+  {(bigint) 5 /* 100: AOrangeExpr < AOrangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOrangeExpr___n_obra},
+  {(bigint) parser___parser_prod___AOrangeExpr___n_obra__eq},
   {(bigint) parser___parser_nodes___AOrangeExpr___n_cbra},
+  {(bigint) parser___parser_prod___AOrangeExpr___n_cbra__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AOrangeExpr::_parent */
-/* 3: Attribute AOrangeExpr::_location */
+/* 2: Attribute AOrangeExpr::_location */
+/* 3: Attribute AOrangeExpr::@parent */
 /* 4: Attribute AOrangeExpr::_first_location */
 /* 5: Attribute AOrangeExpr::_last_location */
 /* 6: Attribute AOrangeExpr::_n_annotations */
@@ -81200,7 +83642,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -81265,13 +83713,13 @@ val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6738;
+  fra.me.line = 8560;
   fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6738 */
+  /* parser/parser_prod.nit:8560 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
   parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
@@ -81286,13 +83734,13 @@ val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6892;
+  fra.me.line = 8762;
   fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6892 */
+  /* parser/parser_prod.nit:8762 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
   parser___parser_prod___AOrangeExpr___empty_init(fra.me.REG[0], init_table);
@@ -81307,7 +83755,7 @@ val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6894;
+  fra.me.line = 8764;
   fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -81323,7 +83771,7 @@ val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:6894 */
+  /* parser/parser_prod.nit:8764 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AOrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[5]);
   parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -81338,13 +83786,13 @@ val_t NEW_AOrangeExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -81359,7 +83807,7 @@ val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6740;
+  fra.me.line = 8562;
   fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -81371,7 +83819,7 @@ val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6740 */
+  /* parser/parser_prod.nit:8562 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AOrangeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[3]);
   parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -81379,7 +83827,7 @@ val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[97] = {
   {(bigint) 4583 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AArrayExpr" /* 2: Class Name */},
@@ -81398,16 +83846,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AArrayExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -81415,8 +83853,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81424,6 +83861,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AArrayExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -81437,31 +83885,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AArrayExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AArrayExpr___visit_all},
-  {(bigint) 2 /* 63: AArrayExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AArrayExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AArrayExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AArrayExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AArrayExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AArrayExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AArrayExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AArrayExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AArrayExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AArrayExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AArrayExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -81472,13 +83922,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
   {(bigint) syntax___typing___AArrayExpr___do_typing},
   {(bigint) parser___parser_prod___AArrayExpr___empty_init},
   {(bigint) parser___parser_prod___AArrayExpr___init_aarrayexpr},
-  {(bigint) 4 /* 92: AArrayExpr < AArrayExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: AArrayExpr < AArrayExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AArrayExpr___n_exprs},
+  {(bigint) parser___parser_prod___AArrayExpr___n_exprs__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AArrayExpr::_parent */
-/* 3: Attribute AArrayExpr::_location */
+/* 2: Attribute AArrayExpr::_location */
+/* 3: Attribute AArrayExpr::@parent */
 /* 4: Attribute AArrayExpr::_first_location */
 /* 5: Attribute AArrayExpr::_last_location */
 /* 6: Attribute AArrayExpr::_n_annotations */
@@ -81503,7 +83954,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -81553,13 +84010,13 @@ val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init(void){
   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 = 6983;
+  fra.me.line = 8882;
   fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:6983 */
+  /* parser/parser_prod.nit:8882 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AArrayExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
   parser___parser_prod___AArrayExpr___empty_init(fra.me.REG[0], init_table);
@@ -81574,7 +84031,7 @@ val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p
   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 = 6985;
+  fra.me.line = 8884;
   fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -81584,7 +84041,7 @@ val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6985 */
+  /* parser/parser_prod.nit:8884 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AArrayExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[2]);
   parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -81599,13 +84056,13 @@ val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AArrayExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -81613,7 +84070,7 @@ val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[97] = {
   {(bigint) 4323 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASelfExpr" /* 2: Class Name */},
@@ -81632,16 +84089,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ASelfExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -81649,8 +84096,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81658,6 +84104,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ASelfExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -81671,31 +84128,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASelfExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASelfExpr___visit_all},
-  {(bigint) 2 /* 63: ASelfExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ASelfExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASelfExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASelfExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASelfExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ASelfExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ASelfExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ASelfExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: ASelfExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: ASelfExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASelfExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___ASelfExpr___is_self},
@@ -81706,13 +84165,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
   {(bigint) syntax___typing___ASelfExpr___variable},
   {(bigint) parser___parser_prod___ASelfExpr___empty_init},
   {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 92: ASelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: ASelfExpr < ASelfExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
+  {(bigint) parser___parser_prod___ASelfExpr___n_kwself__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASelfExpr::_parent */
-/* 3: Attribute ASelfExpr::_location */
+/* 2: Attribute ASelfExpr::_location */
+/* 3: Attribute ASelfExpr::@parent */
 /* 4: Attribute ASelfExpr::_first_location */
 /* 5: Attribute ASelfExpr::_last_location */
 /* 6: Attribute ASelfExpr::_n_annotations */
@@ -81738,7 +84198,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -81783,13 +84249,13 @@ val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init(void){
   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 = 7032;
+  fra.me.line = 8945;
   fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7032 */
+  /* parser/parser_prod.nit:8945 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
   parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
@@ -81804,7 +84270,7 @@ val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0,
   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 = 7034;
+  fra.me.line = 8947;
   fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -81814,7 +84280,7 @@ val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7034 */
+  /* parser/parser_prod.nit:8947 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ASelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[2]);
   parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -81829,13 +84295,13 @@ val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -81843,8 +84309,8 @@ val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
-  {(bigint) 4731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[100] = {
+  {(bigint) 4735 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AImplicitSelfExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AImplicitSelfExpr < Object: superclass typecheck marker */},
@@ -81853,7 +84319,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4323 /* 8: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
-  {(bigint) 4731 /* 9: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
+  {(bigint) 4735 /* 9: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81862,16 +84328,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AImplicitSelfExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -81879,8 +84335,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81888,6 +84343,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AImplicitSelfExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -81901,31 +84367,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AImplicitSelfExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AImplicitSelfExpr___visit_all},
-  {(bigint) 2 /* 63: AImplicitSelfExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AImplicitSelfExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AImplicitSelfExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AImplicitSelfExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASelfExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AImplicitSelfExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AImplicitSelfExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ASelfExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AImplicitSelfExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AImplicitSelfExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASelfExpr___generate_icode},
   {(bigint) syntax___typing___AImplicitSelfExpr___is_implicit_self},
   {(bigint) syntax___typing___ASelfExpr___is_self},
@@ -81936,16 +84404,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
   {(bigint) syntax___typing___ASelfExpr___variable},
   {(bigint) parser___parser_prod___ASelfExpr___empty_init},
   {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 92: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
+  {(bigint) parser___parser_prod___ASelfExpr___n_kwself__eq},
   {(bigint) parser___parser_prod___AImplicitSelfExpr___empty_init},
   {(bigint) parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr},
-  {(bigint) 5 /* 96: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
+  {(bigint) 5 /* 99: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AImplicitSelfExpr::_parent */
-/* 3: Attribute AImplicitSelfExpr::_location */
+/* 2: Attribute AImplicitSelfExpr::_location */
+/* 3: Attribute AImplicitSelfExpr::@parent */
 /* 4: Attribute AImplicitSelfExpr::_first_location */
 /* 5: Attribute AImplicitSelfExpr::_last_location */
 /* 6: Attribute AImplicitSelfExpr::_n_annotations */
@@ -81971,7 +84440,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -82016,13 +84491,13 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7032;
+  fra.me.line = 8945;
   fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7032 */
+  /* parser/parser_prod.nit:8945 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
   parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
@@ -82037,13 +84512,13 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_ini
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7081;
+  fra.me.line = 9008;
   fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7081 */
+  /* parser/parser_prod.nit:9008 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
   parser___parser_prod___AImplicitSelfExpr___empty_init(fra.me.REG[0], init_table);
@@ -82058,13 +84533,13 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimp
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7083;
+  fra.me.line = 9010;
   fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7083 */
+  /* parser/parser_prod.nit:9010 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
   parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(fra.me.REG[0], init_table);
@@ -82079,13 +84554,13 @@ val_t NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -82100,7 +84575,7 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(va
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7034;
+  fra.me.line = 8947;
   fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -82110,7 +84585,7 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(va
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7034 */
+  /* parser/parser_prod.nit:8947 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AImplicitSelfExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[2]);
   parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -82118,7 +84593,7 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[96] = {
   {(bigint) 4655 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATrueExpr" /* 2: Class Name */},
@@ -82137,16 +84612,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: ATrueExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -82154,8 +84619,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82163,6 +84627,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: ATrueExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -82176,31 +84651,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATrueExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATrueExpr___visit_all},
-  {(bigint) 3 /* 63: ATrueExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: ATrueExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ATrueExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATrueExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ATrueExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: ATrueExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ATrueExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: ATrueExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: ATrueExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: ATrueExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ATrueExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -82208,16 +84685,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: ATrueExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___ATrueExpr___empty_init},
   {(bigint) parser___parser_prod___ATrueExpr___init_atrueexpr},
-  {(bigint) 5 /* 92: ATrueExpr < ATrueExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: ATrueExpr < ATrueExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ATrueExpr___n_kwtrue},
+  {(bigint) parser___parser_prod___ATrueExpr___n_kwtrue__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ATrueExpr::_parent */
-/* 3: Attribute ATrueExpr::_location */
+/* 2: Attribute ATrueExpr::_location */
+/* 3: Attribute ATrueExpr::@parent */
 /* 4: Attribute ATrueExpr::_first_location */
 /* 5: Attribute ATrueExpr::_last_location */
 /* 6: Attribute ATrueExpr::_n_annotations */
@@ -82242,7 +84719,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -82292,13 +84775,13 @@ val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7097;
+  fra.me.line = 9026;
   fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7097 */
+  /* parser/parser_prod.nit:9026 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATrueExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
   parser___parser_prod___ATrueExpr___empty_init(fra.me.REG[0], init_table);
@@ -82313,7 +84796,7 @@ val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0,
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7099;
+  fra.me.line = 9028;
   fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -82323,7 +84806,7 @@ val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7099 */
+  /* parser/parser_prod.nit:9028 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ATrueExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[2]);
   parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -82338,13 +84821,13 @@ val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATrueExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -82352,8 +84835,8 @@ val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
-  {(bigint) 4743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[96] = {
+  {(bigint) 4747 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFalseExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AFalseExpr < Object: superclass typecheck marker */},
@@ -82362,7 +84845,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: AFalseExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4547 /* 8: AFalseExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4743 /* 9: AFalseExpr < AFalseExpr: superclass typecheck marker */},
+  {(bigint) 4747 /* 9: AFalseExpr < AFalseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82371,16 +84854,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AFalseExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -82388,8 +84861,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82397,6 +84869,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AFalseExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -82410,31 +84893,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFalseExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFalseExpr___visit_all},
-  {(bigint) 3 /* 63: AFalseExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AFalseExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AFalseExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFalseExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AFalseExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AFalseExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AFalseExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 78: AFalseExpr < ABoolExpr: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AFalseExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AFalseExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AFalseExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -82442,16 +84927,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AFalseExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AFalseExpr___empty_init},
   {(bigint) parser___parser_prod___AFalseExpr___init_afalseexpr},
-  {(bigint) 5 /* 92: AFalseExpr < AFalseExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: AFalseExpr < AFalseExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFalseExpr___n_kwfalse},
+  {(bigint) parser___parser_prod___AFalseExpr___n_kwfalse__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AFalseExpr::_parent */
-/* 3: Attribute AFalseExpr::_location */
+/* 2: Attribute AFalseExpr::_location */
+/* 3: Attribute AFalseExpr::@parent */
 /* 4: Attribute AFalseExpr::_first_location */
 /* 5: Attribute AFalseExpr::_last_location */
 /* 6: Attribute AFalseExpr::_n_annotations */
@@ -82476,7 +84961,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -82526,13 +85017,13 @@ val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7146;
+  fra.me.line = 9089;
   fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7146 */
+  /* parser/parser_prod.nit:9089 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFalseExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
   parser___parser_prod___AFalseExpr___empty_init(fra.me.REG[0], init_table);
@@ -82547,7 +85038,7 @@ val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7148;
+  fra.me.line = 9091;
   fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -82557,7 +85048,7 @@ val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7148 */
+  /* parser/parser_prod.nit:9091 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AFalseExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[2]);
   parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -82572,13 +85063,13 @@ val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFalseExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -82586,7 +85077,7 @@ val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
+const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[96] = {
   {(bigint) 4379 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANullExpr" /* 2: Class Name */},
@@ -82605,16 +85096,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ANullExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -82622,8 +85103,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82631,6 +85111,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ANullExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -82644,31 +85135,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANullExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANullExpr___visit_all},
-  {(bigint) 2 /* 63: ANullExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ANullExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ANullExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANullExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANullExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ANullExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ANullExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ANullExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: ANullExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: ANullExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ANullExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -82678,13 +85171,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ANullExpr___empty_init},
   {(bigint) parser___parser_prod___ANullExpr___init_anullexpr},
-  {(bigint) 4 /* 91: ANullExpr < ANullExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: ANullExpr < ANullExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANullExpr___n_kwnull},
+  {(bigint) parser___parser_prod___ANullExpr___n_kwnull__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ANullExpr::_parent */
-/* 3: Attribute ANullExpr::_location */
+/* 2: Attribute ANullExpr::_location */
+/* 3: Attribute ANullExpr::@parent */
 /* 4: Attribute ANullExpr::_first_location */
 /* 5: Attribute ANullExpr::_last_location */
 /* 6: Attribute ANullExpr::_n_annotations */
@@ -82709,7 +85203,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -82759,13 +85259,13 @@ val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init(void){
   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 = 7195;
+  fra.me.line = 9152;
   fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7195 */
+  /* parser/parser_prod.nit:9152 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANullExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[0]);
   parser___parser_prod___ANullExpr___empty_init(fra.me.REG[0], init_table);
@@ -82780,7 +85280,7 @@ val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(val_t p0,
   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 = 7197;
+  fra.me.line = 9154;
   fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -82790,7 +85290,7 @@ val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7197 */
+  /* parser/parser_prod.nit:9154 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ANullExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[2]);
   parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -82805,13 +85305,13 @@ val_t NEW_ANullExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ANullExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -82819,7 +85319,7 @@ val_t NEW_ANullExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
+const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[96] = {
   {(bigint) 4451 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIntExpr" /* 2: Class Name */},
@@ -82838,16 +85338,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AIntExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -82855,8 +85345,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82864,6 +85353,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AIntExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -82877,31 +85377,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIntExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIntExpr___visit_all},
-  {(bigint) 2 /* 63: AIntExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AIntExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIntExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIntExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AIntExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIntExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AIntExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AIntExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AIntExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AIntExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AIntExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AIntExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -82911,13 +85413,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AIntExpr___empty_init},
   {(bigint) parser___parser_prod___AIntExpr___init_aintexpr},
-  {(bigint) 4 /* 91: AIntExpr < AIntExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AIntExpr < AIntExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIntExpr___n_number},
+  {(bigint) parser___parser_prod___AIntExpr___n_number__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIntExpr::_parent */
-/* 3: Attribute AIntExpr::_location */
+/* 2: Attribute AIntExpr::_location */
+/* 3: Attribute AIntExpr::@parent */
 /* 4: Attribute AIntExpr::_first_location */
 /* 5: Attribute AIntExpr::_last_location */
 /* 6: Attribute AIntExpr::_n_annotations */
@@ -82942,7 +85445,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -82992,13 +85501,13 @@ val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init(void){
   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 = 7244;
+  fra.me.line = 9215;
   fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7244 */
+  /* parser/parser_prod.nit:9215 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIntExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[0]);
   parser___parser_prod___AIntExpr___empty_init(fra.me.REG[0], init_table);
@@ -83013,7 +85522,7 @@ val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val
   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 = 7246;
+  fra.me.line = 9217;
   fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -83023,7 +85532,7 @@ val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7246 */
+  /* parser/parser_prod.nit:9217 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AIntExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[2]);
   parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -83038,13 +85547,13 @@ val_t NEW_AIntExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIntExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -83052,7 +85561,7 @@ val_t NEW_AIntExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
+const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[96] = {
   {(bigint) 4483 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFloatExpr" /* 2: Class Name */},
@@ -83071,16 +85580,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AFloatExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -83088,8 +85587,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83097,6 +85595,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AFloatExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -83110,31 +85619,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFloatExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFloatExpr___visit_all},
-  {(bigint) 2 /* 63: AFloatExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AFloatExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AFloatExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFloatExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AFloatExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AFloatExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AFloatExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AFloatExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AFloatExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AFloatExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AFloatExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AFloatExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -83144,13 +85655,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AFloatExpr___empty_init},
   {(bigint) parser___parser_prod___AFloatExpr___init_afloatexpr},
-  {(bigint) 4 /* 91: AFloatExpr < AFloatExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AFloatExpr < AFloatExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFloatExpr___n_float},
+  {(bigint) parser___parser_prod___AFloatExpr___n_float__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AFloatExpr::_parent */
-/* 3: Attribute AFloatExpr::_location */
+/* 2: Attribute AFloatExpr::_location */
+/* 3: Attribute AFloatExpr::@parent */
 /* 4: Attribute AFloatExpr::_first_location */
 /* 5: Attribute AFloatExpr::_last_location */
 /* 6: Attribute AFloatExpr::_n_annotations */
@@ -83175,7 +85687,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -83225,13 +85743,13 @@ val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init(void){
   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 = 7293;
+  fra.me.line = 9278;
   fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7293 */
+  /* parser/parser_prod.nit:9278 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFloatExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
   parser___parser_prod___AFloatExpr___empty_init(fra.me.REG[0], init_table);
@@ -83246,7 +85764,7 @@ val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p
   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 = 7295;
+  fra.me.line = 9280;
   fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -83256,7 +85774,7 @@ val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7295 */
+  /* parser/parser_prod.nit:9280 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AFloatExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[2]);
   parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -83271,13 +85789,13 @@ val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AFloatExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -83285,7 +85803,7 @@ val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
+const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[96] = {
   {(bigint) 4523 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACharExpr" /* 2: Class Name */},
@@ -83304,16 +85822,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ACharExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -83321,8 +85829,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83330,6 +85837,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ACharExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -83343,31 +85861,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACharExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACharExpr___visit_all},
-  {(bigint) 2 /* 63: ACharExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ACharExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ACharExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACharExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACharExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ACharExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ACharExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ACharExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___ACharExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: ACharExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: ACharExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ACharExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -83377,13 +85897,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ACharExpr___empty_init},
   {(bigint) parser___parser_prod___ACharExpr___init_acharexpr},
-  {(bigint) 4 /* 91: ACharExpr < ACharExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: ACharExpr < ACharExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACharExpr___n_char},
+  {(bigint) parser___parser_prod___ACharExpr___n_char__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACharExpr::_parent */
-/* 3: Attribute ACharExpr::_location */
+/* 2: Attribute ACharExpr::_location */
+/* 3: Attribute ACharExpr::@parent */
 /* 4: Attribute ACharExpr::_first_location */
 /* 5: Attribute ACharExpr::_last_location */
 /* 6: Attribute ACharExpr::_n_annotations */
@@ -83408,7 +85929,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -83458,13 +85985,13 @@ val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init(void){
   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 = 7342;
+  fra.me.line = 9341;
   fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7342 */
+  /* parser/parser_prod.nit:9341 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACharExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[0]);
   parser___parser_prod___ACharExpr___empty_init(fra.me.REG[0], init_table);
@@ -83479,7 +86006,7 @@ val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(val_t p0,
   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 = 7344;
+  fra.me.line = 9343;
   fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -83489,7 +86016,7 @@ val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7344 */
+  /* parser/parser_prod.nit:9343 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ACharExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[2]);
   parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -83504,13 +86031,13 @@ val_t NEW_ACharExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ACharExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -83518,7 +86045,7 @@ val_t NEW_ACharExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[99] = {
   {(bigint) 4659 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStringExpr" /* 2: Class Name */},
@@ -83537,16 +86064,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AStringExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -83554,8 +86071,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83563,6 +86079,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AStringExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -83576,31 +86103,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStringExpr___visit_all},
-  {(bigint) 3 /* 63: AStringExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStringExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStringExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AStringExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AStringExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AStringExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AStringExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -83610,16 +86139,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___icode_generation___AStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 0 /* 91: AStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 93: AStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AStringExpr___n_string__eq},
   {(bigint) parser___parser_prod___AStringExpr___empty_init},
   {(bigint) parser___parser_prod___AStringExpr___init_astringexpr},
-  {(bigint) 5 /* 95: AStringExpr < AStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 98: AStringExpr < AStringExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStringExpr::_parent */
-/* 3: Attribute AStringExpr::_location */
+/* 2: Attribute AStringExpr::_location */
+/* 3: Attribute AStringExpr::@parent */
 /* 4: Attribute AStringExpr::_first_location */
 /* 5: Attribute AStringExpr::_last_location */
 /* 6: Attribute AStringExpr::_n_annotations */
@@ -83646,7 +86176,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -83696,13 +86232,13 @@ val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7391;
+  fra.me.line = 9404;
   fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7391 */
+  /* parser/parser_prod.nit:9404 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[0]);
   parser___parser_prod___AStringExpr___empty_init(fra.me.REG[0], init_table);
@@ -83717,7 +86253,7 @@ val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(val_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7393;
+  fra.me.line = 9406;
   fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -83727,7 +86263,7 @@ val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7393 */
+  /* parser/parser_prod.nit:9406 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[2]);
   parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -83742,13 +86278,13 @@ val_t NEW_AStringExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -83756,7 +86292,7 @@ val_t NEW_AStringExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[99] = {
   {(bigint) 4663 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStartStringExpr" /* 2: Class Name */},
@@ -83775,16 +86311,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AStartStringExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -83792,8 +86318,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83801,6 +86326,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AStartStringExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -83814,31 +86350,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStartStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStartStringExpr___visit_all},
-  {(bigint) 3 /* 63: AStartStringExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AStartStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AStartStringExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStartStringExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AStartStringExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AStartStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AStartStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AStartStringExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -83848,16 +86386,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___icode_generation___AStartStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 0 /* 91: AStartStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 93: AStartStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AStartStringExpr___n_string__eq},
   {(bigint) parser___parser_prod___AStartStringExpr___empty_init},
   {(bigint) parser___parser_prod___AStartStringExpr___init_astartstringexpr},
-  {(bigint) 5 /* 95: AStartStringExpr < AStartStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 98: AStartStringExpr < AStartStringExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AStartStringExpr::_parent */
-/* 3: Attribute AStartStringExpr::_location */
+/* 2: Attribute AStartStringExpr::_location */
+/* 3: Attribute AStartStringExpr::@parent */
 /* 4: Attribute AStartStringExpr::_first_location */
 /* 5: Attribute AStartStringExpr::_last_location */
 /* 6: Attribute AStartStringExpr::_n_annotations */
@@ -83884,7 +86423,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -83934,13 +86479,13 @@ val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init(
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7440;
+  fra.me.line = 9467;
   fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7440 */
+  /* parser/parser_prod.nit:9467 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStartStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
   parser___parser_prod___AStartStringExpr___empty_init(fra.me.REG[0], init_table);
@@ -83955,7 +86500,7 @@ val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astart
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7442;
+  fra.me.line = 9469;
   fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -83963,7 +86508,7 @@ val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astart
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:7442 */
+  /* parser/parser_prod.nit:9469 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AStartStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
   parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -83978,13 +86523,13 @@ val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AStartStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -83992,8 +86537,8 @@ val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
-  {(bigint) 4695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[99] = {
+  {(bigint) 4699 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMidStringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMidStringExpr < Object: superclass typecheck marker */},
@@ -84002,7 +86547,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: AMidStringExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4295 /* 8: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 4695 /* 9: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
+  {(bigint) 4699 /* 9: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84011,16 +86556,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AMidStringExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -84028,8 +86563,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84037,6 +86571,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AMidStringExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -84050,31 +86595,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMidStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMidStringExpr___visit_all},
-  {(bigint) 3 /* 63: AMidStringExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AMidStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AMidStringExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMidStringExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AMidStringExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AMidStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AMidStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AMidStringExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -84084,16 +86631,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___icode_generation___AMidStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 0 /* 91: AMidStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 93: AMidStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AMidStringExpr___n_string__eq},
   {(bigint) parser___parser_prod___AMidStringExpr___empty_init},
   {(bigint) parser___parser_prod___AMidStringExpr___init_amidstringexpr},
-  {(bigint) 5 /* 95: AMidStringExpr < AMidStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 98: AMidStringExpr < AMidStringExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AMidStringExpr::_parent */
-/* 3: Attribute AMidStringExpr::_location */
+/* 2: Attribute AMidStringExpr::_location */
+/* 3: Attribute AMidStringExpr::@parent */
 /* 4: Attribute AMidStringExpr::_first_location */
 /* 5: Attribute AMidStringExpr::_last_location */
 /* 6: Attribute AMidStringExpr::_n_annotations */
@@ -84120,7 +86668,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -84170,13 +86724,13 @@ val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init(void
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7471;
+  fra.me.line = 9505;
   fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7471 */
+  /* parser/parser_prod.nit:9505 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMidStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
   parser___parser_prod___AMidStringExpr___empty_init(fra.me.REG[0], init_table);
@@ -84191,7 +86745,7 @@ val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstring
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7473;
+  fra.me.line = 9507;
   fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -84199,7 +86753,7 @@ val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstring
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:7473 */
+  /* parser/parser_prod.nit:9507 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AMidStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
   parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -84214,13 +86768,13 @@ val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMidStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -84228,8 +86782,8 @@ val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
-  {(bigint) 4751 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[99] = {
+  {(bigint) 4755 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEndStringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEndStringExpr < Object: superclass typecheck marker */},
@@ -84238,7 +86792,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
   {0} /* Class Hole :( */,
   {(bigint) 3811 /* 7: AEndStringExpr < AExpr: superclass typecheck marker */},
   {(bigint) 4295 /* 8: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 4751 /* 9: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
+  {(bigint) 4755 /* 9: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84247,16 +86801,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AEndStringExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -84264,8 +86808,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84273,6 +86816,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AEndStringExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -84286,31 +86840,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEndStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEndStringExpr___visit_all},
-  {(bigint) 3 /* 63: AEndStringExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AEndStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AEndStringExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEndStringExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AEndStringExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AEndStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AEndStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AEndStringExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -84320,16 +86876,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) syntax___icode_generation___AEndStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 0 /* 91: AEndStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 93: AEndStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AEndStringExpr___n_string__eq},
   {(bigint) parser___parser_prod___AEndStringExpr___empty_init},
   {(bigint) parser___parser_prod___AEndStringExpr___init_aendstringexpr},
-  {(bigint) 5 /* 95: AEndStringExpr < AEndStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 98: AEndStringExpr < AEndStringExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AEndStringExpr::_parent */
-/* 3: Attribute AEndStringExpr::_location */
+/* 2: Attribute AEndStringExpr::_location */
+/* 3: Attribute AEndStringExpr::@parent */
 /* 4: Attribute AEndStringExpr::_first_location */
 /* 5: Attribute AEndStringExpr::_last_location */
 /* 6: Attribute AEndStringExpr::_n_annotations */
@@ -84356,7 +86913,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -84406,13 +86969,13 @@ val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init(void
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7502;
+  fra.me.line = 9543;
   fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7502 */
+  /* parser/parser_prod.nit:9543 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEndStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
   parser___parser_prod___AEndStringExpr___empty_init(fra.me.REG[0], init_table);
@@ -84427,7 +86990,7 @@ val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstring
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7504;
+  fra.me.line = 9545;
   fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -84435,7 +86998,7 @@ val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstring
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:7504 */
+  /* parser/parser_prod.nit:9545 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AEndStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
   parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -84450,13 +87013,13 @@ val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AEndStringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -84464,7 +87027,7 @@ val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[96] = {
   {(bigint) 4287 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperstringExpr" /* 2: Class Name */},
@@ -84483,16 +87046,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ASuperstringExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -84500,8 +87053,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84509,6 +87061,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ASuperstringExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -84522,31 +87085,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperstringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperstringExpr___visit_all},
-  {(bigint) 2 /* 63: ASuperstringExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ASuperstringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASuperstringExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperstringExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASuperstringExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ASuperstringExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ASuperstringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ASuperstringExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: ASuperstringExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: ASuperstringExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ASuperstringExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -84557,13 +87122,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
   {(bigint) syntax___typing___ASuperstringExpr___atype},
   {(bigint) parser___parser_prod___ASuperstringExpr___empty_init},
   {(bigint) parser___parser_prod___ASuperstringExpr___init_asuperstringexpr},
-  {(bigint) 4 /* 92: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperstringExpr___n_exprs},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASuperstringExpr::_parent */
-/* 3: Attribute ASuperstringExpr::_location */
+/* 2: Attribute ASuperstringExpr::_location */
+/* 3: Attribute ASuperstringExpr::@parent */
 /* 4: Attribute ASuperstringExpr::_first_location */
 /* 5: Attribute ASuperstringExpr::_last_location */
 /* 6: Attribute ASuperstringExpr::_n_annotations */
@@ -84589,14 +87154,21 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
   REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* parser/parser_nodes.nit:1105 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1553 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -84642,13 +87214,13 @@ val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init(
   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 = 7533;
+  fra.me.line = 9581;
   fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7533 */
+  /* parser/parser_prod.nit:9581 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperstringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
   parser___parser_prod___ASuperstringExpr___empty_init(fra.me.REG[0], init_table);
@@ -84663,7 +87235,7 @@ val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuper
   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 = 7535;
+  fra.me.line = 9583;
   fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -84673,7 +87245,7 @@ val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuper
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7535 */
+  /* parser/parser_prod.nit:9583 */
   fra.me.REG[2] = NEW_parser___parser_nodes___ASuperstringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[2]);
   parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -84688,13 +87260,13 @@ val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASuperstringExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -84702,7 +87274,7 @@ val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___AParExpr[101] = {
   {(bigint) 4671 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AParExpr" /* 2: Class Name */},
@@ -84721,16 +87293,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AParExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -84738,8 +87300,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84747,6 +87308,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AParExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -84760,31 +87332,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AParExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AParExpr___visit_all},
-  {(bigint) 3 /* 63: AParExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AParExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AParExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AParExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AProxyExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AParExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AParExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AParExpr___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AParExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AParExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AProxyExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AProxyExpr___is_self},
@@ -84792,18 +87366,21 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AParExpr___warn_parentheses},
-  {(bigint) 0 /* 89: AParExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) 0 /* 91: AParExpr < AProxyExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
+  {(bigint) parser___parser_prod___AParExpr___n_expr__eq},
   {(bigint) parser___parser_prod___AParExpr___empty_init},
   {(bigint) parser___parser_prod___AParExpr___init_aparexpr},
-  {(bigint) 5 /* 93: AParExpr < AParExpr: superclass init_table position */},
+  {(bigint) 5 /* 96: AParExpr < AParExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AParExpr___n_opar},
+  {(bigint) parser___parser_prod___AParExpr___n_opar__eq},
   {(bigint) parser___parser_nodes___AParExpr___n_cpar},
+  {(bigint) parser___parser_prod___AParExpr___n_cpar__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AParExpr::_parent */
-/* 3: Attribute AParExpr::_location */
+/* 2: Attribute AParExpr::_location */
+/* 3: Attribute AParExpr::@parent */
 /* 4: Attribute AParExpr::_first_location */
 /* 5: Attribute AParExpr::_last_location */
 /* 6: Attribute AParExpr::_n_annotations */
@@ -84830,7 +87407,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -84890,13 +87473,13 @@ val_t NEW_AParExpr_parser___parser_prod___AParExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7589;
+  fra.me.line = 9646;
   fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7589 */
+  /* parser/parser_prod.nit:9646 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[0]);
   parser___parser_prod___AParExpr___empty_init(fra.me.REG[0], init_table);
@@ -84911,7 +87494,7 @@ val_t NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7591;
+  fra.me.line = 9648;
   fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -84925,7 +87508,7 @@ val_t NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:7591 */
+  /* parser/parser_prod.nit:9648 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AParExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[4]);
   parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -84940,13 +87523,13 @@ val_t NEW_AParExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -84954,8 +87537,8 @@ val_t NEW_AParExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
-  {(bigint) 4811 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[104] = {
+  {(bigint) 4815 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsCastExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsCastExpr < Object: superclass typecheck marker */},
@@ -84963,7 +87546,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
   {(bigint) 3019 /* 5: AAsCastExpr < Prod: superclass typecheck marker */},
   {(bigint) 4275 /* 6: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AAsCastExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 4811 /* 8: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
+  {(bigint) 4815 /* 8: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84973,16 +87556,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AAsCastExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -84990,8 +87563,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84999,6 +87571,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AAsCastExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -85012,31 +87595,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsCastExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsCastExpr___visit_all},
-  {(bigint) 3 /* 63: AAsCastExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AAsCastExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAsCastExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAsCastExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAsCastExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AAsCastExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AAsCastExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
   {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
+  {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AAsCastExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AAsCastExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAsCastExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -85046,17 +87631,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AAsCastExpr___empty_init},
   {(bigint) parser___parser_prod___AAsCastExpr___init_aascastexpr},
-  {(bigint) 5 /* 91: AAsCastExpr < AAsCastExpr: superclass init_table position */},
+  {(bigint) 5 /* 93: AAsCastExpr < AAsCastExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_expr},
+  {(bigint) parser___parser_prod___AAsCastExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_kwas},
+  {(bigint) parser___parser_prod___AAsCastExpr___n_kwas__eq},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_opar},
+  {(bigint) parser___parser_prod___AAsCastExpr___n_opar__eq},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_type},
+  {(bigint) parser___parser_prod___AAsCastExpr___n_type__eq},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_cpar},
+  {(bigint) parser___parser_prod___AAsCastExpr___n_cpar__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAsCastExpr::_parent */
-/* 3: Attribute AAsCastExpr::_location */
+/* 2: Attribute AAsCastExpr::_location */
+/* 3: Attribute AAsCastExpr::@parent */
 /* 4: Attribute AAsCastExpr::_first_location */
 /* 5: Attribute AAsCastExpr::_last_location */
 /* 6: Attribute AAsCastExpr::_n_annotations */
@@ -85085,7 +87675,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -85155,13 +87751,13 @@ val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7666;
+  fra.me.line = 9747;
   fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7666 */
+  /* parser/parser_prod.nit:9747 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsCastExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
   parser___parser_prod___AAsCastExpr___empty_init(fra.me.REG[0], init_table);
@@ -85176,7 +87772,7 @@ val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(val_
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7668;
+  fra.me.line = 9749;
   fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -85192,7 +87788,7 @@ val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(val_
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:7668 */
+  /* parser/parser_prod.nit:9749 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AAsCastExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[5]);
   parser___parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -85207,13 +87803,13 @@ val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsCastExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -85221,7 +87817,7 @@ val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[106] = {
   {(bigint) 4579 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsNotnullExpr" /* 2: Class Name */},
@@ -85240,16 +87836,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAsNotnullExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -85257,8 +87843,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85266,6 +87851,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAsNotnullExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -85279,31 +87875,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsNotnullExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsNotnullExpr___visit_all},
-  {(bigint) 2 /* 63: AAsNotnullExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAsNotnullExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAsNotnullExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAsNotnullExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAsNotnullExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: AAsNotnullExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: AAsNotnullExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AAsNotnullExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -85313,18 +87911,24 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___AAsNotnullExpr___empty_init},
   {(bigint) parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr},
-  {(bigint) 4 /* 91: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_expr},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwas},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___n_kwas__eq},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_opar},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___n_opar__eq},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnot},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___n_kwnot__eq},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnull},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___n_kwnull__eq},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_cpar},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___n_cpar__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAsNotnullExpr::_parent */
-/* 3: Attribute AAsNotnullExpr::_location */
+/* 2: Attribute AAsNotnullExpr::_location */
+/* 3: Attribute AAsNotnullExpr::@parent */
 /* 4: Attribute AAsNotnullExpr::_first_location */
 /* 5: Attribute AAsNotnullExpr::_last_location */
 /* 6: Attribute AAsNotnullExpr::_n_annotations */
@@ -85354,7 +87958,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -85429,13 +88039,13 @@ val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init(void
   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 = 7753;
+  fra.me.line = 9861;
   fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7753 */
+  /* parser/parser_prod.nit:9861 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotnullExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
   parser___parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[0], init_table);
@@ -85450,7 +88060,7 @@ val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnull
   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 = 7755;
+  fra.me.line = 9863;
   fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -85468,7 +88078,7 @@ val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnull
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:7755 */
+  /* parser/parser_prod.nit:9863 */
   fra.me.REG[6] = NEW_parser___parser_nodes___AAsNotnullExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[6]);
   parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
@@ -85483,13 +88093,13 @@ val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotnullExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -85497,8 +88107,8 @@ val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
-  {(bigint) 4711 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[115] = {
+  {(bigint) 4715 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIssetAttrExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIssetAttrExpr < Object: superclass typecheck marker */},
@@ -85506,7 +88116,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
   {(bigint) 3019 /* 5: AIssetAttrExpr < Prod: superclass typecheck marker */},
   {(bigint) 4559 /* 6: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
   {(bigint) 3811 /* 7: AIssetAttrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 4711 /* 8: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
+  {(bigint) 4715 /* 8: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85516,16 +88126,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: AIssetAttrExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -85533,8 +88133,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85542,6 +88141,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: AIssetAttrExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -85555,31 +88165,33 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIssetAttrExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIssetAttrExpr___visit_all},
-  {(bigint) 3 /* 63: AIssetAttrExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 57: AIssetAttrExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AIssetAttrExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: AIssetAttrExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 71: AIssetAttrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 1 /* 81: AIssetAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) 1 /* 83: AIssetAttrExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AIssetAttrExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -85595,21 +88207,27 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 0 /* 100: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 105: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___n_id__eq},
   {(bigint) parser___parser_prod___AIssetAttrExpr___empty_init},
   {(bigint) parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr},
-  {(bigint) 5 /* 105: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
+  {(bigint) 5 /* 112: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIssetAttrExpr___n_kwisset},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___n_kwisset__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIssetAttrExpr::_parent */
-/* 3: Attribute AIssetAttrExpr::_location */
+/* 2: Attribute AIssetAttrExpr::_location */
+/* 3: Attribute AIssetAttrExpr::@parent */
 /* 4: Attribute AIssetAttrExpr::_first_location */
 /* 5: Attribute AIssetAttrExpr::_last_location */
 /* 6: Attribute AIssetAttrExpr::_n_annotations */
@@ -85643,7 +88261,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -85703,13 +88327,13 @@ val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init(void
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7854;
+  fra.me.line = 9994;
   fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7854 */
+  /* parser/parser_prod.nit:9994 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIssetAttrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
   parser___parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[0], init_table);
@@ -85724,7 +88348,7 @@ val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattr
   int init_table[6] = {0, 0, 0, 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 = 9996;
   fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -85736,7 +88360,7 @@ val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattr
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7856 */
+  /* parser/parser_prod.nit:9996 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AIssetAttrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[3]);
   parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -85751,13 +88375,13 @@ val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init(void){
   int init_table[6] = {0, 0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIssetAttrExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -85765,7 +88389,7 @@ val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
+const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[102] = {
   {(bigint) 4511 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADebugTypeExpr" /* 2: Class Name */},
@@ -85784,16 +88408,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ADebugTypeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -85801,8 +88415,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85810,6 +88423,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ADebugTypeExpr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -85823,31 +88447,33 @@ const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
   {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
   {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADebugTypeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADebugTypeExpr___visit_all},
-  {(bigint) 2 /* 63: ADebugTypeExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ADebugTypeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___visit_all},
   {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ADebugTypeExpr___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ADebugTypeExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ADebugTypeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 0 /* 81: ADebugTypeExpr < AExpr: superclass init_table position */},
+  {(bigint) 0 /* 83: ADebugTypeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___ADebugTypeExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -85857,16 +88483,20 @@ const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
   {(bigint) syntax___typing___AExpr___warn_parentheses},
   {(bigint) parser___parser_prod___ADebugTypeExpr___empty_init},
   {(bigint) parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr},
-  {(bigint) 4 /* 91: ADebugTypeExpr < ADebugTypeExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: ADebugTypeExpr < ADebugTypeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADebugTypeExpr___n_kwdebug},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___n_kwdebug__eq},
   {(bigint) parser___parser_nodes___ADebugTypeExpr___n_kwtype},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___n_kwtype__eq},
   {(bigint) parser___parser_nodes___ADebugTypeExpr___n_expr},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___n_expr__eq},
   {(bigint) parser___parser_nodes___ADebugTypeExpr___n_type},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___n_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ADebugTypeExpr::_parent */
-/* 3: Attribute ADebugTypeExpr::_location */
+/* 2: Attribute ADebugTypeExpr::_location */
+/* 3: Attribute ADebugTypeExpr::@parent */
 /* 4: Attribute ADebugTypeExpr::_first_location */
 /* 5: Attribute ADebugTypeExpr::_last_location */
 /* 6: Attribute ADebugTypeExpr::_n_annotations */
@@ -85894,7 +88524,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:365 */
@@ -85959,13 +88595,13 @@ val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init(void
   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 = 7913;
+  fra.me.line = 10070;
   fra.me.meth = LOCATE_NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7913 */
+  /* parser/parser_prod.nit:10070 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADebugTypeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(fra.me.REG[0]);
   parser___parser_prod___ADebugTypeExpr___empty_init(fra.me.REG[0], init_table);
@@ -85980,7 +88616,7 @@ val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtype
   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 = 7915;
+  fra.me.line = 10072;
   fra.me.meth = LOCATE_NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -85994,7 +88630,7 @@ val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtype
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:7915 */
+  /* parser/parser_prod.nit:10072 */
   fra.me.REG[4] = NEW_parser___parser_nodes___ADebugTypeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(fra.me.REG[4]);
   parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -86009,13 +88645,13 @@ val_t NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADebugTypeExpr();
   INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -86023,7 +88659,7 @@ val_t NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AListExprs[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AListExprs[82] = {
   {(bigint) 4415 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AListExprs" /* 2: Class Name */},
@@ -86042,16 +88678,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AListExprs[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AListExprs < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -86059,8 +88685,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AListExprs[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86068,6 +88693,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AListExprs[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AListExprs < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -86081,35 +88717,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AListExprs[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AListExprs___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AListExprs___visit_all},
-  {(bigint) 2 /* 63: AListExprs < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AListExprs < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AListExprs___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AListExprs___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AListExprs < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AListExprs < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___syntax_base___AExprs___to_a},
-  {(bigint) 0 /* 76: AListExprs < AExprs: superclass init_table position */},
+  {(bigint) 0 /* 77: AListExprs < AExprs: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExprs___n_exprs},
   {(bigint) parser___parser_prod___AListExprs___empty_init},
   {(bigint) parser___parser_prod___AListExprs___init_alistexprs},
-  {(bigint) 4 /* 80: AListExprs < AListExprs: superclass init_table position */},
+  {(bigint) 4 /* 81: AListExprs < AListExprs: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AListExprs::_parent */
-/* 3: Attribute AListExprs::_location */
+/* 2: Attribute AListExprs::_location */
+/* 3: Attribute AListExprs::@parent */
 /* 4: Attribute AListExprs::_first_location */
 /* 5: Attribute AListExprs::_last_location */
 /* 6: Attribute AListExprs::_n_annotations */
@@ -86128,11 +88765,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1139 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1599 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -86173,13 +88817,13 @@ val_t NEW_AListExprs_parser___parser_prod___AListExprs___empty_init(void){
   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 = 7986;
+  fra.me.line = 10165;
   fra.me.meth = LOCATE_NEW_AListExprs_parser___parser_prod___AListExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:7986 */
+  /* parser/parser_prod.nit:10165 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AListExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(fra.me.REG[0]);
   parser___parser_prod___AListExprs___empty_init(fra.me.REG[0], init_table);
@@ -86194,7 +88838,7 @@ val_t NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(val_t p
   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 = 7988;
+  fra.me.line = 10167;
   fra.me.meth = LOCATE_NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -86202,7 +88846,7 @@ val_t NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(val_t p
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:7988 */
+  /* parser/parser_prod.nit:10167 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AListExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(fra.me.REG[1]);
   parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -86217,13 +88861,13 @@ val_t NEW_AListExprs_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AListExprs_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AListExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -86231,7 +88875,7 @@ val_t NEW_AListExprs_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AParExprs[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___AParExprs[86] = {
   {(bigint) 4375 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AParExprs" /* 2: Class Name */},
@@ -86250,16 +88894,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExprs[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AParExprs < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -86267,8 +88901,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExprs[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86276,6 +88909,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExprs[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AParExprs < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -86289,37 +88933,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExprs[83] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AParExprs___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AParExprs___visit_all},
-  {(bigint) 2 /* 63: AParExprs < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AParExprs < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AParExprs___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AParExprs___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AParExprs___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AParExprs < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AParExprs < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___syntax_base___AExprs___to_a},
-  {(bigint) 0 /* 76: AParExprs < AExprs: superclass init_table position */},
+  {(bigint) 0 /* 77: AParExprs < AExprs: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExprs___n_exprs},
   {(bigint) parser___parser_prod___AParExprs___empty_init},
   {(bigint) parser___parser_prod___AParExprs___init_aparexprs},
-  {(bigint) 4 /* 80: AParExprs < AParExprs: superclass init_table position */},
+  {(bigint) 4 /* 81: AParExprs < AParExprs: superclass init_table position */},
   {(bigint) parser___parser_nodes___AParExprs___n_opar},
+  {(bigint) parser___parser_prod___AParExprs___n_opar__eq},
   {(bigint) parser___parser_nodes___AParExprs___n_cpar},
+  {(bigint) parser___parser_prod___AParExprs___n_cpar__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AParExprs::_parent */
-/* 3: Attribute AParExprs::_location */
+/* 2: Attribute AParExprs::_location */
+/* 3: Attribute AParExprs::@parent */
 /* 4: Attribute AParExprs::_first_location */
 /* 5: Attribute AParExprs::_last_location */
 /* 6: Attribute AParExprs::_n_annotations */
@@ -86340,11 +88987,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1139 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1599 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -86395,13 +89049,13 @@ val_t NEW_AParExprs_parser___parser_prod___AParExprs___empty_init(void){
   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 = 8024;
+  fra.me.line = 10205;
   fra.me.meth = LOCATE_NEW_AParExprs_parser___parser_prod___AParExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8024 */
+  /* parser/parser_prod.nit:10205 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(fra.me.REG[0]);
   parser___parser_prod___AParExprs___empty_init(fra.me.REG[0], init_table);
@@ -86416,7 +89070,7 @@ val_t NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(val_t p0,
   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 = 8026;
+  fra.me.line = 10207;
   fra.me.meth = LOCATE_NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -86428,7 +89082,7 @@ val_t NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8026 */
+  /* parser/parser_prod.nit:10207 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AParExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(fra.me.REG[3]);
   parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -86443,13 +89097,13 @@ val_t NEW_AParExprs_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AParExprs_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AParExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -86457,7 +89111,7 @@ val_t NEW_AParExprs_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[83] = {
+const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[86] = {
   {(bigint) 4543 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraExprs" /* 2: Class Name */},
@@ -86476,16 +89130,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ABraExprs < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -86493,8 +89137,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86502,6 +89145,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[83] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ABraExprs < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -86515,37 +89169,40 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[83] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraExprs___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraExprs___visit_all},
-  {(bigint) 2 /* 63: ABraExprs < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ABraExprs < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABraExprs___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraExprs___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ABraExprs < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ABraExprs < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___syntax_base___AExprs___to_a},
-  {(bigint) 0 /* 76: ABraExprs < AExprs: superclass init_table position */},
+  {(bigint) 0 /* 77: ABraExprs < AExprs: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExprs___n_exprs},
   {(bigint) parser___parser_prod___ABraExprs___empty_init},
   {(bigint) parser___parser_prod___ABraExprs___init_abraexprs},
-  {(bigint) 4 /* 80: ABraExprs < ABraExprs: superclass init_table position */},
+  {(bigint) 4 /* 81: ABraExprs < ABraExprs: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraExprs___n_obra},
+  {(bigint) parser___parser_prod___ABraExprs___n_obra__eq},
   {(bigint) parser___parser_nodes___ABraExprs___n_cbra},
+  {(bigint) parser___parser_prod___ABraExprs___n_cbra__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABraExprs::_parent */
-/* 3: Attribute ABraExprs::_location */
+/* 2: Attribute ABraExprs::_location */
+/* 3: Attribute ABraExprs::@parent */
 /* 4: Attribute ABraExprs::_first_location */
 /* 5: Attribute ABraExprs::_last_location */
 /* 6: Attribute ABraExprs::_n_annotations */
@@ -86566,11 +89223,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1139 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1599 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -86621,13 +89285,13 @@ val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___empty_init(void){
   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 = 8090;
+  fra.me.line = 10283;
   fra.me.meth = LOCATE_NEW_ABraExprs_parser___parser_prod___ABraExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8090 */
+  /* parser/parser_prod.nit:10283 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(fra.me.REG[0]);
   parser___parser_prod___ABraExprs___empty_init(fra.me.REG[0], init_table);
@@ -86642,7 +89306,7 @@ val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(val_t p0,
   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 = 8092;
+  fra.me.line = 10285;
   fra.me.meth = LOCATE_NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -86654,7 +89318,7 @@ val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8092 */
+  /* parser/parser_prod.nit:10285 */
   fra.me.REG[3] = NEW_parser___parser_nodes___ABraExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(fra.me.REG[3]);
   parser___parser_prod___ABraExprs___init_abraexprs(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -86669,13 +89333,13 @@ val_t NEW_ABraExprs_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABraExprs_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABraExprs();
   INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -86683,7 +89347,7 @@ val_t NEW_ABraExprs_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[83] = {
   {(bigint) 4367 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APlusAssignOp" /* 2: Class Name */},
@@ -86702,16 +89366,6 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: APlusAssignOp < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -86719,8 +89373,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86728,6 +89381,17 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: APlusAssignOp < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -86741,35 +89405,37 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APlusAssignOp___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APlusAssignOp___visit_all},
-  {(bigint) 2 /* 63: APlusAssignOp < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: APlusAssignOp < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___APlusAssignOp___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___APlusAssignOp___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: APlusAssignOp < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: APlusAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___APlusAssignOp___method_name},
-  {(bigint) 0 /* 76: APlusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) 0 /* 77: APlusAssignOp < AAssignOp: superclass init_table position */},
   {(bigint) parser___parser_prod___APlusAssignOp___empty_init},
   {(bigint) parser___parser_prod___APlusAssignOp___init_aplusassignop},
-  {(bigint) 4 /* 79: APlusAssignOp < APlusAssignOp: superclass init_table position */},
+  {(bigint) 4 /* 80: APlusAssignOp < APlusAssignOp: superclass init_table position */},
   {(bigint) parser___parser_nodes___APlusAssignOp___n_pluseq},
+  {(bigint) parser___parser_prod___APlusAssignOp___n_pluseq__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APlusAssignOp::_parent */
-/* 3: Attribute APlusAssignOp::_location */
+/* 2: Attribute APlusAssignOp::_location */
+/* 3: Attribute APlusAssignOp::@parent */
 /* 4: Attribute APlusAssignOp::_first_location */
 /* 5: Attribute APlusAssignOp::_last_location */
 /* 6: Attribute APlusAssignOp::_n_annotations */
@@ -86788,7 +89454,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -86830,13 +89502,13 @@ val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init(void){
   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 = 8156;
+  fra.me.line = 10361;
   fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8156 */
+  /* parser/parser_prod.nit:10361 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusAssignOp();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
   parser___parser_prod___APlusAssignOp___empty_init(fra.me.REG[0], init_table);
@@ -86851,7 +89523,7 @@ val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassigno
   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 = 8158;
+  fra.me.line = 10363;
   fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -86859,7 +89531,7 @@ val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassigno
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8158 */
+  /* parser/parser_prod.nit:10363 */
   fra.me.REG[1] = NEW_parser___parser_nodes___APlusAssignOp();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
   parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -86874,13 +89546,13 @@ val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___APlusAssignOp();
   INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -86888,7 +89560,7 @@ val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[83] = {
   {(bigint) 4395 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMinusAssignOp" /* 2: Class Name */},
@@ -86907,16 +89579,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AMinusAssignOp < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -86924,8 +89586,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86933,6 +89594,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AMinusAssignOp < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -86946,35 +89618,37 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMinusAssignOp___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMinusAssignOp___visit_all},
-  {(bigint) 2 /* 63: AMinusAssignOp < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AMinusAssignOp < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AMinusAssignOp___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMinusAssignOp___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AMinusAssignOp < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AMinusAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___AMinusAssignOp___method_name},
-  {(bigint) 0 /* 76: AMinusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) 0 /* 77: AMinusAssignOp < AAssignOp: superclass init_table position */},
   {(bigint) parser___parser_prod___AMinusAssignOp___empty_init},
   {(bigint) parser___parser_prod___AMinusAssignOp___init_aminusassignop},
-  {(bigint) 4 /* 79: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
+  {(bigint) 4 /* 80: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMinusAssignOp___n_minuseq},
+  {(bigint) parser___parser_prod___AMinusAssignOp___n_minuseq__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AMinusAssignOp::_parent */
-/* 3: Attribute AMinusAssignOp::_location */
+/* 2: Attribute AMinusAssignOp::_location */
+/* 3: Attribute AMinusAssignOp::@parent */
 /* 4: Attribute AMinusAssignOp::_first_location */
 /* 5: Attribute AMinusAssignOp::_last_location */
 /* 6: Attribute AMinusAssignOp::_n_annotations */
@@ -86993,7 +89667,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -87035,13 +89715,13 @@ val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init(void
   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 = 8187;
+  fra.me.line = 10399;
   fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8187 */
+  /* parser/parser_prod.nit:10399 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusAssignOp();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
   parser___parser_prod___AMinusAssignOp___empty_init(fra.me.REG[0], init_table);
@@ -87056,7 +89736,7 @@ val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassi
   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 = 8189;
+  fra.me.line = 10401;
   fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -87064,7 +89744,7 @@ val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassi
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8189 */
+  /* parser/parser_prod.nit:10401 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AMinusAssignOp();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
   parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -87079,13 +89759,13 @@ val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AMinusAssignOp();
   INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -87093,7 +89773,7 @@ val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
+const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[98] = {
   {(bigint) 4519 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureDef" /* 2: Class Name */},
@@ -87112,16 +89792,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AClosureDef < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -87129,8 +89799,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87138,6 +89807,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AClosureDef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -87151,26 +89831,28 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AClosureDef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AClosureDef___visit_all},
-  {(bigint) 2 /* 63: AClosureDef < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AClosureDef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AClosureDef___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AClosureDef___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AClosureDef___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___AClosureDef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AClosureDef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AClosureDef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AClosureDef < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AClosureDef < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) parser___parser_prod___AClosureDef___n_label__eq},
   {(bigint) syntax___icode_generation___AClosureDef___generate_iclosuredef},
   {(bigint) syntax___typing___AClosureDef___escapable},
   {(bigint) syntax___typing___ANode___accept_typing},
@@ -87180,17 +89862,21 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
   {(bigint) syntax___syntax_base___AClosureDef___variables__eq},
   {(bigint) parser___parser_prod___AClosureDef___empty_init},
   {(bigint) parser___parser_prod___AClosureDef___init_aclosuredef},
-  {(bigint) 4 /* 86: AClosureDef < AClosureDef: superclass init_table position */},
+  {(bigint) 4 /* 88: AClosureDef < AClosureDef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClosureDef___n_bang},
+  {(bigint) parser___parser_prod___AClosureDef___n_bang__eq},
   {(bigint) parser___parser_nodes___AClosureDef___n_id},
+  {(bigint) parser___parser_prod___AClosureDef___n_id__eq},
   {(bigint) parser___parser_nodes___AClosureDef___n_ids},
   {(bigint) parser___parser_nodes___AClosureDef___n_kwdo},
+  {(bigint) parser___parser_prod___AClosureDef___n_kwdo__eq},
   {(bigint) parser___parser_nodes___AClosureDef___n_expr},
+  {(bigint) parser___parser_prod___AClosureDef___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AClosureDef::_parent */
-/* 3: Attribute AClosureDef::_location */
+/* 2: Attribute AClosureDef::_location */
+/* 3: Attribute AClosureDef::@parent */
 /* 4: Attribute AClosureDef::_first_location */
 /* 5: Attribute AClosureDef::_last_location */
 /* 6: Attribute AClosureDef::_n_annotations */
@@ -87220,19 +89906,26 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1174 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1646 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1175 */
+  /* parser/parser_nodes.nit:1647 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1176 */
+  /* parser/parser_nodes.nit:1648 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:2004 */
@@ -87292,13 +89985,13 @@ val_t NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init(void){
   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 = 8218;
+  fra.me.line = 10437;
   fra.me.meth = LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8218 */
+  /* parser/parser_prod.nit:10437 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDef();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[0]);
   parser___parser_prod___AClosureDef___empty_init(fra.me.REG[0], init_table);
@@ -87313,7 +90006,7 @@ val_t NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(val_
   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 = 8220;
+  fra.me.line = 10439;
   fra.me.meth = LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -87331,7 +90024,7 @@ val_t NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(val_
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:8220 */
+  /* parser/parser_prod.nit:10439 */
   fra.me.REG[6] = NEW_parser___parser_nodes___AClosureDef();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[6]);
   parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
@@ -87346,13 +90039,13 @@ val_t NEW_AClosureDef_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AClosureDef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDef();
   INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -87360,7 +90053,7 @@ val_t NEW_AClosureDef_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[83] = {
   {(bigint) 4319 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASimpleClosureId" /* 2: Class Name */},
@@ -87379,16 +90072,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ASimpleClosureId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -87396,8 +90079,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87405,6 +90087,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ASimpleClosureId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -87418,35 +90111,37 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASimpleClosureId___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASimpleClosureId___visit_all},
-  {(bigint) 2 /* 63: ASimpleClosureId < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ASimpleClosureId < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ASimpleClosureId___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASimpleClosureId___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ASimpleClosureId < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ASimpleClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ASimpleClosureId___to_symbol},
-  {(bigint) 0 /* 76: ASimpleClosureId < AClosureId: superclass init_table position */},
+  {(bigint) 0 /* 77: ASimpleClosureId < AClosureId: superclass init_table position */},
   {(bigint) parser___parser_prod___ASimpleClosureId___empty_init},
   {(bigint) parser___parser_prod___ASimpleClosureId___init_asimpleclosureid},
-  {(bigint) 4 /* 79: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
+  {(bigint) 4 /* 80: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASimpleClosureId___n_id},
+  {(bigint) parser___parser_prod___ASimpleClosureId___n_id__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASimpleClosureId::_parent */
-/* 3: Attribute ASimpleClosureId::_location */
+/* 2: Attribute ASimpleClosureId::_location */
+/* 3: Attribute ASimpleClosureId::@parent */
 /* 4: Attribute ASimpleClosureId::_first_location */
 /* 5: Attribute ASimpleClosureId::_last_location */
 /* 6: Attribute ASimpleClosureId::_n_annotations */
@@ -87465,7 +90160,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -87507,13 +90208,13 @@ val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init(
   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 = 8338;
+  fra.me.line = 10590;
   fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8338 */
+  /* parser/parser_prod.nit:10590 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASimpleClosureId();
   INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
   parser___parser_prod___ASimpleClosureId___empty_init(fra.me.REG[0], init_table);
@@ -87528,7 +90229,7 @@ val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpl
   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 = 8340;
+  fra.me.line = 10592;
   fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -87536,7 +90237,7 @@ val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8340 */
+  /* parser/parser_prod.nit:10592 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ASimpleClosureId();
   INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
   parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -87551,13 +90252,13 @@ val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ASimpleClosureId();
   INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -87565,7 +90266,7 @@ val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[83] = {
   {(bigint) 4531 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABreakClosureId" /* 2: Class Name */},
@@ -87584,16 +90285,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ABreakClosureId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -87601,8 +90292,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87610,6 +90300,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ABreakClosureId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -87623,35 +90324,37 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABreakClosureId___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABreakClosureId___visit_all},
-  {(bigint) 2 /* 63: ABreakClosureId < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ABreakClosureId < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ABreakClosureId___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABreakClosureId___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ABreakClosureId < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ABreakClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___typing___ABreakClosureId___to_symbol},
-  {(bigint) 0 /* 76: ABreakClosureId < AClosureId: superclass init_table position */},
+  {(bigint) 0 /* 77: ABreakClosureId < AClosureId: superclass init_table position */},
   {(bigint) parser___parser_prod___ABreakClosureId___empty_init},
   {(bigint) parser___parser_prod___ABreakClosureId___init_abreakclosureid},
-  {(bigint) 4 /* 79: ABreakClosureId < ABreakClosureId: superclass init_table position */},
+  {(bigint) 4 /* 80: ABreakClosureId < ABreakClosureId: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABreakClosureId___n_kwbreak},
+  {(bigint) parser___parser_prod___ABreakClosureId___n_kwbreak__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ABreakClosureId::_parent */
-/* 3: Attribute ABreakClosureId::_location */
+/* 2: Attribute ABreakClosureId::_location */
+/* 3: Attribute ABreakClosureId::@parent */
 /* 4: Attribute ABreakClosureId::_first_location */
 /* 5: Attribute ABreakClosureId::_last_location */
 /* 6: Attribute ABreakClosureId::_n_annotations */
@@ -87670,7 +90373,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -87712,13 +90421,13 @@ val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init(vo
   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 = 8369;
+  fra.me.line = 10628;
   fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8369 */
+  /* parser/parser_prod.nit:10628 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABreakClosureId();
   INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
   parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[0], init_table);
@@ -87733,7 +90442,7 @@ val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakcl
   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 = 8371;
+  fra.me.line = 10630;
   fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -87741,7 +90450,7 @@ val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakcl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8371 */
+  /* parser/parser_prod.nit:10630 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ABreakClosureId();
   INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
   parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -87756,13 +90465,13 @@ val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ABreakClosureId();
   INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -87770,7 +90479,7 @@ val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModuleName[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AModuleName[84] = {
   {(bigint) 3763 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AModuleName" /* 2: Class Name */},
@@ -87789,16 +90498,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AModuleName < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -87806,8 +90505,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87815,6 +90513,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AModuleName < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -87828,35 +90537,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AModuleName___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AModuleName___visit_all},
-  {(bigint) 1 /* 63: AModuleName < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AModuleName < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AModuleName___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AModuleName___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AModuleName < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AModuleName < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AModuleName___empty_init},
   {(bigint) parser___parser_prod___AModuleName___init_amodulename},
-  {(bigint) 3 /* 77: AModuleName < AModuleName: superclass init_table position */},
+  {(bigint) 3 /* 78: AModuleName < AModuleName: superclass init_table position */},
   {(bigint) parser___parser_nodes___AModuleName___n_quad},
+  {(bigint) parser___parser_prod___AModuleName___n_quad__eq},
   {(bigint) parser___parser_nodes___AModuleName___n_path},
   {(bigint) parser___parser_nodes___AModuleName___n_id},
+  {(bigint) parser___parser_prod___AModuleName___n_id__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AModuleName::_parent */
-/* 3: Attribute AModuleName::_location */
+/* 2: Attribute AModuleName::_location */
+/* 3: Attribute AModuleName::@parent */
 /* 4: Attribute AModuleName::_first_location */
 /* 5: Attribute AModuleName::_last_location */
 /* 6: Attribute AModuleName::_n_annotations */
@@ -87877,14 +90589,21 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1192 */
+  /* parser/parser_nodes.nit:1664 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1193 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1665 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -87930,13 +90649,13 @@ val_t NEW_AModuleName_parser___parser_prod___AModuleName___empty_init(void){
   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 = 8400;
+  fra.me.line = 10666;
   fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8400 */
+  /* parser/parser_prod.nit:10666 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AModuleName();
   INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[0]);
   parser___parser_prod___AModuleName___empty_init(fra.me.REG[0], init_table);
@@ -87951,7 +90670,7 @@ val_t NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(val_
   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 = 8402;
+  fra.me.line = 10668;
   fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -87963,7 +90682,7 @@ val_t NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8402 */
+  /* parser/parser_prod.nit:10668 */
   fra.me.REG[3] = NEW_parser___parser_nodes___AModuleName();
   INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[3]);
   parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -87978,13 +90697,13 @@ val_t NEW_AModuleName_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AModuleName();
   INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -87992,7 +90711,7 @@ val_t NEW_AModuleName_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[83] = {
   {(bigint) 3783 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInLanguage" /* 2: Class Name */},
@@ -88011,16 +90730,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AInLanguage < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -88028,8 +90737,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88037,6 +90745,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AInLanguage < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -88050,34 +90769,37 @@ const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInLanguage___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInLanguage___visit_all},
-  {(bigint) 1 /* 63: AInLanguage < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AInLanguage < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AInLanguage___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInLanguage___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AInLanguage < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AInLanguage < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AInLanguage___empty_init},
   {(bigint) parser___parser_prod___AInLanguage___init_ainlanguage},
-  {(bigint) 3 /* 77: AInLanguage < AInLanguage: superclass init_table position */},
+  {(bigint) 3 /* 78: AInLanguage < AInLanguage: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInLanguage___n_kwin},
+  {(bigint) parser___parser_prod___AInLanguage___n_kwin__eq},
   {(bigint) parser___parser_nodes___AInLanguage___n_string},
+  {(bigint) parser___parser_prod___AInLanguage___n_string__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AInLanguage::_parent */
-/* 3: Attribute AInLanguage::_location */
+/* 2: Attribute AInLanguage::_location */
+/* 3: Attribute AInLanguage::@parent */
 /* 4: Attribute AInLanguage::_first_location */
 /* 5: Attribute AInLanguage::_last_location */
 /* 6: Attribute AInLanguage::_n_annotations */
@@ -88097,7 +90819,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -88144,13 +90872,13 @@ val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___empty_init(void){
   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 = 8885;
+  fra.me.line = 11270;
   fra.me.meth = LOCATE_NEW_AInLanguage_parser___parser_prod___AInLanguage___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8885 */
+  /* parser/parser_prod.nit:11270 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInLanguage();
   INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(fra.me.REG[0]);
   parser___parser_prod___AInLanguage___empty_init(fra.me.REG[0], init_table);
@@ -88165,7 +90893,7 @@ val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(val_
   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 = 8887;
+  fra.me.line = 11272;
   fra.me.meth = LOCATE_NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -88175,7 +90903,7 @@ val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8887 */
+  /* parser/parser_prod.nit:11272 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AInLanguage();
   INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(fra.me.REG[2]);
   parser___parser_prod___AInLanguage___init_ainlanguage(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -88190,13 +90918,13 @@ val_t NEW_AInLanguage_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AInLanguage_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AInLanguage();
   INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -88204,7 +90932,7 @@ val_t NEW_AInLanguage_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[84] = {
   {(bigint) 3795 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternCodeBlock" /* 2: Class Name */},
@@ -88223,16 +90951,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AExternCodeBlock < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -88240,8 +90958,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88249,6 +90966,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AExternCodeBlock < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -88262,35 +90990,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternCodeBlock___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternCodeBlock___visit_all},
-  {(bigint) 1 /* 63: AExternCodeBlock < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AExternCodeBlock < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AExternCodeBlock___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternCodeBlock___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternCodeBlock < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AExternCodeBlock < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) syntax___extern_inline___AExternCodeBlock___to_extern_code},
   {(bigint) parser___parser_prod___AExternCodeBlock___empty_init},
   {(bigint) parser___parser_prod___AExternCodeBlock___init_aexterncodeblock},
-  {(bigint) 3 /* 78: AExternCodeBlock < AExternCodeBlock: superclass init_table position */},
+  {(bigint) 3 /* 79: AExternCodeBlock < AExternCodeBlock: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternCodeBlock___n_in_language},
+  {(bigint) parser___parser_prod___AExternCodeBlock___n_in_language__eq},
   {(bigint) parser___parser_nodes___AExternCodeBlock___n_extern_code_segment},
+  {(bigint) parser___parser_prod___AExternCodeBlock___n_extern_code_segment__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternCodeBlock::_parent */
-/* 3: Attribute AExternCodeBlock::_location */
+/* 2: Attribute AExternCodeBlock::_location */
+/* 3: Attribute AExternCodeBlock::@parent */
 /* 4: Attribute AExternCodeBlock::_first_location */
 /* 5: Attribute AExternCodeBlock::_last_location */
 /* 6: Attribute AExternCodeBlock::_n_annotations */
@@ -88310,10 +91041,16 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1203 */
+  /* parser/parser_nodes.nit:1675 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -88355,13 +91092,13 @@ val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___empty_init(
   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 = 8930;
+  fra.me.line = 11327;
   fra.me.meth = LOCATE_NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8930 */
+  /* parser/parser_prod.nit:11327 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternCodeBlock();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(fra.me.REG[0]);
   parser___parser_prod___AExternCodeBlock___empty_init(fra.me.REG[0], init_table);
@@ -88376,7 +91113,7 @@ val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexter
   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 = 8932;
+  fra.me.line = 11329;
   fra.me.meth = LOCATE_NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -88386,7 +91123,7 @@ val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexter
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8932 */
+  /* parser/parser_prod.nit:11329 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AExternCodeBlock();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(fra.me.REG[2]);
   parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -88401,13 +91138,13 @@ val_t NEW_AExternCodeBlock_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AExternCodeBlock_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExternCodeBlock();
   INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -88415,7 +91152,7 @@ val_t NEW_AExternCodeBlock_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AQualified[81] = {
+const classtable_elt_t VFT_parser___parser_nodes___AQualified[84] = {
   {(bigint) 3747 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AQualified" /* 2: Class Name */},
@@ -88434,16 +91171,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AQualified < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -88451,8 +91178,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88460,6 +91186,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[81] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AQualified < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -88473,35 +91210,38 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[81] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AQualified___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AQualified___visit_all},
-  {(bigint) 1 /* 63: AQualified < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AQualified < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AQualified___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AQualified___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AQualified < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AQualified < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AQualified___empty_init},
   {(bigint) parser___parser_prod___AQualified___init_aqualified},
-  {(bigint) 3 /* 77: AQualified < AQualified: superclass init_table position */},
+  {(bigint) 3 /* 78: AQualified < AQualified: superclass init_table position */},
   {(bigint) parser___parser_nodes___AQualified___n_quad},
+  {(bigint) parser___parser_nodes___AQualified___n_quad__eq},
   {(bigint) parser___parser_nodes___AQualified___n_id},
   {(bigint) parser___parser_nodes___AQualified___n_classid},
+  {(bigint) parser___parser_prod___AQualified___n_classid__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AQualified::_parent */
-/* 3: Attribute AQualified::_location */
+/* 2: Attribute AQualified::_location */
+/* 3: Attribute AQualified::@parent */
 /* 4: Attribute AQualified::_first_location */
 /* 5: Attribute AQualified::_last_location */
 /* 6: Attribute AQualified::_n_annotations */
@@ -88522,16 +91262,23 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AQualified(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1208 */
+  /* parser/parser_nodes.nit:1680 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AQualified____n_quad(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1209 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1681 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1210 */
+  /* parser/parser_nodes.nit:1682 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -88573,13 +91320,13 @@ val_t NEW_AQualified_parser___parser_prod___AQualified___empty_init(void){
   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 = 8979;
+  fra.me.line = 11390;
   fra.me.meth = LOCATE_NEW_AQualified_parser___parser_prod___AQualified___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:8979 */
+  /* parser/parser_prod.nit:11390 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AQualified();
   INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[0]);
   parser___parser_prod___AQualified___empty_init(fra.me.REG[0], init_table);
@@ -88594,7 +91341,7 @@ val_t NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(val_t p
   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 = 8981;
+  fra.me.line = 11392;
   fra.me.meth = LOCATE_NEW_AQualified_parser___parser_prod___AQualified___init_aqualified;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -88604,7 +91351,7 @@ val_t NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8981 */
+  /* parser/parser_prod.nit:11392 */
   fra.me.REG[2] = NEW_parser___parser_nodes___AQualified();
   INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[2]);
   parser___parser_prod___AQualified___init_aqualified(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -88619,13 +91366,13 @@ val_t NEW_AQualified_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AQualified_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AQualified();
   INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -88633,7 +91380,7 @@ val_t NEW_AQualified_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADoc[79] = {
+const classtable_elt_t VFT_parser___parser_nodes___ADoc[80] = {
   {(bigint) 3815 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADoc" /* 2: Class Name */},
@@ -88652,16 +91399,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ADoc < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -88669,8 +91406,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88678,6 +91414,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ADoc < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -88691,33 +91438,34 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADoc___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADoc___visit_all},
-  {(bigint) 1 /* 63: ADoc < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: ADoc < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ADoc___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ADoc___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ADoc < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: ADoc < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___ADoc___empty_init},
   {(bigint) parser___parser_prod___ADoc___init_adoc},
-  {(bigint) 3 /* 77: ADoc < ADoc: superclass init_table position */},
+  {(bigint) 3 /* 78: ADoc < ADoc: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADoc___n_comment},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ADoc::_parent */
-/* 3: Attribute ADoc::_location */
+/* 2: Attribute ADoc::_location */
+/* 3: Attribute ADoc::@parent */
 /* 4: Attribute ADoc::_first_location */
 /* 5: Attribute ADoc::_last_location */
 /* 6: Attribute ADoc::_n_annotations */
@@ -88736,11 +91484,18 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ADoc(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1214 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1689 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -88781,13 +91536,13 @@ val_t NEW_ADoc_parser___parser_prod___ADoc___empty_init(void){
   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 = 9035;
+  fra.me.line = 11455;
   fra.me.meth = LOCATE_NEW_ADoc_parser___parser_prod___ADoc___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9035 */
+  /* parser/parser_prod.nit:11455 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADoc();
   INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[0]);
   parser___parser_prod___ADoc___empty_init(fra.me.REG[0], init_table);
@@ -88802,7 +91557,7 @@ val_t NEW_ADoc_parser___parser_prod___ADoc___init_adoc(val_t p0){
   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 = 9037;
+  fra.me.line = 11457;
   fra.me.meth = LOCATE_NEW_ADoc_parser___parser_prod___ADoc___init_adoc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -88810,7 +91565,7 @@ val_t NEW_ADoc_parser___parser_prod___ADoc___init_adoc(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9037 */
+  /* parser/parser_prod.nit:11457 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ADoc();
   INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[1]);
   parser___parser_prod___ADoc___init_adoc(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -88825,13 +91580,13 @@ val_t NEW_ADoc_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ADoc_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ADoc();
   INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -88839,7 +91594,7 @@ val_t NEW_ADoc_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[86] = {
   {(bigint) 3847 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAnnotations" /* 2: Class Name */},
@@ -88858,16 +91613,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AAnnotations < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -88875,8 +91620,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88884,6 +91628,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AAnnotations < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -88897,36 +91652,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[82] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAnnotations___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) abstracttool___AAnnotations___visit_all},
-  {(bigint) 1 /* 63: AAnnotations < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AAnnotations < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAnnotations___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) abstracttool___AAnnotations___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAnnotations < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AAnnotations < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AAnnotations___empty_init},
   {(bigint) parser___parser_prod___AAnnotations___init_aannotations},
-  {(bigint) 3 /* 77: AAnnotations < AAnnotations: superclass init_table position */},
+  {(bigint) 3 /* 78: AAnnotations < AAnnotations: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAnnotations___n_at},
+  {(bigint) parser___parser_prod___AAnnotations___n_at__eq},
   {(bigint) parser___parser_nodes___AAnnotations___n_opar},
+  {(bigint) parser___parser_prod___AAnnotations___n_opar__eq},
   {(bigint) parser___parser_nodes___AAnnotations___n_items},
   {(bigint) parser___parser_nodes___AAnnotations___n_cpar},
+  {(bigint) parser___parser_prod___AAnnotations___n_cpar__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAnnotations::_parent */
-/* 3: Attribute AAnnotations::_location */
+/* 2: Attribute AAnnotations::_location */
+/* 3: Attribute AAnnotations::@parent */
 /* 4: Attribute AAnnotations::_first_location */
 /* 5: Attribute AAnnotations::_last_location */
 /* 6: Attribute AAnnotations::_n_annotations */
@@ -88948,19 +91707,26 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1219 */
+  /* parser/parser_nodes.nit:1694 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1220 */
+  /* parser/parser_nodes.nit:1695 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1221 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1696 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1222 */
+  /* parser/parser_nodes.nit:1697 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -89002,13 +91768,13 @@ val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init(void){
   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 = 9073;
+  fra.me.line = 11495;
   fra.me.meth = LOCATE_NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9073 */
+  /* parser/parser_prod.nit:11495 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotations();
   INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(fra.me.REG[0]);
   parser___parser_prod___AAnnotations___empty_init(fra.me.REG[0], init_table);
@@ -89023,7 +91789,7 @@ val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(v
   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 = 9075;
+  fra.me.line = 11497;
   fra.me.meth = LOCATE_NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -89037,7 +91803,7 @@ val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:9075 */
+  /* parser/parser_prod.nit:11497 */
   fra.me.REG[4] = NEW_parser___parser_nodes___AAnnotations();
   INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(fra.me.REG[4]);
   parser___parser_prod___AAnnotations___init_aannotations(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
@@ -89052,13 +91818,13 @@ val_t NEW_AAnnotations_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAnnotations_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotations();
   INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -89066,7 +91832,7 @@ val_t NEW_AAnnotations_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[82] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[86] = {
   {(bigint) 3851 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAnnotation" /* 2: Class Name */},
@@ -89085,16 +91851,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: AAnnotation < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -89102,8 +91858,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89111,6 +91866,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[82] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: AAnnotation < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -89124,36 +91890,40 @@ const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[82] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAnnotation___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAnnotation___visit_all},
-  {(bigint) 1 /* 63: AAnnotation < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: AAnnotation < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAnnotation___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAnnotation___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAnnotation < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: AAnnotation < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AAnnotation___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
   {(bigint) parser___parser_prod___AAnnotation___empty_init},
   {(bigint) parser___parser_prod___AAnnotation___init_aannotation},
-  {(bigint) 3 /* 77: AAnnotation < AAnnotation: superclass init_table position */},
+  {(bigint) 3 /* 78: AAnnotation < AAnnotation: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAnnotation___n_atid},
+  {(bigint) parser___parser_prod___AAnnotation___n_atid__eq},
   {(bigint) parser___parser_nodes___AAnnotation___n_opar},
+  {(bigint) parser___parser_prod___AAnnotation___n_opar__eq},
   {(bigint) parser___parser_nodes___AAnnotation___n_args},
   {(bigint) parser___parser_nodes___AAnnotation___n_cpar},
+  {(bigint) parser___parser_prod___AAnnotation___n_cpar__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAnnotation::_parent */
-/* 3: Attribute AAnnotation::_location */
+/* 2: Attribute AAnnotation::_location */
+/* 3: Attribute AAnnotation::@parent */
 /* 4: Attribute AAnnotation::_first_location */
 /* 5: Attribute AAnnotation::_last_location */
 /* 6: Attribute AAnnotation::_n_annotations */
@@ -89175,16 +91945,23 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1227 */
+  /* parser/parser_nodes.nit:1702 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1228 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  /* parser/parser_nodes.nit:1703 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ANodes_parser___parser_nodes___ANodes___init(fra.me.REG[1]);
   ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1229 */
+  /* parser/parser_nodes.nit:1704 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -89231,13 +92008,13 @@ val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init(void){
   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 = 9165;
+  fra.me.line = 11610;
   fra.me.meth = LOCATE_NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9165 */
+  /* parser/parser_prod.nit:11610 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotation();
   INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(fra.me.REG[0]);
   parser___parser_prod___AAnnotation___empty_init(fra.me.REG[0], init_table);
@@ -89252,7 +92029,7 @@ val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(val_
   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 = 9167;
+  fra.me.line = 11612;
   fra.me.meth = LOCATE_NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -89268,7 +92045,7 @@ val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(val_
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:9167 */
+  /* parser/parser_prod.nit:11612 */
   fra.me.REG[5] = NEW_parser___parser_nodes___AAnnotation();
   INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(fra.me.REG[5]);
   parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
@@ -89283,13 +92060,13 @@ val_t NEW_AAnnotation_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAnnotation_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotation();
   INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -89297,7 +92074,7 @@ val_t NEW_AAnnotation_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[82] = {
   {(bigint) 4279 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATypeAtArg" /* 2: Class Name */},
@@ -89316,16 +92093,6 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: ATypeAtArg < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -89333,8 +92100,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89342,6 +92108,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: ATypeAtArg < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -89355,34 +92132,36 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATypeAtArg___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATypeAtArg___visit_all},
-  {(bigint) 2 /* 63: ATypeAtArg < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: ATypeAtArg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___ATypeAtArg___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATypeAtArg___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ATypeAtArg < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: ATypeAtArg < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: ATypeAtArg < AAtArg: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: ATypeAtArg < AAtArg: superclass init_table position */},
   {(bigint) parser___parser_prod___ATypeAtArg___empty_init},
   {(bigint) parser___parser_prod___ATypeAtArg___init_atypeatarg},
-  {(bigint) 4 /* 78: ATypeAtArg < ATypeAtArg: superclass init_table position */},
+  {(bigint) 4 /* 79: ATypeAtArg < ATypeAtArg: superclass init_table position */},
   {(bigint) parser___parser_nodes___ATypeAtArg___n_type},
+  {(bigint) parser___parser_prod___ATypeAtArg___n_type__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ATypeAtArg::_parent */
-/* 3: Attribute ATypeAtArg::_location */
+/* 2: Attribute ATypeAtArg::_location */
+/* 3: Attribute ATypeAtArg::@parent */
 /* 4: Attribute ATypeAtArg::_first_location */
 /* 5: Attribute ATypeAtArg::_last_location */
 /* 6: Attribute ATypeAtArg::_n_annotations */
@@ -89401,7 +92180,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -89443,13 +92228,13 @@ val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init(void){
   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 = 9271;
+  fra.me.line = 11744;
   fra.me.meth = LOCATE_NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9271 */
+  /* parser/parser_prod.nit:11744 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATypeAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(fra.me.REG[0]);
   parser___parser_prod___ATypeAtArg___empty_init(fra.me.REG[0], init_table);
@@ -89464,7 +92249,7 @@ val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(val_t p
   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 = 9273;
+  fra.me.line = 11746;
   fra.me.meth = LOCATE_NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -89472,7 +92257,7 @@ val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(val_t p
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9273 */
+  /* parser/parser_prod.nit:11746 */
   fra.me.REG[1] = NEW_parser___parser_nodes___ATypeAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(fra.me.REG[1]);
   parser___parser_prod___ATypeAtArg___init_atypeatarg(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -89487,13 +92272,13 @@ val_t NEW_ATypeAtArg_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_ATypeAtArg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___ATypeAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -89501,7 +92286,7 @@ val_t NEW_ATypeAtArg_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[82] = {
   {(bigint) 4491 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExprAtArg" /* 2: Class Name */},
@@ -89520,16 +92305,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AExprAtArg < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -89537,8 +92312,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89546,6 +92320,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AExprAtArg < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -89559,34 +92344,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExprAtArg___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExprAtArg___visit_all},
-  {(bigint) 2 /* 63: AExprAtArg < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AExprAtArg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AExprAtArg___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExprAtArg___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AExprAtArg < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AExprAtArg < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AExprAtArg < AAtArg: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AExprAtArg < AAtArg: superclass init_table position */},
   {(bigint) parser___parser_prod___AExprAtArg___empty_init},
   {(bigint) parser___parser_prod___AExprAtArg___init_aexpratarg},
-  {(bigint) 4 /* 78: AExprAtArg < AExprAtArg: superclass init_table position */},
+  {(bigint) 4 /* 79: AExprAtArg < AExprAtArg: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExprAtArg___n_expr},
+  {(bigint) parser___parser_prod___AExprAtArg___n_expr__eq},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExprAtArg::_parent */
-/* 3: Attribute AExprAtArg::_location */
+/* 2: Attribute AExprAtArg::_location */
+/* 3: Attribute AExprAtArg::@parent */
 /* 4: Attribute AExprAtArg::_first_location */
 /* 5: Attribute AExprAtArg::_last_location */
 /* 6: Attribute AExprAtArg::_n_annotations */
@@ -89605,7 +92392,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -89647,13 +92440,13 @@ val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___empty_init(void){
   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 = 9302;
+  fra.me.line = 11782;
   fra.me.meth = LOCATE_NEW_AExprAtArg_parser___parser_prod___AExprAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9302 */
+  /* parser/parser_prod.nit:11782 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExprAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(fra.me.REG[0]);
   parser___parser_prod___AExprAtArg___empty_init(fra.me.REG[0], init_table);
@@ -89668,7 +92461,7 @@ val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(val_t p
   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 = 9304;
+  fra.me.line = 11784;
   fra.me.meth = LOCATE_NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -89676,7 +92469,7 @@ val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(val_t p
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9304 */
+  /* parser/parser_prod.nit:11784 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AExprAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(fra.me.REG[1]);
   parser___parser_prod___AExprAtArg___init_aexpratarg(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -89691,13 +92484,13 @@ val_t NEW_AExprAtArg_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AExprAtArg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AExprAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -89705,7 +92498,7 @@ val_t NEW_AExprAtArg_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[79] = {
+const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[80] = {
   {(bigint) 4563 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAtAtArg" /* 2: Class Name */},
@@ -89724,16 +92517,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AAtAtArg < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -89741,8 +92524,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89750,6 +92532,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AAtAtArg < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -89763,33 +92556,34 @@ const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAtAtArg___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAtAtArg___visit_all},
-  {(bigint) 2 /* 63: AAtAtArg < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AAtAtArg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AAtAtArg___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAtAtArg___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAtAtArg < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AAtAtArg < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AAtAtArg < AAtArg: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAtAtArg___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AAtAtArg < AAtArg: superclass init_table position */},
   {(bigint) parser___parser_prod___AAtAtArg___empty_init},
   {(bigint) parser___parser_prod___AAtAtArg___init_aatatarg},
-  {(bigint) 4 /* 78: AAtAtArg < AAtAtArg: superclass init_table position */},
+  {(bigint) 4 /* 79: AAtAtArg < AAtAtArg: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAtAtArg::_parent */
-/* 3: Attribute AAtAtArg::_location */
+/* 2: Attribute AAtAtArg::_location */
+/* 3: Attribute AAtAtArg::@parent */
 /* 4: Attribute AAtAtArg::_first_location */
 /* 5: Attribute AAtAtArg::_last_location */
 /* 6: Attribute AAtAtArg::_n_annotations */
@@ -89807,7 +92601,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -89841,13 +92641,13 @@ val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init(void){
   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 = 9333;
+  fra.me.line = 11820;
   fra.me.meth = LOCATE_NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9333 */
+  /* parser/parser_prod.nit:11820 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAtAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(fra.me.REG[0]);
   parser___parser_prod___AAtAtArg___empty_init(fra.me.REG[0], init_table);
@@ -89862,7 +92662,7 @@ val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(val_t p0){
   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 = 9335;
+  fra.me.line = 11822;
   fra.me.meth = LOCATE_NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -89870,7 +92670,7 @@ val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9335 */
+  /* parser/parser_prod.nit:11822 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AAtAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(fra.me.REG[1]);
   parser___parser_prod___AAtAtArg___init_aatatarg(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -89885,13 +92685,13 @@ val_t NEW_AAtAtArg_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AAtAtArg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AAtAtArg();
   INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -89899,7 +92699,7 @@ val_t NEW_AAtAtArg_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[82] = {
   {(bigint) 4467 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIdAtid" /* 2: Class Name */},
@@ -89918,16 +92718,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AIdAtid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -89935,8 +92725,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89944,6 +92733,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AIdAtid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -89957,34 +92757,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIdAtid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIdAtid___visit_all},
-  {(bigint) 2 /* 63: AIdAtid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AIdAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AIdAtid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIdAtid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIdAtid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AIdAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AIdAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AIdAtid < AAtid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AIdAtid___n_id__eq},
   {(bigint) parser___parser_prod___AIdAtid___empty_init},
   {(bigint) parser___parser_prod___AIdAtid___init_aidatid},
-  {(bigint) 4 /* 79: AIdAtid < AIdAtid: superclass init_table position */},
+  {(bigint) 4 /* 81: AIdAtid < AIdAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AIdAtid::_parent */
-/* 3: Attribute AIdAtid::_location */
+/* 2: Attribute AIdAtid::_location */
+/* 3: Attribute AIdAtid::@parent */
 /* 4: Attribute AIdAtid::_first_location */
 /* 5: Attribute AIdAtid::_last_location */
 /* 6: Attribute AIdAtid::_n_annotations */
@@ -90003,7 +92805,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -90045,13 +92853,13 @@ val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init(void){
   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 = 9364;
+  fra.me.line = 11858;
   fra.me.meth = LOCATE_NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9364 */
+  /* parser/parser_prod.nit:11858 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIdAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(fra.me.REG[0]);
   parser___parser_prod___AIdAtid___empty_init(fra.me.REG[0], init_table);
@@ -90066,7 +92874,7 @@ val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(val_t p0){
   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 = 9366;
+  fra.me.line = 11860;
   fra.me.meth = LOCATE_NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -90074,7 +92882,7 @@ val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9366 */
+  /* parser/parser_prod.nit:11860 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AIdAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(fra.me.REG[1]);
   parser___parser_prod___AIdAtid___init_aidatid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -90089,13 +92897,13 @@ val_t NEW_AIdAtid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AIdAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AIdAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -90103,7 +92911,7 @@ val_t NEW_AIdAtid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[82] = {
   {(bigint) 4439 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AKwexternAtid" /* 2: Class Name */},
@@ -90122,16 +92930,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AKwexternAtid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -90139,8 +92937,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90148,6 +92945,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AKwexternAtid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -90161,34 +92969,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AKwexternAtid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AKwexternAtid___visit_all},
-  {(bigint) 2 /* 63: AKwexternAtid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AKwexternAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AKwexternAtid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AKwexternAtid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AKwexternAtid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AKwexternAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AKwexternAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AKwexternAtid < AAtid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwexternAtid___n_id__eq},
   {(bigint) parser___parser_prod___AKwexternAtid___empty_init},
   {(bigint) parser___parser_prod___AKwexternAtid___init_akwexternatid},
-  {(bigint) 4 /* 79: AKwexternAtid < AKwexternAtid: superclass init_table position */},
+  {(bigint) 4 /* 81: AKwexternAtid < AKwexternAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AKwexternAtid::_parent */
-/* 3: Attribute AKwexternAtid::_location */
+/* 2: Attribute AKwexternAtid::_location */
+/* 3: Attribute AKwexternAtid::@parent */
 /* 4: Attribute AKwexternAtid::_first_location */
 /* 5: Attribute AKwexternAtid::_last_location */
 /* 6: Attribute AKwexternAtid::_n_annotations */
@@ -90207,7 +93017,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -90249,13 +93065,13 @@ val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init(void){
   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 = 9395;
+  fra.me.line = 11896;
   fra.me.meth = LOCATE_NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9395 */
+  /* parser/parser_prod.nit:11896 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwexternAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(fra.me.REG[0]);
   parser___parser_prod___AKwexternAtid___empty_init(fra.me.REG[0], init_table);
@@ -90270,7 +93086,7 @@ val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternati
   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 = 9397;
+  fra.me.line = 11898;
   fra.me.meth = LOCATE_NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -90278,7 +93094,7 @@ val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternati
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9397 */
+  /* parser/parser_prod.nit:11898 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AKwexternAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(fra.me.REG[1]);
   parser___parser_prod___AKwexternAtid___init_akwexternatid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -90293,13 +93109,13 @@ val_t NEW_AKwexternAtid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AKwexternAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwexternAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -90307,7 +93123,7 @@ val_t NEW_AKwexternAtid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[82] = {
   {(bigint) 4431 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AKwinternAtid" /* 2: Class Name */},
@@ -90326,16 +93142,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AKwinternAtid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -90343,8 +93149,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90352,6 +93157,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AKwinternAtid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -90365,34 +93181,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AKwinternAtid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AKwinternAtid___visit_all},
-  {(bigint) 2 /* 63: AKwinternAtid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AKwinternAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AKwinternAtid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AKwinternAtid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AKwinternAtid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AKwinternAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AKwinternAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AKwinternAtid < AAtid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwinternAtid___n_id__eq},
   {(bigint) parser___parser_prod___AKwinternAtid___empty_init},
   {(bigint) parser___parser_prod___AKwinternAtid___init_akwinternatid},
-  {(bigint) 4 /* 79: AKwinternAtid < AKwinternAtid: superclass init_table position */},
+  {(bigint) 4 /* 81: AKwinternAtid < AKwinternAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AKwinternAtid::_parent */
-/* 3: Attribute AKwinternAtid::_location */
+/* 2: Attribute AKwinternAtid::_location */
+/* 3: Attribute AKwinternAtid::@parent */
 /* 4: Attribute AKwinternAtid::_first_location */
 /* 5: Attribute AKwinternAtid::_last_location */
 /* 6: Attribute AKwinternAtid::_n_annotations */
@@ -90411,7 +93229,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -90453,13 +93277,13 @@ val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___empty_init(void){
   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 = 9426;
+  fra.me.line = 11934;
   fra.me.meth = LOCATE_NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9426 */
+  /* parser/parser_prod.nit:11934 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwinternAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(fra.me.REG[0]);
   parser___parser_prod___AKwinternAtid___empty_init(fra.me.REG[0], init_table);
@@ -90474,7 +93298,7 @@ val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternati
   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 = 9428;
+  fra.me.line = 11936;
   fra.me.meth = LOCATE_NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -90482,7 +93306,7 @@ val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternati
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9428 */
+  /* parser/parser_prod.nit:11936 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AKwinternAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(fra.me.REG[1]);
   parser___parser_prod___AKwinternAtid___init_akwinternatid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -90497,13 +93321,13 @@ val_t NEW_AKwinternAtid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AKwinternAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwinternAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -90511,7 +93335,7 @@ val_t NEW_AKwinternAtid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[82] = {
   {(bigint) 4427 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AKwreadableAtid" /* 2: Class Name */},
@@ -90530,16 +93354,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AKwreadableAtid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -90547,8 +93361,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90556,6 +93369,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AKwreadableAtid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -90569,34 +93393,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AKwreadableAtid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AKwreadableAtid___visit_all},
-  {(bigint) 2 /* 63: AKwreadableAtid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AKwreadableAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AKwreadableAtid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AKwreadableAtid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AKwreadableAtid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AKwreadableAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AKwreadableAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AKwreadableAtid < AAtid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwreadableAtid___n_id__eq},
   {(bigint) parser___parser_prod___AKwreadableAtid___empty_init},
   {(bigint) parser___parser_prod___AKwreadableAtid___init_akwreadableatid},
-  {(bigint) 4 /* 79: AKwreadableAtid < AKwreadableAtid: superclass init_table position */},
+  {(bigint) 4 /* 81: AKwreadableAtid < AKwreadableAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AKwreadableAtid::_parent */
-/* 3: Attribute AKwreadableAtid::_location */
+/* 2: Attribute AKwreadableAtid::_location */
+/* 3: Attribute AKwreadableAtid::@parent */
 /* 4: Attribute AKwreadableAtid::_first_location */
 /* 5: Attribute AKwreadableAtid::_last_location */
 /* 6: Attribute AKwreadableAtid::_n_annotations */
@@ -90615,7 +93441,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -90657,13 +93489,13 @@ val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___empty_init(vo
   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 = 9457;
+  fra.me.line = 11972;
   fra.me.meth = LOCATE_NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9457 */
+  /* parser/parser_prod.nit:11972 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwreadableAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(fra.me.REG[0]);
   parser___parser_prod___AKwreadableAtid___empty_init(fra.me.REG[0], init_table);
@@ -90678,7 +93510,7 @@ val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreada
   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 = 9459;
+  fra.me.line = 11974;
   fra.me.meth = LOCATE_NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -90686,7 +93518,7 @@ val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreada
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9459 */
+  /* parser/parser_prod.nit:11974 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AKwreadableAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(fra.me.REG[1]);
   parser___parser_prod___AKwreadableAtid___init_akwreadableatid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -90701,13 +93533,13 @@ val_t NEW_AKwreadableAtid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AKwreadableAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwreadableAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -90715,7 +93547,7 @@ val_t NEW_AKwreadableAtid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[82] = {
   {(bigint) 4423 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AKwwritableAtid" /* 2: Class Name */},
@@ -90734,16 +93566,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AKwwritableAtid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -90751,8 +93573,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90760,6 +93581,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AKwwritableAtid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -90773,34 +93605,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AKwwritableAtid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AKwwritableAtid___visit_all},
-  {(bigint) 2 /* 63: AKwwritableAtid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AKwwritableAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AKwwritableAtid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AKwwritableAtid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AKwwritableAtid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AKwwritableAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AKwwritableAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AKwwritableAtid < AAtid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwwritableAtid___n_id__eq},
   {(bigint) parser___parser_prod___AKwwritableAtid___empty_init},
   {(bigint) parser___parser_prod___AKwwritableAtid___init_akwwritableatid},
-  {(bigint) 4 /* 79: AKwwritableAtid < AKwwritableAtid: superclass init_table position */},
+  {(bigint) 4 /* 81: AKwwritableAtid < AKwwritableAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AKwwritableAtid::_parent */
-/* 3: Attribute AKwwritableAtid::_location */
+/* 2: Attribute AKwwritableAtid::_location */
+/* 3: Attribute AKwwritableAtid::@parent */
 /* 4: Attribute AKwwritableAtid::_first_location */
 /* 5: Attribute AKwwritableAtid::_last_location */
 /* 6: Attribute AKwwritableAtid::_n_annotations */
@@ -90819,7 +93653,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -90861,13 +93701,13 @@ val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init(vo
   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 = 9488;
+  fra.me.line = 12010;
   fra.me.meth = LOCATE_NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9488 */
+  /* parser/parser_prod.nit:12010 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwwritableAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(fra.me.REG[0]);
   parser___parser_prod___AKwwritableAtid___empty_init(fra.me.REG[0], init_table);
@@ -90882,7 +93722,7 @@ val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwrita
   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 = 9490;
+  fra.me.line = 12012;
   fra.me.meth = LOCATE_NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -90890,7 +93730,7 @@ val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwrita
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9490 */
+  /* parser/parser_prod.nit:12012 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AKwwritableAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(fra.me.REG[1]);
   parser___parser_prod___AKwwritableAtid___init_akwwritableatid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -90905,13 +93745,13 @@ val_t NEW_AKwwritableAtid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AKwwritableAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwwritableAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -90919,7 +93759,7 @@ val_t NEW_AKwwritableAtid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[80] = {
+const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[82] = {
   {(bigint) 4435 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AKwimportAtid" /* 2: Class Name */},
@@ -90938,16 +93778,6 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: AKwimportAtid < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -90955,8 +93785,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90964,6 +93793,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[80] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: AKwimportAtid < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -90977,34 +93817,36 @@ const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[80] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AKwimportAtid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AKwimportAtid___visit_all},
-  {(bigint) 2 /* 63: AKwimportAtid < ANode: superclass init_table position */},
+  {(bigint) 2 /* 57: AKwimportAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___AKwimportAtid___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___AKwimportAtid___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AKwimportAtid < Prod: superclass init_table position */},
+  {(bigint) 1 /* 71: AKwimportAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 0 /* 75: AKwimportAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 0 /* 76: AKwimportAtid < AAtid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwimportAtid___n_id__eq},
   {(bigint) parser___parser_prod___AKwimportAtid___empty_init},
   {(bigint) parser___parser_prod___AKwimportAtid___init_akwimportatid},
-  {(bigint) 4 /* 79: AKwimportAtid < AKwimportAtid: superclass init_table position */},
+  {(bigint) 4 /* 81: AKwimportAtid < AKwimportAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AKwimportAtid::_parent */
-/* 3: Attribute AKwimportAtid::_location */
+/* 2: Attribute AKwimportAtid::_location */
+/* 3: Attribute AKwimportAtid::@parent */
 /* 4: Attribute AKwimportAtid::_first_location */
 /* 5: Attribute AKwimportAtid::_last_location */
 /* 6: Attribute AKwimportAtid::_n_annotations */
@@ -91023,7 +93865,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -91065,13 +93913,13 @@ val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init(void){
   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 = 9519;
+  fra.me.line = 12048;
   fra.me.meth = LOCATE_NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_prod.nit:9519 */
+  /* parser/parser_prod.nit:12048 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwimportAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(fra.me.REG[0]);
   parser___parser_prod___AKwimportAtid___empty_init(fra.me.REG[0], init_table);
@@ -91086,7 +93934,7 @@ val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportati
   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 = 9521;
+  fra.me.line = 12050;
   fra.me.meth = LOCATE_NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -91094,7 +93942,7 @@ val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportati
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:9521 */
+  /* parser/parser_prod.nit:12050 */
   fra.me.REG[1] = NEW_parser___parser_nodes___AKwimportAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(fra.me.REG[1]);
   parser___parser_prod___AKwimportAtid___init_akwimportatid(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -91109,13 +93957,13 @@ val_t NEW_AKwimportAtid_parser___parser_nodes___ANode___init(void){
   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 = 32;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_AKwimportAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser_nodes.nit:32 */
+  /* parser/parser_nodes.nit:41 */
   fra.me.REG[0] = NEW_parser___parser_nodes___AKwimportAtid();
   INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(fra.me.REG[0]);
   parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
@@ -91123,7 +93971,7 @@ val_t NEW_AKwimportAtid_parser___parser_nodes___ANode___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___Start[79] = {
+const classtable_elt_t VFT_parser___parser_nodes___Start[82] = {
   {(bigint) 3455 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Start" /* 2: Class Name */},
@@ -91142,16 +93990,6 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: Start < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -91159,8 +93997,7 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91168,6 +94005,17 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[79] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: Start < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -91181,33 +94029,36 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[79] = {
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Start___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___Start___visit_all},
-  {(bigint) 1 /* 63: Start < ANode: superclass init_table position */},
+  {(bigint) 1 /* 57: Start < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
   {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) parser___parser_nodes___ANode___parent},
+  {(bigint) parser___parser_nodes___ANode___parent__eq},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_prod___Start___replace_child},
+  {(bigint) parser___parser_nodes___ANode___detach},
+  {(bigint) parser___parser_nodes___Prod___replace_with},
+  {(bigint) parser___parser_prod___Start___visit_all},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: Start < Prod: superclass init_table position */},
+  {(bigint) 0 /* 71: Start < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_nodes___Prod___n_annotations},
-  {(bigint) 3 /* 75: Start < Start: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations__eq},
+  {(bigint) parser___parser_nodes___ANode___replace_with},
+  {(bigint) 3 /* 76: Start < Start: superclass init_table position */},
   {(bigint) parser___parser_nodes___Start___n_base},
+  {(bigint) parser___parser_nodes___Start___n_base__eq},
   {(bigint) parser___parser_nodes___Start___n_eof},
+  {(bigint) parser___parser_nodes___Start___n_eof__eq},
   {(bigint) parser___parser_nodes___Start___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Start::_parent */
-/* 3: Attribute Start::_location */
+/* 2: Attribute Start::_location */
+/* 3: Attribute Start::@parent */
 /* 4: Attribute Start::_first_location */
 /* 5: Attribute Start::_last_location */
 /* 6: Attribute Start::_n_annotations */
@@ -91227,7 +94078,13 @@ void INIT_ATTRIBUTES__parser___parser_nodes___Start(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
+  /* parser/parser_nodes.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:161 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -91269,7 +94126,7 @@ val_t NEW_Start_parser___parser_nodes___Start___init(val_t p0, val_t p1){
   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 = 1272;
+  fra.me.line = 1748;
   fra.me.meth = LOCATE_NEW_Start_parser___parser_nodes___Start___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -91279,7 +94136,7 @@ val_t NEW_Start_parser___parser_nodes___Start___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_nodes.nit:1272 */
+  /* parser/parser_nodes.nit:1748 */
   fra.me.REG[2] = NEW_parser___parser_nodes___Start();
   INIT_ATTRIBUTES__parser___parser_nodes___Start(fra.me.REG[2]);
   parser___parser_nodes___Start___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -91306,16 +94163,6 @@ const classtable_elt_t VFT_parser___lexer___Lexer[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Lexer < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -91323,8 +94170,7 @@ const classtable_elt_t VFT_parser___lexer___Lexer[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91332,6 +94178,17 @@ const classtable_elt_t VFT_parser___lexer___Lexer[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: Lexer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -91488,16 +94345,6 @@ const classtable_elt_t VFT_parser___State[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: State < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -91505,8 +94352,7 @@ const classtable_elt_t VFT_parser___State[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91514,6 +94360,17 @@ const classtable_elt_t VFT_parser___State[56] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: State < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -91618,16 +94475,6 @@ const classtable_elt_t VFT_parser___Parser[63] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Parser < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -91635,8 +94482,7 @@ const classtable_elt_t VFT_parser___Parser[63] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91644,6 +94490,17 @@ const classtable_elt_t VFT_parser___Parser[63] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: Parser < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -91751,7 +94608,7 @@ val_t NEW_Parser_parser___Parser___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[57] = {
+const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[58] = {
   {(bigint) 3275 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ComputeProdLocationVisitor" /* 2: Class Name */},
@@ -91770,16 +94627,6 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ComputeProdLocationVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -91787,8 +94634,7 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91796,6 +94642,17 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[57] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ComputeProdLocationVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -91804,10 +94661,11 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[57] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 0 /* 50: ComputeProdLocationVisitor < Visitor: superclass init_table position */},
   {(bigint) parser___ComputeProdLocationVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 55: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 2 /* 56: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
   {(bigint) parser___ComputeProdLocationVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -91831,9 +94689,9 @@ void INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   /* parser/parser.nit:1466 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]) = fra.me.REG[1];
@@ -91895,13 +94753,13 @@ 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 = 1553;
+  fra.me.line = 1551;
   fra.me.meth = LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* parser/parser.nit:1553 */
+  /* parser/parser.nit:1551 */
   fra.me.REG[0] = NEW_parser___ComputeProdLocationVisitor();
   INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor(fra.me.REG[0]);
   parser___ComputeProdLocationVisitor___init(fra.me.REG[0], init_table);
@@ -91928,16 +94786,6 @@ const classtable_elt_t VFT_parser___ReduceAction0[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction0 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -91945,8 +94793,7 @@ const classtable_elt_t VFT_parser___ReduceAction0[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91954,6 +94801,17 @@ const classtable_elt_t VFT_parser___ReduceAction0[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction0 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92020,14 +94878,14 @@ val_t NEW_ReduceAction0_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction0_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction0();
   INIT_ATTRIBUTES__parser___ReduceAction0(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92054,16 +94912,6 @@ const classtable_elt_t VFT_parser___ReduceAction1[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92071,8 +94919,7 @@ const classtable_elt_t VFT_parser___ReduceAction1[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92080,6 +94927,17 @@ const classtable_elt_t VFT_parser___ReduceAction1[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92146,14 +95004,14 @@ val_t NEW_ReduceAction1_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1();
   INIT_ATTRIBUTES__parser___ReduceAction1(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92180,16 +95038,6 @@ const classtable_elt_t VFT_parser___ReduceAction2[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction2 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92197,8 +95045,7 @@ const classtable_elt_t VFT_parser___ReduceAction2[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92206,6 +95053,17 @@ const classtable_elt_t VFT_parser___ReduceAction2[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction2 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92272,14 +95130,14 @@ val_t NEW_ReduceAction2_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction2_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction2();
   INIT_ATTRIBUTES__parser___ReduceAction2(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92306,16 +95164,6 @@ const classtable_elt_t VFT_parser___ReduceAction3[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction3 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92323,8 +95171,7 @@ const classtable_elt_t VFT_parser___ReduceAction3[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92332,6 +95179,17 @@ const classtable_elt_t VFT_parser___ReduceAction3[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction3 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92398,14 +95256,14 @@ val_t NEW_ReduceAction3_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction3_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction3();
   INIT_ATTRIBUTES__parser___ReduceAction3(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92432,16 +95290,6 @@ const classtable_elt_t VFT_parser___ReduceAction4[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction4 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92449,8 +95297,7 @@ const classtable_elt_t VFT_parser___ReduceAction4[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92458,6 +95305,17 @@ const classtable_elt_t VFT_parser___ReduceAction4[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction4 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92524,14 +95382,14 @@ val_t NEW_ReduceAction4_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction4_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction4();
   INIT_ATTRIBUTES__parser___ReduceAction4(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92558,16 +95416,6 @@ const classtable_elt_t VFT_parser___ReduceAction5[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction5 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92575,8 +95423,7 @@ const classtable_elt_t VFT_parser___ReduceAction5[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92584,6 +95431,17 @@ const classtable_elt_t VFT_parser___ReduceAction5[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction5 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92650,14 +95508,14 @@ val_t NEW_ReduceAction5_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction5_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction5();
   INIT_ATTRIBUTES__parser___ReduceAction5(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92684,16 +95542,6 @@ const classtable_elt_t VFT_parser___ReduceAction6[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction6 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92701,8 +95549,7 @@ const classtable_elt_t VFT_parser___ReduceAction6[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92710,6 +95557,17 @@ const classtable_elt_t VFT_parser___ReduceAction6[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction6 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92776,14 +95634,14 @@ val_t NEW_ReduceAction6_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction6_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction6();
   INIT_ATTRIBUTES__parser___ReduceAction6(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92810,16 +95668,6 @@ const classtable_elt_t VFT_parser___ReduceAction7[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction7 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92827,8 +95675,7 @@ const classtable_elt_t VFT_parser___ReduceAction7[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92836,6 +95683,17 @@ const classtable_elt_t VFT_parser___ReduceAction7[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction7 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -92902,14 +95760,14 @@ val_t NEW_ReduceAction7_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction7_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction7();
   INIT_ATTRIBUTES__parser___ReduceAction7(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -92936,16 +95794,6 @@ const classtable_elt_t VFT_parser___ReduceAction8[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction8 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -92953,8 +95801,7 @@ const classtable_elt_t VFT_parser___ReduceAction8[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92962,6 +95809,17 @@ const classtable_elt_t VFT_parser___ReduceAction8[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction8 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93028,14 +95886,14 @@ val_t NEW_ReduceAction8_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction8_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction8();
   INIT_ATTRIBUTES__parser___ReduceAction8(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93062,16 +95920,6 @@ const classtable_elt_t VFT_parser___ReduceAction9[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction9 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93079,8 +95927,7 @@ const classtable_elt_t VFT_parser___ReduceAction9[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93088,6 +95935,17 @@ const classtable_elt_t VFT_parser___ReduceAction9[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction9 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93154,14 +96012,14 @@ val_t NEW_ReduceAction9_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction9_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction9();
   INIT_ATTRIBUTES__parser___ReduceAction9(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93188,16 +96046,6 @@ const classtable_elt_t VFT_parser___ReduceAction10[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction10 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93205,8 +96053,7 @@ const classtable_elt_t VFT_parser___ReduceAction10[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93214,6 +96061,17 @@ const classtable_elt_t VFT_parser___ReduceAction10[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction10 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93280,14 +96138,14 @@ val_t NEW_ReduceAction10_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction10_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction10();
   INIT_ATTRIBUTES__parser___ReduceAction10(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93314,16 +96172,6 @@ const classtable_elt_t VFT_parser___ReduceAction11[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction11 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93331,8 +96179,7 @@ const classtable_elt_t VFT_parser___ReduceAction11[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93340,6 +96187,17 @@ const classtable_elt_t VFT_parser___ReduceAction11[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction11 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93406,14 +96264,14 @@ val_t NEW_ReduceAction11_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction11_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction11();
   INIT_ATTRIBUTES__parser___ReduceAction11(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93440,16 +96298,6 @@ const classtable_elt_t VFT_parser___ReduceAction12[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction12 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93457,8 +96305,7 @@ const classtable_elt_t VFT_parser___ReduceAction12[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93466,6 +96313,17 @@ const classtable_elt_t VFT_parser___ReduceAction12[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction12 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93532,14 +96390,14 @@ val_t NEW_ReduceAction12_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction12_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction12();
   INIT_ATTRIBUTES__parser___ReduceAction12(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93566,16 +96424,6 @@ const classtable_elt_t VFT_parser___ReduceAction13[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction13 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93583,8 +96431,7 @@ const classtable_elt_t VFT_parser___ReduceAction13[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93592,6 +96439,17 @@ const classtable_elt_t VFT_parser___ReduceAction13[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction13 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93658,14 +96516,14 @@ val_t NEW_ReduceAction13_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction13_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction13();
   INIT_ATTRIBUTES__parser___ReduceAction13(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93692,16 +96550,6 @@ const classtable_elt_t VFT_parser___ReduceAction14[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction14 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93709,8 +96557,7 @@ const classtable_elt_t VFT_parser___ReduceAction14[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93718,6 +96565,17 @@ const classtable_elt_t VFT_parser___ReduceAction14[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction14 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93784,14 +96642,14 @@ val_t NEW_ReduceAction14_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction14_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction14();
   INIT_ATTRIBUTES__parser___ReduceAction14(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93818,16 +96676,6 @@ const classtable_elt_t VFT_parser___ReduceAction15[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction15 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93835,8 +96683,7 @@ const classtable_elt_t VFT_parser___ReduceAction15[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93844,6 +96691,17 @@ const classtable_elt_t VFT_parser___ReduceAction15[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction15 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -93910,14 +96768,14 @@ val_t NEW_ReduceAction15_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction15_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction15();
   INIT_ATTRIBUTES__parser___ReduceAction15(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -93944,16 +96802,6 @@ const classtable_elt_t VFT_parser___ReduceAction16[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction16 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -93961,8 +96809,7 @@ const classtable_elt_t VFT_parser___ReduceAction16[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93970,6 +96817,17 @@ const classtable_elt_t VFT_parser___ReduceAction16[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction16 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94036,14 +96894,14 @@ val_t NEW_ReduceAction16_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction16_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction16();
   INIT_ATTRIBUTES__parser___ReduceAction16(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94070,16 +96928,6 @@ const classtable_elt_t VFT_parser___ReduceAction17[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction17 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94087,8 +96935,7 @@ const classtable_elt_t VFT_parser___ReduceAction17[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94096,6 +96943,17 @@ const classtable_elt_t VFT_parser___ReduceAction17[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction17 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94162,14 +97020,14 @@ val_t NEW_ReduceAction17_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction17_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction17();
   INIT_ATTRIBUTES__parser___ReduceAction17(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94196,16 +97054,6 @@ const classtable_elt_t VFT_parser___ReduceAction18[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction18 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94213,8 +97061,7 @@ const classtable_elt_t VFT_parser___ReduceAction18[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94222,6 +97069,17 @@ const classtable_elt_t VFT_parser___ReduceAction18[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction18 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94288,14 +97146,14 @@ val_t NEW_ReduceAction18_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction18_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction18();
   INIT_ATTRIBUTES__parser___ReduceAction18(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94322,16 +97180,6 @@ const classtable_elt_t VFT_parser___ReduceAction19[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction19 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94339,8 +97187,7 @@ const classtable_elt_t VFT_parser___ReduceAction19[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94348,6 +97195,17 @@ const classtable_elt_t VFT_parser___ReduceAction19[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction19 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94414,14 +97272,14 @@ val_t NEW_ReduceAction19_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction19_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction19();
   INIT_ATTRIBUTES__parser___ReduceAction19(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94448,16 +97306,6 @@ const classtable_elt_t VFT_parser___ReduceAction20[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction20 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94465,8 +97313,7 @@ const classtable_elt_t VFT_parser___ReduceAction20[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94474,6 +97321,17 @@ const classtable_elt_t VFT_parser___ReduceAction20[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction20 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94540,14 +97398,14 @@ val_t NEW_ReduceAction20_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction20_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction20();
   INIT_ATTRIBUTES__parser___ReduceAction20(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94574,16 +97432,6 @@ const classtable_elt_t VFT_parser___ReduceAction21[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction21 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94591,8 +97439,7 @@ const classtable_elt_t VFT_parser___ReduceAction21[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94600,6 +97447,17 @@ const classtable_elt_t VFT_parser___ReduceAction21[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction21 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94666,14 +97524,14 @@ val_t NEW_ReduceAction21_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction21_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction21();
   INIT_ATTRIBUTES__parser___ReduceAction21(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94700,16 +97558,6 @@ const classtable_elt_t VFT_parser___ReduceAction22[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction22 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94717,8 +97565,7 @@ const classtable_elt_t VFT_parser___ReduceAction22[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94726,6 +97573,17 @@ const classtable_elt_t VFT_parser___ReduceAction22[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction22 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94792,14 +97650,14 @@ val_t NEW_ReduceAction22_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction22_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction22();
   INIT_ATTRIBUTES__parser___ReduceAction22(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94826,16 +97684,6 @@ const classtable_elt_t VFT_parser___ReduceAction23[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction23 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94843,8 +97691,7 @@ const classtable_elt_t VFT_parser___ReduceAction23[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94852,6 +97699,17 @@ const classtable_elt_t VFT_parser___ReduceAction23[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction23 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -94918,14 +97776,14 @@ val_t NEW_ReduceAction23_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction23_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction23();
   INIT_ATTRIBUTES__parser___ReduceAction23(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -94952,16 +97810,6 @@ const classtable_elt_t VFT_parser___ReduceAction24[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction24 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -94969,8 +97817,7 @@ const classtable_elt_t VFT_parser___ReduceAction24[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94978,6 +97825,17 @@ const classtable_elt_t VFT_parser___ReduceAction24[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction24 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95044,14 +97902,14 @@ val_t NEW_ReduceAction24_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction24_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction24();
   INIT_ATTRIBUTES__parser___ReduceAction24(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95078,16 +97936,6 @@ const classtable_elt_t VFT_parser___ReduceAction25[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction25 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95095,8 +97943,7 @@ const classtable_elt_t VFT_parser___ReduceAction25[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95104,6 +97951,17 @@ const classtable_elt_t VFT_parser___ReduceAction25[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction25 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95170,14 +98028,14 @@ val_t NEW_ReduceAction25_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction25_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction25();
   INIT_ATTRIBUTES__parser___ReduceAction25(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95204,16 +98062,6 @@ const classtable_elt_t VFT_parser___ReduceAction26[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction26 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95221,8 +98069,7 @@ const classtable_elt_t VFT_parser___ReduceAction26[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95230,6 +98077,17 @@ const classtable_elt_t VFT_parser___ReduceAction26[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction26 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95296,14 +98154,14 @@ val_t NEW_ReduceAction26_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction26_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction26();
   INIT_ATTRIBUTES__parser___ReduceAction26(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95330,16 +98188,6 @@ const classtable_elt_t VFT_parser___ReduceAction27[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction27 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95347,8 +98195,7 @@ const classtable_elt_t VFT_parser___ReduceAction27[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95356,6 +98203,17 @@ const classtable_elt_t VFT_parser___ReduceAction27[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction27 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95422,14 +98280,14 @@ val_t NEW_ReduceAction27_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction27_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction27();
   INIT_ATTRIBUTES__parser___ReduceAction27(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95456,16 +98314,6 @@ const classtable_elt_t VFT_parser___ReduceAction28[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction28 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95473,8 +98321,7 @@ const classtable_elt_t VFT_parser___ReduceAction28[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95482,6 +98329,17 @@ const classtable_elt_t VFT_parser___ReduceAction28[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction28 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95548,14 +98406,14 @@ val_t NEW_ReduceAction28_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction28_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction28();
   INIT_ATTRIBUTES__parser___ReduceAction28(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95582,16 +98440,6 @@ const classtable_elt_t VFT_parser___ReduceAction29[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction29 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95599,8 +98447,7 @@ const classtable_elt_t VFT_parser___ReduceAction29[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95608,6 +98455,17 @@ const classtable_elt_t VFT_parser___ReduceAction29[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction29 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95674,14 +98532,14 @@ val_t NEW_ReduceAction29_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction29_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction29();
   INIT_ATTRIBUTES__parser___ReduceAction29(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95708,16 +98566,6 @@ const classtable_elt_t VFT_parser___ReduceAction30[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction30 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95725,8 +98573,7 @@ const classtable_elt_t VFT_parser___ReduceAction30[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95734,6 +98581,17 @@ const classtable_elt_t VFT_parser___ReduceAction30[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction30 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95800,14 +98658,14 @@ val_t NEW_ReduceAction30_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction30_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction30();
   INIT_ATTRIBUTES__parser___ReduceAction30(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95834,16 +98692,6 @@ const classtable_elt_t VFT_parser___ReduceAction31[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction31 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95851,8 +98699,7 @@ const classtable_elt_t VFT_parser___ReduceAction31[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95860,6 +98707,17 @@ const classtable_elt_t VFT_parser___ReduceAction31[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction31 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -95926,14 +98784,14 @@ val_t NEW_ReduceAction31_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction31_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction31();
   INIT_ATTRIBUTES__parser___ReduceAction31(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -95960,16 +98818,6 @@ const classtable_elt_t VFT_parser___ReduceAction32[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction32 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -95977,8 +98825,7 @@ const classtable_elt_t VFT_parser___ReduceAction32[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95986,6 +98833,17 @@ const classtable_elt_t VFT_parser___ReduceAction32[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction32 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96052,14 +98910,14 @@ val_t NEW_ReduceAction32_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction32_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction32();
   INIT_ATTRIBUTES__parser___ReduceAction32(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96086,16 +98944,6 @@ const classtable_elt_t VFT_parser___ReduceAction33[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction33 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96103,8 +98951,7 @@ const classtable_elt_t VFT_parser___ReduceAction33[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96112,6 +98959,17 @@ const classtable_elt_t VFT_parser___ReduceAction33[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction33 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96178,14 +99036,14 @@ val_t NEW_ReduceAction33_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction33_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction33();
   INIT_ATTRIBUTES__parser___ReduceAction33(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96212,16 +99070,6 @@ const classtable_elt_t VFT_parser___ReduceAction34[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction34 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96229,8 +99077,7 @@ const classtable_elt_t VFT_parser___ReduceAction34[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96238,6 +99085,17 @@ const classtable_elt_t VFT_parser___ReduceAction34[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction34 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96304,14 +99162,14 @@ val_t NEW_ReduceAction34_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction34_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction34();
   INIT_ATTRIBUTES__parser___ReduceAction34(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96338,16 +99196,6 @@ const classtable_elt_t VFT_parser___ReduceAction35[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction35 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96355,8 +99203,7 @@ const classtable_elt_t VFT_parser___ReduceAction35[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96364,6 +99211,17 @@ const classtable_elt_t VFT_parser___ReduceAction35[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction35 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96430,14 +99288,14 @@ val_t NEW_ReduceAction35_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction35_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction35();
   INIT_ATTRIBUTES__parser___ReduceAction35(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96464,16 +99322,6 @@ const classtable_elt_t VFT_parser___ReduceAction36[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction36 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96481,8 +99329,7 @@ const classtable_elt_t VFT_parser___ReduceAction36[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96490,6 +99337,17 @@ const classtable_elt_t VFT_parser___ReduceAction36[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction36 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96556,14 +99414,14 @@ val_t NEW_ReduceAction36_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction36_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction36();
   INIT_ATTRIBUTES__parser___ReduceAction36(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96590,16 +99448,6 @@ const classtable_elt_t VFT_parser___ReduceAction37[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction37 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96607,8 +99455,7 @@ const classtable_elt_t VFT_parser___ReduceAction37[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96616,6 +99463,17 @@ const classtable_elt_t VFT_parser___ReduceAction37[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction37 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96682,14 +99540,14 @@ val_t NEW_ReduceAction37_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction37_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction37();
   INIT_ATTRIBUTES__parser___ReduceAction37(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96716,16 +99574,6 @@ const classtable_elt_t VFT_parser___ReduceAction38[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction38 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96733,8 +99581,7 @@ const classtable_elt_t VFT_parser___ReduceAction38[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96742,6 +99589,17 @@ const classtable_elt_t VFT_parser___ReduceAction38[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction38 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96808,14 +99666,14 @@ val_t NEW_ReduceAction38_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction38_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction38();
   INIT_ATTRIBUTES__parser___ReduceAction38(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96842,16 +99700,6 @@ const classtable_elt_t VFT_parser___ReduceAction39[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction39 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96859,8 +99707,7 @@ const classtable_elt_t VFT_parser___ReduceAction39[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96868,6 +99715,17 @@ const classtable_elt_t VFT_parser___ReduceAction39[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction39 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -96934,14 +99792,14 @@ val_t NEW_ReduceAction39_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction39_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction39();
   INIT_ATTRIBUTES__parser___ReduceAction39(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -96968,16 +99826,6 @@ const classtable_elt_t VFT_parser___ReduceAction40[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction40 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -96985,8 +99833,7 @@ const classtable_elt_t VFT_parser___ReduceAction40[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96994,6 +99841,17 @@ const classtable_elt_t VFT_parser___ReduceAction40[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction40 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97060,14 +99918,14 @@ val_t NEW_ReduceAction40_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction40_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction40();
   INIT_ATTRIBUTES__parser___ReduceAction40(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97094,16 +99952,6 @@ const classtable_elt_t VFT_parser___ReduceAction41[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction41 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97111,8 +99959,7 @@ const classtable_elt_t VFT_parser___ReduceAction41[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97120,6 +99967,17 @@ const classtable_elt_t VFT_parser___ReduceAction41[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction41 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97186,14 +100044,14 @@ val_t NEW_ReduceAction41_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction41_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction41();
   INIT_ATTRIBUTES__parser___ReduceAction41(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97220,16 +100078,6 @@ const classtable_elt_t VFT_parser___ReduceAction42[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction42 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97237,8 +100085,7 @@ const classtable_elt_t VFT_parser___ReduceAction42[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97246,6 +100093,17 @@ const classtable_elt_t VFT_parser___ReduceAction42[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction42 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97312,14 +100170,14 @@ val_t NEW_ReduceAction42_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction42_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction42();
   INIT_ATTRIBUTES__parser___ReduceAction42(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97346,16 +100204,6 @@ const classtable_elt_t VFT_parser___ReduceAction43[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction43 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97363,8 +100211,7 @@ const classtable_elt_t VFT_parser___ReduceAction43[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97372,6 +100219,17 @@ const classtable_elt_t VFT_parser___ReduceAction43[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction43 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97438,14 +100296,14 @@ val_t NEW_ReduceAction43_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction43_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction43();
   INIT_ATTRIBUTES__parser___ReduceAction43(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97472,16 +100330,6 @@ const classtable_elt_t VFT_parser___ReduceAction44[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction44 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97489,8 +100337,7 @@ const classtable_elt_t VFT_parser___ReduceAction44[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97498,6 +100345,17 @@ const classtable_elt_t VFT_parser___ReduceAction44[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction44 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97564,14 +100422,14 @@ val_t NEW_ReduceAction44_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction44_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction44();
   INIT_ATTRIBUTES__parser___ReduceAction44(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97598,16 +100456,6 @@ const classtable_elt_t VFT_parser___ReduceAction45[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction45 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97615,8 +100463,7 @@ const classtable_elt_t VFT_parser___ReduceAction45[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97624,6 +100471,17 @@ const classtable_elt_t VFT_parser___ReduceAction45[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction45 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97690,14 +100548,14 @@ val_t NEW_ReduceAction45_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction45_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction45();
   INIT_ATTRIBUTES__parser___ReduceAction45(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97724,16 +100582,6 @@ const classtable_elt_t VFT_parser___ReduceAction46[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction46 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97741,8 +100589,7 @@ const classtable_elt_t VFT_parser___ReduceAction46[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97750,6 +100597,17 @@ const classtable_elt_t VFT_parser___ReduceAction46[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction46 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97816,14 +100674,14 @@ val_t NEW_ReduceAction46_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction46_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction46();
   INIT_ATTRIBUTES__parser___ReduceAction46(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97850,16 +100708,6 @@ const classtable_elt_t VFT_parser___ReduceAction47[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction47 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97867,8 +100715,7 @@ const classtable_elt_t VFT_parser___ReduceAction47[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97876,6 +100723,17 @@ const classtable_elt_t VFT_parser___ReduceAction47[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction47 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -97942,14 +100800,14 @@ val_t NEW_ReduceAction47_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction47_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction47();
   INIT_ATTRIBUTES__parser___ReduceAction47(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -97976,16 +100834,6 @@ const classtable_elt_t VFT_parser___ReduceAction48[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction48 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -97993,8 +100841,7 @@ const classtable_elt_t VFT_parser___ReduceAction48[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98002,6 +100849,17 @@ const classtable_elt_t VFT_parser___ReduceAction48[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction48 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98068,14 +100926,14 @@ val_t NEW_ReduceAction48_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction48_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction48();
   INIT_ATTRIBUTES__parser___ReduceAction48(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98102,16 +100960,6 @@ const classtable_elt_t VFT_parser___ReduceAction49[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction49 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98119,8 +100967,7 @@ const classtable_elt_t VFT_parser___ReduceAction49[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98128,6 +100975,17 @@ const classtable_elt_t VFT_parser___ReduceAction49[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction49 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98194,14 +101052,14 @@ val_t NEW_ReduceAction49_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction49_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction49();
   INIT_ATTRIBUTES__parser___ReduceAction49(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98228,16 +101086,6 @@ const classtable_elt_t VFT_parser___ReduceAction50[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction50 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98245,8 +101093,7 @@ const classtable_elt_t VFT_parser___ReduceAction50[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98254,6 +101101,17 @@ const classtable_elt_t VFT_parser___ReduceAction50[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction50 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98320,14 +101178,14 @@ val_t NEW_ReduceAction50_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction50_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction50();
   INIT_ATTRIBUTES__parser___ReduceAction50(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98354,16 +101212,6 @@ const classtable_elt_t VFT_parser___ReduceAction51[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction51 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98371,8 +101219,7 @@ const classtable_elt_t VFT_parser___ReduceAction51[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98380,6 +101227,17 @@ const classtable_elt_t VFT_parser___ReduceAction51[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction51 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98446,14 +101304,14 @@ val_t NEW_ReduceAction51_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction51_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction51();
   INIT_ATTRIBUTES__parser___ReduceAction51(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98480,16 +101338,6 @@ const classtable_elt_t VFT_parser___ReduceAction52[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction52 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98497,8 +101345,7 @@ const classtable_elt_t VFT_parser___ReduceAction52[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98506,6 +101353,17 @@ const classtable_elt_t VFT_parser___ReduceAction52[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction52 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98572,14 +101430,14 @@ val_t NEW_ReduceAction52_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction52_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction52();
   INIT_ATTRIBUTES__parser___ReduceAction52(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98606,16 +101464,6 @@ const classtable_elt_t VFT_parser___ReduceAction53[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction53 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98623,8 +101471,7 @@ const classtable_elt_t VFT_parser___ReduceAction53[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98632,6 +101479,17 @@ const classtable_elt_t VFT_parser___ReduceAction53[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction53 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98698,14 +101556,14 @@ val_t NEW_ReduceAction53_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction53_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction53();
   INIT_ATTRIBUTES__parser___ReduceAction53(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98732,16 +101590,6 @@ const classtable_elt_t VFT_parser___ReduceAction54[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction54 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98749,8 +101597,7 @@ const classtable_elt_t VFT_parser___ReduceAction54[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98758,6 +101605,17 @@ const classtable_elt_t VFT_parser___ReduceAction54[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction54 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98824,14 +101682,14 @@ val_t NEW_ReduceAction54_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction54_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction54();
   INIT_ATTRIBUTES__parser___ReduceAction54(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98858,16 +101716,6 @@ const classtable_elt_t VFT_parser___ReduceAction55[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction55 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -98875,8 +101723,7 @@ const classtable_elt_t VFT_parser___ReduceAction55[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98884,6 +101731,17 @@ const classtable_elt_t VFT_parser___ReduceAction55[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction55 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -98950,14 +101808,14 @@ val_t NEW_ReduceAction55_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction55_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction55();
   INIT_ATTRIBUTES__parser___ReduceAction55(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -98984,16 +101842,6 @@ const classtable_elt_t VFT_parser___ReduceAction56[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction56 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99001,8 +101849,7 @@ const classtable_elt_t VFT_parser___ReduceAction56[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99010,6 +101857,17 @@ const classtable_elt_t VFT_parser___ReduceAction56[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction56 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99076,14 +101934,14 @@ val_t NEW_ReduceAction56_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction56_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction56();
   INIT_ATTRIBUTES__parser___ReduceAction56(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99110,16 +101968,6 @@ const classtable_elt_t VFT_parser___ReduceAction57[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction57 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99127,8 +101975,7 @@ const classtable_elt_t VFT_parser___ReduceAction57[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99136,6 +101983,17 @@ const classtable_elt_t VFT_parser___ReduceAction57[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction57 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99202,14 +102060,14 @@ val_t NEW_ReduceAction57_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction57_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction57();
   INIT_ATTRIBUTES__parser___ReduceAction57(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99236,16 +102094,6 @@ const classtable_elt_t VFT_parser___ReduceAction58[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction58 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99253,8 +102101,7 @@ const classtable_elt_t VFT_parser___ReduceAction58[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99262,6 +102109,17 @@ const classtable_elt_t VFT_parser___ReduceAction58[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction58 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99328,14 +102186,14 @@ val_t NEW_ReduceAction58_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction58_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction58();
   INIT_ATTRIBUTES__parser___ReduceAction58(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99362,16 +102220,6 @@ const classtable_elt_t VFT_parser___ReduceAction59[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction59 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99379,8 +102227,7 @@ const classtable_elt_t VFT_parser___ReduceAction59[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99388,6 +102235,17 @@ const classtable_elt_t VFT_parser___ReduceAction59[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction59 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99454,14 +102312,14 @@ val_t NEW_ReduceAction59_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction59_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction59();
   INIT_ATTRIBUTES__parser___ReduceAction59(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99488,16 +102346,6 @@ const classtable_elt_t VFT_parser___ReduceAction60[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction60 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99505,8 +102353,7 @@ const classtable_elt_t VFT_parser___ReduceAction60[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99514,6 +102361,17 @@ const classtable_elt_t VFT_parser___ReduceAction60[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction60 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99580,14 +102438,14 @@ val_t NEW_ReduceAction60_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction60_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction60();
   INIT_ATTRIBUTES__parser___ReduceAction60(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99614,16 +102472,6 @@ const classtable_elt_t VFT_parser___ReduceAction61[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction61 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99631,8 +102479,7 @@ const classtable_elt_t VFT_parser___ReduceAction61[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99640,6 +102487,17 @@ const classtable_elt_t VFT_parser___ReduceAction61[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction61 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99706,14 +102564,14 @@ val_t NEW_ReduceAction61_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction61_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction61();
   INIT_ATTRIBUTES__parser___ReduceAction61(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99740,16 +102598,6 @@ const classtable_elt_t VFT_parser___ReduceAction62[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction62 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99757,8 +102605,7 @@ const classtable_elt_t VFT_parser___ReduceAction62[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99766,6 +102613,17 @@ const classtable_elt_t VFT_parser___ReduceAction62[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction62 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99832,14 +102690,14 @@ val_t NEW_ReduceAction62_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction62_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction62();
   INIT_ATTRIBUTES__parser___ReduceAction62(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99866,16 +102724,6 @@ const classtable_elt_t VFT_parser___ReduceAction63[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction63 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -99883,8 +102731,7 @@ const classtable_elt_t VFT_parser___ReduceAction63[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99892,6 +102739,17 @@ const classtable_elt_t VFT_parser___ReduceAction63[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction63 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -99958,14 +102816,14 @@ val_t NEW_ReduceAction63_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction63_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction63();
   INIT_ATTRIBUTES__parser___ReduceAction63(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -99992,16 +102850,6 @@ const classtable_elt_t VFT_parser___ReduceAction64[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction64 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100009,8 +102857,7 @@ const classtable_elt_t VFT_parser___ReduceAction64[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100018,6 +102865,17 @@ const classtable_elt_t VFT_parser___ReduceAction64[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction64 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100084,14 +102942,14 @@ val_t NEW_ReduceAction64_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction64_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction64();
   INIT_ATTRIBUTES__parser___ReduceAction64(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100118,16 +102976,6 @@ const classtable_elt_t VFT_parser___ReduceAction65[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction65 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100135,8 +102983,7 @@ const classtable_elt_t VFT_parser___ReduceAction65[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100144,6 +102991,17 @@ const classtable_elt_t VFT_parser___ReduceAction65[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction65 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100210,14 +103068,14 @@ val_t NEW_ReduceAction65_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction65_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction65();
   INIT_ATTRIBUTES__parser___ReduceAction65(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100244,16 +103102,6 @@ const classtable_elt_t VFT_parser___ReduceAction66[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction66 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100261,8 +103109,7 @@ const classtable_elt_t VFT_parser___ReduceAction66[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100270,6 +103117,17 @@ const classtable_elt_t VFT_parser___ReduceAction66[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction66 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100336,14 +103194,14 @@ val_t NEW_ReduceAction66_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction66_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction66();
   INIT_ATTRIBUTES__parser___ReduceAction66(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100370,16 +103228,6 @@ const classtable_elt_t VFT_parser___ReduceAction67[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction67 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100387,8 +103235,7 @@ const classtable_elt_t VFT_parser___ReduceAction67[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100396,6 +103243,17 @@ const classtable_elt_t VFT_parser___ReduceAction67[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction67 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100462,14 +103320,14 @@ val_t NEW_ReduceAction67_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction67_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction67();
   INIT_ATTRIBUTES__parser___ReduceAction67(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100496,16 +103354,6 @@ const classtable_elt_t VFT_parser___ReduceAction68[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction68 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100513,8 +103361,7 @@ const classtable_elt_t VFT_parser___ReduceAction68[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100522,6 +103369,17 @@ const classtable_elt_t VFT_parser___ReduceAction68[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction68 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100588,14 +103446,14 @@ val_t NEW_ReduceAction68_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction68_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction68();
   INIT_ATTRIBUTES__parser___ReduceAction68(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100622,16 +103480,6 @@ const classtable_elt_t VFT_parser___ReduceAction69[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction69 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100639,8 +103487,7 @@ const classtable_elt_t VFT_parser___ReduceAction69[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100648,6 +103495,17 @@ const classtable_elt_t VFT_parser___ReduceAction69[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction69 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100714,14 +103572,14 @@ val_t NEW_ReduceAction69_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction69_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction69();
   INIT_ATTRIBUTES__parser___ReduceAction69(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100748,16 +103606,6 @@ const classtable_elt_t VFT_parser___ReduceAction70[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction70 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100765,8 +103613,7 @@ const classtable_elt_t VFT_parser___ReduceAction70[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100774,6 +103621,17 @@ const classtable_elt_t VFT_parser___ReduceAction70[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction70 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100840,14 +103698,14 @@ val_t NEW_ReduceAction70_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction70_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction70();
   INIT_ATTRIBUTES__parser___ReduceAction70(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -100874,16 +103732,6 @@ const classtable_elt_t VFT_parser___ReduceAction71[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction71 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -100891,8 +103739,7 @@ const classtable_elt_t VFT_parser___ReduceAction71[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100900,6 +103747,17 @@ const classtable_elt_t VFT_parser___ReduceAction71[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction71 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -100966,14 +103824,14 @@ val_t NEW_ReduceAction71_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction71_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction71();
   INIT_ATTRIBUTES__parser___ReduceAction71(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101000,16 +103858,6 @@ const classtable_elt_t VFT_parser___ReduceAction73[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction73 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101017,8 +103865,7 @@ const classtable_elt_t VFT_parser___ReduceAction73[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101026,6 +103873,17 @@ const classtable_elt_t VFT_parser___ReduceAction73[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction73 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101092,14 +103950,14 @@ val_t NEW_ReduceAction73_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction73_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction73();
   INIT_ATTRIBUTES__parser___ReduceAction73(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101126,16 +103984,6 @@ const classtable_elt_t VFT_parser___ReduceAction74[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction74 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101143,8 +103991,7 @@ const classtable_elt_t VFT_parser___ReduceAction74[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101152,6 +103999,17 @@ const classtable_elt_t VFT_parser___ReduceAction74[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction74 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101218,14 +104076,14 @@ val_t NEW_ReduceAction74_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction74_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction74();
   INIT_ATTRIBUTES__parser___ReduceAction74(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101252,16 +104110,6 @@ const classtable_elt_t VFT_parser___ReduceAction75[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction75 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101269,8 +104117,7 @@ const classtable_elt_t VFT_parser___ReduceAction75[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101278,6 +104125,17 @@ const classtable_elt_t VFT_parser___ReduceAction75[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction75 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101344,14 +104202,14 @@ val_t NEW_ReduceAction75_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction75_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction75();
   INIT_ATTRIBUTES__parser___ReduceAction75(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101378,16 +104236,6 @@ const classtable_elt_t VFT_parser___ReduceAction76[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction76 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101395,8 +104243,7 @@ const classtable_elt_t VFT_parser___ReduceAction76[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101404,6 +104251,17 @@ const classtable_elt_t VFT_parser___ReduceAction76[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction76 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101470,14 +104328,14 @@ val_t NEW_ReduceAction76_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction76_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction76();
   INIT_ATTRIBUTES__parser___ReduceAction76(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101504,16 +104362,6 @@ const classtable_elt_t VFT_parser___ReduceAction77[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction77 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101521,8 +104369,7 @@ const classtable_elt_t VFT_parser___ReduceAction77[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101530,6 +104377,17 @@ const classtable_elt_t VFT_parser___ReduceAction77[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction77 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101596,14 +104454,14 @@ val_t NEW_ReduceAction77_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction77_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction77();
   INIT_ATTRIBUTES__parser___ReduceAction77(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101630,16 +104488,6 @@ const classtable_elt_t VFT_parser___ReduceAction78[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction78 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101647,8 +104495,7 @@ const classtable_elt_t VFT_parser___ReduceAction78[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101656,6 +104503,17 @@ const classtable_elt_t VFT_parser___ReduceAction78[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction78 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101722,14 +104580,14 @@ val_t NEW_ReduceAction78_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction78_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction78();
   INIT_ATTRIBUTES__parser___ReduceAction78(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101756,16 +104614,6 @@ const classtable_elt_t VFT_parser___ReduceAction79[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction79 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101773,8 +104621,7 @@ const classtable_elt_t VFT_parser___ReduceAction79[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101782,6 +104629,17 @@ const classtable_elt_t VFT_parser___ReduceAction79[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction79 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101848,14 +104706,14 @@ val_t NEW_ReduceAction79_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction79_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction79();
   INIT_ATTRIBUTES__parser___ReduceAction79(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -101882,16 +104740,6 @@ const classtable_elt_t VFT_parser___ReduceAction80[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction80 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -101899,8 +104747,7 @@ const classtable_elt_t VFT_parser___ReduceAction80[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101908,6 +104755,17 @@ const classtable_elt_t VFT_parser___ReduceAction80[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction80 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -101974,14 +104832,14 @@ val_t NEW_ReduceAction80_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction80_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction80();
   INIT_ATTRIBUTES__parser___ReduceAction80(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102008,16 +104866,6 @@ const classtable_elt_t VFT_parser___ReduceAction81[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction81 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102025,8 +104873,7 @@ const classtable_elt_t VFT_parser___ReduceAction81[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102034,6 +104881,17 @@ const classtable_elt_t VFT_parser___ReduceAction81[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction81 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102100,14 +104958,14 @@ val_t NEW_ReduceAction81_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction81_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction81();
   INIT_ATTRIBUTES__parser___ReduceAction81(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102134,16 +104992,6 @@ const classtable_elt_t VFT_parser___ReduceAction82[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction82 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102151,8 +104999,7 @@ const classtable_elt_t VFT_parser___ReduceAction82[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102160,6 +105007,17 @@ const classtable_elt_t VFT_parser___ReduceAction82[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction82 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102226,14 +105084,14 @@ val_t NEW_ReduceAction82_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction82_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction82();
   INIT_ATTRIBUTES__parser___ReduceAction82(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102260,16 +105118,6 @@ const classtable_elt_t VFT_parser___ReduceAction83[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction83 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102277,8 +105125,7 @@ const classtable_elt_t VFT_parser___ReduceAction83[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102286,6 +105133,17 @@ const classtable_elt_t VFT_parser___ReduceAction83[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction83 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102352,14 +105210,14 @@ val_t NEW_ReduceAction83_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction83_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction83();
   INIT_ATTRIBUTES__parser___ReduceAction83(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102386,16 +105244,6 @@ const classtable_elt_t VFT_parser___ReduceAction84[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction84 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102403,8 +105251,7 @@ const classtable_elt_t VFT_parser___ReduceAction84[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102412,6 +105259,17 @@ const classtable_elt_t VFT_parser___ReduceAction84[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction84 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102478,14 +105336,14 @@ val_t NEW_ReduceAction84_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction84_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction84();
   INIT_ATTRIBUTES__parser___ReduceAction84(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102512,16 +105370,6 @@ const classtable_elt_t VFT_parser___ReduceAction85[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction85 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102529,8 +105377,7 @@ const classtable_elt_t VFT_parser___ReduceAction85[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102538,6 +105385,17 @@ const classtable_elt_t VFT_parser___ReduceAction85[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction85 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102604,14 +105462,14 @@ val_t NEW_ReduceAction85_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction85_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction85();
   INIT_ATTRIBUTES__parser___ReduceAction85(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102638,16 +105496,6 @@ const classtable_elt_t VFT_parser___ReduceAction86[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction86 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102655,8 +105503,7 @@ const classtable_elt_t VFT_parser___ReduceAction86[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102664,6 +105511,17 @@ const classtable_elt_t VFT_parser___ReduceAction86[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction86 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102730,14 +105588,14 @@ val_t NEW_ReduceAction86_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction86_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction86();
   INIT_ATTRIBUTES__parser___ReduceAction86(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102764,16 +105622,6 @@ const classtable_elt_t VFT_parser___ReduceAction87[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction87 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102781,8 +105629,7 @@ const classtable_elt_t VFT_parser___ReduceAction87[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102790,6 +105637,17 @@ const classtable_elt_t VFT_parser___ReduceAction87[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction87 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102856,14 +105714,14 @@ val_t NEW_ReduceAction87_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction87_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction87();
   INIT_ATTRIBUTES__parser___ReduceAction87(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -102890,16 +105748,6 @@ const classtable_elt_t VFT_parser___ReduceAction88[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction88 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -102907,8 +105755,7 @@ const classtable_elt_t VFT_parser___ReduceAction88[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102916,6 +105763,17 @@ const classtable_elt_t VFT_parser___ReduceAction88[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction88 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -102982,14 +105840,14 @@ val_t NEW_ReduceAction88_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction88_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction88();
   INIT_ATTRIBUTES__parser___ReduceAction88(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103016,16 +105874,6 @@ const classtable_elt_t VFT_parser___ReduceAction89[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction89 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103033,8 +105881,7 @@ const classtable_elt_t VFT_parser___ReduceAction89[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103042,6 +105889,17 @@ const classtable_elt_t VFT_parser___ReduceAction89[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction89 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103108,14 +105966,14 @@ val_t NEW_ReduceAction89_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction89_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction89();
   INIT_ATTRIBUTES__parser___ReduceAction89(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103142,16 +106000,6 @@ const classtable_elt_t VFT_parser___ReduceAction90[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction90 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103159,8 +106007,7 @@ const classtable_elt_t VFT_parser___ReduceAction90[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103168,6 +106015,17 @@ const classtable_elt_t VFT_parser___ReduceAction90[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction90 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103234,14 +106092,14 @@ val_t NEW_ReduceAction90_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction90_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction90();
   INIT_ATTRIBUTES__parser___ReduceAction90(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103268,16 +106126,6 @@ const classtable_elt_t VFT_parser___ReduceAction91[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction91 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103285,8 +106133,7 @@ const classtable_elt_t VFT_parser___ReduceAction91[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103294,6 +106141,17 @@ const classtable_elt_t VFT_parser___ReduceAction91[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction91 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103360,14 +106218,14 @@ val_t NEW_ReduceAction91_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction91_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction91();
   INIT_ATTRIBUTES__parser___ReduceAction91(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103394,16 +106252,6 @@ const classtable_elt_t VFT_parser___ReduceAction92[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction92 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103411,8 +106259,7 @@ const classtable_elt_t VFT_parser___ReduceAction92[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103420,6 +106267,17 @@ const classtable_elt_t VFT_parser___ReduceAction92[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction92 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103486,14 +106344,14 @@ val_t NEW_ReduceAction92_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction92_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction92();
   INIT_ATTRIBUTES__parser___ReduceAction92(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103520,16 +106378,6 @@ const classtable_elt_t VFT_parser___ReduceAction93[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction93 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103537,8 +106385,7 @@ const classtable_elt_t VFT_parser___ReduceAction93[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103546,6 +106393,17 @@ const classtable_elt_t VFT_parser___ReduceAction93[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction93 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103612,14 +106470,14 @@ val_t NEW_ReduceAction93_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction93_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction93();
   INIT_ATTRIBUTES__parser___ReduceAction93(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103646,16 +106504,6 @@ const classtable_elt_t VFT_parser___ReduceAction94[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction94 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103663,8 +106511,7 @@ const classtable_elt_t VFT_parser___ReduceAction94[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103672,6 +106519,17 @@ const classtable_elt_t VFT_parser___ReduceAction94[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction94 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103738,14 +106596,14 @@ val_t NEW_ReduceAction94_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction94_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction94();
   INIT_ATTRIBUTES__parser___ReduceAction94(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103772,16 +106630,6 @@ const classtable_elt_t VFT_parser___ReduceAction95[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction95 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103789,8 +106637,7 @@ const classtable_elt_t VFT_parser___ReduceAction95[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103798,6 +106645,17 @@ const classtable_elt_t VFT_parser___ReduceAction95[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction95 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103864,14 +106722,14 @@ val_t NEW_ReduceAction95_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction95_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction95();
   INIT_ATTRIBUTES__parser___ReduceAction95(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -103898,16 +106756,6 @@ const classtable_elt_t VFT_parser___ReduceAction96[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction96 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -103915,8 +106763,7 @@ const classtable_elt_t VFT_parser___ReduceAction96[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103924,6 +106771,17 @@ const classtable_elt_t VFT_parser___ReduceAction96[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction96 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -103990,14 +106848,14 @@ val_t NEW_ReduceAction96_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction96_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction96();
   INIT_ATTRIBUTES__parser___ReduceAction96(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104024,16 +106882,6 @@ const classtable_elt_t VFT_parser___ReduceAction97[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction97 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104041,8 +106889,7 @@ const classtable_elt_t VFT_parser___ReduceAction97[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104050,6 +106897,17 @@ const classtable_elt_t VFT_parser___ReduceAction97[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction97 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104116,14 +106974,14 @@ val_t NEW_ReduceAction97_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction97_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction97();
   INIT_ATTRIBUTES__parser___ReduceAction97(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104150,16 +107008,6 @@ const classtable_elt_t VFT_parser___ReduceAction98[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction98 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104167,8 +107015,7 @@ const classtable_elt_t VFT_parser___ReduceAction98[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104176,6 +107023,17 @@ const classtable_elt_t VFT_parser___ReduceAction98[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction98 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104242,14 +107100,14 @@ val_t NEW_ReduceAction98_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction98_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction98();
   INIT_ATTRIBUTES__parser___ReduceAction98(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104276,16 +107134,6 @@ const classtable_elt_t VFT_parser___ReduceAction99[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction99 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104293,8 +107141,7 @@ const classtable_elt_t VFT_parser___ReduceAction99[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104302,6 +107149,17 @@ const classtable_elt_t VFT_parser___ReduceAction99[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction99 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104368,14 +107226,14 @@ val_t NEW_ReduceAction99_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction99_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction99();
   INIT_ATTRIBUTES__parser___ReduceAction99(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104402,16 +107260,6 @@ const classtable_elt_t VFT_parser___ReduceAction100[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction100 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104419,8 +107267,7 @@ const classtable_elt_t VFT_parser___ReduceAction100[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104428,6 +107275,17 @@ const classtable_elt_t VFT_parser___ReduceAction100[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction100 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104494,14 +107352,14 @@ val_t NEW_ReduceAction100_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction100_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction100();
   INIT_ATTRIBUTES__parser___ReduceAction100(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104528,16 +107386,6 @@ const classtable_elt_t VFT_parser___ReduceAction101[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction101 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104545,8 +107393,7 @@ const classtable_elt_t VFT_parser___ReduceAction101[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104554,6 +107401,17 @@ const classtable_elt_t VFT_parser___ReduceAction101[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction101 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104620,14 +107478,14 @@ val_t NEW_ReduceAction101_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction101_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction101();
   INIT_ATTRIBUTES__parser___ReduceAction101(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104654,16 +107512,6 @@ const classtable_elt_t VFT_parser___ReduceAction102[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction102 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104671,8 +107519,7 @@ const classtable_elt_t VFT_parser___ReduceAction102[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104680,6 +107527,17 @@ const classtable_elt_t VFT_parser___ReduceAction102[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction102 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104746,14 +107604,14 @@ val_t NEW_ReduceAction102_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction102_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction102();
   INIT_ATTRIBUTES__parser___ReduceAction102(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104780,16 +107638,6 @@ const classtable_elt_t VFT_parser___ReduceAction103[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction103 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104797,8 +107645,7 @@ const classtable_elt_t VFT_parser___ReduceAction103[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104806,6 +107653,17 @@ const classtable_elt_t VFT_parser___ReduceAction103[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction103 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104872,14 +107730,14 @@ val_t NEW_ReduceAction103_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction103_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction103();
   INIT_ATTRIBUTES__parser___ReduceAction103(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -104906,16 +107764,6 @@ const classtable_elt_t VFT_parser___ReduceAction104[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction104 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -104923,8 +107771,7 @@ const classtable_elt_t VFT_parser___ReduceAction104[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104932,6 +107779,17 @@ const classtable_elt_t VFT_parser___ReduceAction104[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction104 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -104998,14 +107856,14 @@ val_t NEW_ReduceAction104_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction104_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction104();
   INIT_ATTRIBUTES__parser___ReduceAction104(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105032,16 +107890,6 @@ const classtable_elt_t VFT_parser___ReduceAction105[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction105 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105049,8 +107897,7 @@ const classtable_elt_t VFT_parser___ReduceAction105[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105058,6 +107905,17 @@ const classtable_elt_t VFT_parser___ReduceAction105[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction105 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105124,14 +107982,14 @@ val_t NEW_ReduceAction105_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction105_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction105();
   INIT_ATTRIBUTES__parser___ReduceAction105(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105158,16 +108016,6 @@ const classtable_elt_t VFT_parser___ReduceAction106[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction106 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105175,8 +108023,7 @@ const classtable_elt_t VFT_parser___ReduceAction106[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105184,6 +108031,17 @@ const classtable_elt_t VFT_parser___ReduceAction106[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction106 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105250,14 +108108,14 @@ val_t NEW_ReduceAction106_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction106_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction106();
   INIT_ATTRIBUTES__parser___ReduceAction106(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105284,16 +108142,6 @@ const classtable_elt_t VFT_parser___ReduceAction107[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction107 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105301,8 +108149,7 @@ const classtable_elt_t VFT_parser___ReduceAction107[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105310,6 +108157,17 @@ const classtable_elt_t VFT_parser___ReduceAction107[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction107 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105376,14 +108234,14 @@ val_t NEW_ReduceAction107_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction107_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction107();
   INIT_ATTRIBUTES__parser___ReduceAction107(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105410,16 +108268,6 @@ const classtable_elt_t VFT_parser___ReduceAction108[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction108 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105427,8 +108275,7 @@ const classtable_elt_t VFT_parser___ReduceAction108[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105436,6 +108283,17 @@ const classtable_elt_t VFT_parser___ReduceAction108[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction108 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105502,14 +108360,14 @@ val_t NEW_ReduceAction108_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction108_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction108();
   INIT_ATTRIBUTES__parser___ReduceAction108(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105536,16 +108394,6 @@ const classtable_elt_t VFT_parser___ReduceAction109[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction109 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105553,8 +108401,7 @@ const classtable_elt_t VFT_parser___ReduceAction109[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105562,6 +108409,17 @@ const classtable_elt_t VFT_parser___ReduceAction109[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction109 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105628,14 +108486,14 @@ val_t NEW_ReduceAction109_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction109_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction109();
   INIT_ATTRIBUTES__parser___ReduceAction109(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105662,16 +108520,6 @@ const classtable_elt_t VFT_parser___ReduceAction110[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction110 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105679,8 +108527,7 @@ const classtable_elt_t VFT_parser___ReduceAction110[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105688,6 +108535,17 @@ const classtable_elt_t VFT_parser___ReduceAction110[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction110 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105754,14 +108612,14 @@ val_t NEW_ReduceAction110_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction110_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction110();
   INIT_ATTRIBUTES__parser___ReduceAction110(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105788,16 +108646,6 @@ const classtable_elt_t VFT_parser___ReduceAction111[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction111 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105805,8 +108653,7 @@ const classtable_elt_t VFT_parser___ReduceAction111[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105814,6 +108661,17 @@ const classtable_elt_t VFT_parser___ReduceAction111[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction111 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -105880,14 +108738,14 @@ val_t NEW_ReduceAction111_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction111_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction111();
   INIT_ATTRIBUTES__parser___ReduceAction111(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -105914,16 +108772,6 @@ const classtable_elt_t VFT_parser___ReduceAction112[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction112 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -105931,8 +108779,7 @@ const classtable_elt_t VFT_parser___ReduceAction112[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105940,6 +108787,17 @@ const classtable_elt_t VFT_parser___ReduceAction112[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction112 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106006,14 +108864,14 @@ val_t NEW_ReduceAction112_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction112_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction112();
   INIT_ATTRIBUTES__parser___ReduceAction112(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106040,16 +108898,6 @@ const classtable_elt_t VFT_parser___ReduceAction113[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction113 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106057,8 +108905,7 @@ const classtable_elt_t VFT_parser___ReduceAction113[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106066,6 +108913,17 @@ const classtable_elt_t VFT_parser___ReduceAction113[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction113 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106132,14 +108990,14 @@ val_t NEW_ReduceAction113_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction113_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction113();
   INIT_ATTRIBUTES__parser___ReduceAction113(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106166,16 +109024,6 @@ const classtable_elt_t VFT_parser___ReduceAction114[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction114 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106183,8 +109031,7 @@ const classtable_elt_t VFT_parser___ReduceAction114[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106192,6 +109039,17 @@ const classtable_elt_t VFT_parser___ReduceAction114[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction114 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106258,14 +109116,14 @@ val_t NEW_ReduceAction114_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction114_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction114();
   INIT_ATTRIBUTES__parser___ReduceAction114(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106292,16 +109150,6 @@ const classtable_elt_t VFT_parser___ReduceAction115[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction115 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106309,8 +109157,7 @@ const classtable_elt_t VFT_parser___ReduceAction115[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106318,6 +109165,17 @@ const classtable_elt_t VFT_parser___ReduceAction115[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction115 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106384,14 +109242,14 @@ val_t NEW_ReduceAction115_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction115_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction115();
   INIT_ATTRIBUTES__parser___ReduceAction115(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106418,16 +109276,6 @@ const classtable_elt_t VFT_parser___ReduceAction116[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction116 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106435,8 +109283,7 @@ const classtable_elt_t VFT_parser___ReduceAction116[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106444,6 +109291,17 @@ const classtable_elt_t VFT_parser___ReduceAction116[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction116 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106510,14 +109368,14 @@ val_t NEW_ReduceAction116_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction116_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction116();
   INIT_ATTRIBUTES__parser___ReduceAction116(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106544,16 +109402,6 @@ const classtable_elt_t VFT_parser___ReduceAction117[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction117 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106561,8 +109409,7 @@ const classtable_elt_t VFT_parser___ReduceAction117[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106570,6 +109417,17 @@ const classtable_elt_t VFT_parser___ReduceAction117[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction117 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106636,14 +109494,14 @@ val_t NEW_ReduceAction117_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction117_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction117();
   INIT_ATTRIBUTES__parser___ReduceAction117(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106670,16 +109528,6 @@ const classtable_elt_t VFT_parser___ReduceAction118[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction118 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106687,8 +109535,7 @@ const classtable_elt_t VFT_parser___ReduceAction118[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106696,6 +109543,17 @@ const classtable_elt_t VFT_parser___ReduceAction118[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction118 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106762,14 +109620,14 @@ val_t NEW_ReduceAction118_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction118_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction118();
   INIT_ATTRIBUTES__parser___ReduceAction118(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106796,16 +109654,6 @@ const classtable_elt_t VFT_parser___ReduceAction119[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction119 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106813,8 +109661,7 @@ const classtable_elt_t VFT_parser___ReduceAction119[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106822,6 +109669,17 @@ const classtable_elt_t VFT_parser___ReduceAction119[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction119 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -106888,14 +109746,14 @@ val_t NEW_ReduceAction119_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction119_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction119();
   INIT_ATTRIBUTES__parser___ReduceAction119(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -106922,16 +109780,6 @@ const classtable_elt_t VFT_parser___ReduceAction120[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction120 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -106939,8 +109787,7 @@ const classtable_elt_t VFT_parser___ReduceAction120[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106948,6 +109795,17 @@ const classtable_elt_t VFT_parser___ReduceAction120[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction120 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107014,14 +109872,14 @@ val_t NEW_ReduceAction120_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction120_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction120();
   INIT_ATTRIBUTES__parser___ReduceAction120(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107048,16 +109906,6 @@ const classtable_elt_t VFT_parser___ReduceAction121[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction121 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107065,8 +109913,7 @@ const classtable_elt_t VFT_parser___ReduceAction121[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107074,6 +109921,17 @@ const classtable_elt_t VFT_parser___ReduceAction121[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction121 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107140,14 +109998,14 @@ val_t NEW_ReduceAction121_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction121_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction121();
   INIT_ATTRIBUTES__parser___ReduceAction121(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107174,16 +110032,6 @@ const classtable_elt_t VFT_parser___ReduceAction122[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction122 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107191,8 +110039,7 @@ const classtable_elt_t VFT_parser___ReduceAction122[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107200,6 +110047,17 @@ const classtable_elt_t VFT_parser___ReduceAction122[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction122 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107266,14 +110124,14 @@ val_t NEW_ReduceAction122_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction122_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction122();
   INIT_ATTRIBUTES__parser___ReduceAction122(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107300,16 +110158,6 @@ const classtable_elt_t VFT_parser___ReduceAction123[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction123 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107317,8 +110165,7 @@ const classtable_elt_t VFT_parser___ReduceAction123[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107326,6 +110173,17 @@ const classtable_elt_t VFT_parser___ReduceAction123[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction123 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107392,14 +110250,14 @@ val_t NEW_ReduceAction123_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction123_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction123();
   INIT_ATTRIBUTES__parser___ReduceAction123(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107426,16 +110284,6 @@ const classtable_elt_t VFT_parser___ReduceAction124[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction124 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107443,8 +110291,7 @@ const classtable_elt_t VFT_parser___ReduceAction124[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107452,6 +110299,17 @@ const classtable_elt_t VFT_parser___ReduceAction124[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction124 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107518,14 +110376,14 @@ val_t NEW_ReduceAction124_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction124_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction124();
   INIT_ATTRIBUTES__parser___ReduceAction124(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107552,16 +110410,6 @@ const classtable_elt_t VFT_parser___ReduceAction125[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction125 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107569,8 +110417,7 @@ const classtable_elt_t VFT_parser___ReduceAction125[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107578,6 +110425,17 @@ const classtable_elt_t VFT_parser___ReduceAction125[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction125 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107644,14 +110502,14 @@ val_t NEW_ReduceAction125_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction125_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction125();
   INIT_ATTRIBUTES__parser___ReduceAction125(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107678,16 +110536,6 @@ const classtable_elt_t VFT_parser___ReduceAction126[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction126 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107695,8 +110543,7 @@ const classtable_elt_t VFT_parser___ReduceAction126[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107704,6 +110551,17 @@ const classtable_elt_t VFT_parser___ReduceAction126[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction126 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107770,14 +110628,14 @@ val_t NEW_ReduceAction126_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction126_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction126();
   INIT_ATTRIBUTES__parser___ReduceAction126(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107804,16 +110662,6 @@ const classtable_elt_t VFT_parser___ReduceAction127[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction127 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107821,8 +110669,7 @@ const classtable_elt_t VFT_parser___ReduceAction127[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107830,6 +110677,17 @@ const classtable_elt_t VFT_parser___ReduceAction127[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction127 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -107896,14 +110754,14 @@ val_t NEW_ReduceAction127_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction127_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction127();
   INIT_ATTRIBUTES__parser___ReduceAction127(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -107930,16 +110788,6 @@ const classtable_elt_t VFT_parser___ReduceAction128[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction128 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -107947,8 +110795,7 @@ const classtable_elt_t VFT_parser___ReduceAction128[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107956,6 +110803,17 @@ const classtable_elt_t VFT_parser___ReduceAction128[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction128 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108022,14 +110880,14 @@ val_t NEW_ReduceAction128_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction128_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction128();
   INIT_ATTRIBUTES__parser___ReduceAction128(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108056,16 +110914,6 @@ const classtable_elt_t VFT_parser___ReduceAction129[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction129 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108073,8 +110921,7 @@ const classtable_elt_t VFT_parser___ReduceAction129[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108082,6 +110929,17 @@ const classtable_elt_t VFT_parser___ReduceAction129[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction129 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108148,14 +111006,14 @@ val_t NEW_ReduceAction129_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction129_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction129();
   INIT_ATTRIBUTES__parser___ReduceAction129(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108182,16 +111040,6 @@ const classtable_elt_t VFT_parser___ReduceAction130[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction130 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108199,8 +111047,7 @@ const classtable_elt_t VFT_parser___ReduceAction130[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108208,6 +111055,17 @@ const classtable_elt_t VFT_parser___ReduceAction130[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction130 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108274,14 +111132,14 @@ val_t NEW_ReduceAction130_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction130_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction130();
   INIT_ATTRIBUTES__parser___ReduceAction130(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108308,16 +111166,6 @@ const classtable_elt_t VFT_parser___ReduceAction131[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction131 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108325,8 +111173,7 @@ const classtable_elt_t VFT_parser___ReduceAction131[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108334,6 +111181,17 @@ const classtable_elt_t VFT_parser___ReduceAction131[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction131 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108400,14 +111258,14 @@ val_t NEW_ReduceAction131_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction131_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction131();
   INIT_ATTRIBUTES__parser___ReduceAction131(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108434,16 +111292,6 @@ const classtable_elt_t VFT_parser___ReduceAction132[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction132 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108451,8 +111299,7 @@ const classtable_elt_t VFT_parser___ReduceAction132[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108460,6 +111307,17 @@ const classtable_elt_t VFT_parser___ReduceAction132[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction132 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108526,14 +111384,14 @@ val_t NEW_ReduceAction132_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction132_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction132();
   INIT_ATTRIBUTES__parser___ReduceAction132(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108560,16 +111418,6 @@ const classtable_elt_t VFT_parser___ReduceAction133[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction133 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108577,8 +111425,7 @@ const classtable_elt_t VFT_parser___ReduceAction133[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108586,6 +111433,17 @@ const classtable_elt_t VFT_parser___ReduceAction133[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction133 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108652,14 +111510,14 @@ val_t NEW_ReduceAction133_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction133_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction133();
   INIT_ATTRIBUTES__parser___ReduceAction133(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108686,16 +111544,6 @@ const classtable_elt_t VFT_parser___ReduceAction134[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction134 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108703,8 +111551,7 @@ const classtable_elt_t VFT_parser___ReduceAction134[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108712,6 +111559,17 @@ const classtable_elt_t VFT_parser___ReduceAction134[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction134 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108778,14 +111636,14 @@ val_t NEW_ReduceAction134_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction134_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction134();
   INIT_ATTRIBUTES__parser___ReduceAction134(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108812,16 +111670,6 @@ const classtable_elt_t VFT_parser___ReduceAction135[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction135 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108829,8 +111677,7 @@ const classtable_elt_t VFT_parser___ReduceAction135[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108838,6 +111685,17 @@ const classtable_elt_t VFT_parser___ReduceAction135[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction135 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -108904,14 +111762,14 @@ val_t NEW_ReduceAction135_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction135_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction135();
   INIT_ATTRIBUTES__parser___ReduceAction135(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -108938,16 +111796,6 @@ const classtable_elt_t VFT_parser___ReduceAction136[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction136 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -108955,8 +111803,7 @@ const classtable_elt_t VFT_parser___ReduceAction136[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108964,6 +111811,17 @@ const classtable_elt_t VFT_parser___ReduceAction136[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction136 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109030,14 +111888,14 @@ val_t NEW_ReduceAction136_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction136_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction136();
   INIT_ATTRIBUTES__parser___ReduceAction136(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109064,16 +111922,6 @@ const classtable_elt_t VFT_parser___ReduceAction137[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction137 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109081,8 +111929,7 @@ const classtable_elt_t VFT_parser___ReduceAction137[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109090,6 +111937,17 @@ const classtable_elt_t VFT_parser___ReduceAction137[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction137 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109156,14 +112014,14 @@ val_t NEW_ReduceAction137_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction137_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction137();
   INIT_ATTRIBUTES__parser___ReduceAction137(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109190,16 +112048,6 @@ const classtable_elt_t VFT_parser___ReduceAction138[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction138 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109207,8 +112055,7 @@ const classtable_elt_t VFT_parser___ReduceAction138[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109216,6 +112063,17 @@ const classtable_elt_t VFT_parser___ReduceAction138[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction138 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109282,14 +112140,14 @@ val_t NEW_ReduceAction138_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction138_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction138();
   INIT_ATTRIBUTES__parser___ReduceAction138(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109316,16 +112174,6 @@ const classtable_elt_t VFT_parser___ReduceAction139[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction139 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109333,8 +112181,7 @@ const classtable_elt_t VFT_parser___ReduceAction139[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109342,6 +112189,17 @@ const classtable_elt_t VFT_parser___ReduceAction139[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction139 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109408,14 +112266,14 @@ val_t NEW_ReduceAction139_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction139_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction139();
   INIT_ATTRIBUTES__parser___ReduceAction139(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109442,16 +112300,6 @@ const classtable_elt_t VFT_parser___ReduceAction140[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction140 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109459,8 +112307,7 @@ const classtable_elt_t VFT_parser___ReduceAction140[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109468,6 +112315,17 @@ const classtable_elt_t VFT_parser___ReduceAction140[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction140 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109534,14 +112392,14 @@ val_t NEW_ReduceAction140_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction140_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction140();
   INIT_ATTRIBUTES__parser___ReduceAction140(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109568,16 +112426,6 @@ const classtable_elt_t VFT_parser___ReduceAction141[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction141 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109585,8 +112433,7 @@ const classtable_elt_t VFT_parser___ReduceAction141[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109594,6 +112441,17 @@ const classtable_elt_t VFT_parser___ReduceAction141[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction141 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109660,14 +112518,14 @@ val_t NEW_ReduceAction141_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction141_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction141();
   INIT_ATTRIBUTES__parser___ReduceAction141(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109694,16 +112552,6 @@ const classtable_elt_t VFT_parser___ReduceAction142[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction142 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109711,8 +112559,7 @@ const classtable_elt_t VFT_parser___ReduceAction142[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109720,6 +112567,17 @@ const classtable_elt_t VFT_parser___ReduceAction142[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction142 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109786,14 +112644,14 @@ val_t NEW_ReduceAction142_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction142_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction142();
   INIT_ATTRIBUTES__parser___ReduceAction142(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109820,16 +112678,6 @@ const classtable_elt_t VFT_parser___ReduceAction143[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction143 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109837,8 +112685,7 @@ const classtable_elt_t VFT_parser___ReduceAction143[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109846,6 +112693,17 @@ const classtable_elt_t VFT_parser___ReduceAction143[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction143 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -109912,14 +112770,14 @@ val_t NEW_ReduceAction143_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction143_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction143();
   INIT_ATTRIBUTES__parser___ReduceAction143(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -109946,16 +112804,6 @@ const classtable_elt_t VFT_parser___ReduceAction144[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction144 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -109963,8 +112811,7 @@ const classtable_elt_t VFT_parser___ReduceAction144[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109972,6 +112819,17 @@ const classtable_elt_t VFT_parser___ReduceAction144[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction144 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110038,14 +112896,14 @@ val_t NEW_ReduceAction144_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction144_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction144();
   INIT_ATTRIBUTES__parser___ReduceAction144(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110072,16 +112930,6 @@ const classtable_elt_t VFT_parser___ReduceAction145[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction145 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110089,8 +112937,7 @@ const classtable_elt_t VFT_parser___ReduceAction145[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110098,6 +112945,17 @@ const classtable_elt_t VFT_parser___ReduceAction145[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction145 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110164,14 +113022,14 @@ val_t NEW_ReduceAction145_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction145_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction145();
   INIT_ATTRIBUTES__parser___ReduceAction145(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110198,16 +113056,6 @@ const classtable_elt_t VFT_parser___ReduceAction146[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction146 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110215,8 +113063,7 @@ const classtable_elt_t VFT_parser___ReduceAction146[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110224,6 +113071,17 @@ const classtable_elt_t VFT_parser___ReduceAction146[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction146 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110290,14 +113148,14 @@ val_t NEW_ReduceAction146_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction146_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction146();
   INIT_ATTRIBUTES__parser___ReduceAction146(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110324,16 +113182,6 @@ const classtable_elt_t VFT_parser___ReduceAction147[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction147 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110341,8 +113189,7 @@ const classtable_elt_t VFT_parser___ReduceAction147[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110350,6 +113197,17 @@ const classtable_elt_t VFT_parser___ReduceAction147[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction147 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110416,14 +113274,14 @@ val_t NEW_ReduceAction147_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction147_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction147();
   INIT_ATTRIBUTES__parser___ReduceAction147(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110450,16 +113308,6 @@ const classtable_elt_t VFT_parser___ReduceAction148[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction148 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110467,8 +113315,7 @@ const classtable_elt_t VFT_parser___ReduceAction148[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110476,6 +113323,17 @@ const classtable_elt_t VFT_parser___ReduceAction148[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction148 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110542,14 +113400,14 @@ val_t NEW_ReduceAction148_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction148_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction148();
   INIT_ATTRIBUTES__parser___ReduceAction148(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110576,16 +113434,6 @@ const classtable_elt_t VFT_parser___ReduceAction149[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction149 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110593,8 +113441,7 @@ const classtable_elt_t VFT_parser___ReduceAction149[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110602,6 +113449,17 @@ const classtable_elt_t VFT_parser___ReduceAction149[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction149 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110668,14 +113526,14 @@ val_t NEW_ReduceAction149_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction149_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction149();
   INIT_ATTRIBUTES__parser___ReduceAction149(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110702,16 +113560,6 @@ const classtable_elt_t VFT_parser___ReduceAction150[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction150 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110719,8 +113567,7 @@ const classtable_elt_t VFT_parser___ReduceAction150[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110728,6 +113575,17 @@ const classtable_elt_t VFT_parser___ReduceAction150[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction150 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110794,14 +113652,14 @@ val_t NEW_ReduceAction150_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction150_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction150();
   INIT_ATTRIBUTES__parser___ReduceAction150(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110828,16 +113686,6 @@ const classtable_elt_t VFT_parser___ReduceAction151[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction151 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110845,8 +113693,7 @@ const classtable_elt_t VFT_parser___ReduceAction151[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110854,6 +113701,17 @@ const classtable_elt_t VFT_parser___ReduceAction151[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction151 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -110920,14 +113778,14 @@ val_t NEW_ReduceAction151_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction151_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction151();
   INIT_ATTRIBUTES__parser___ReduceAction151(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -110954,16 +113812,6 @@ const classtable_elt_t VFT_parser___ReduceAction152[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction152 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -110971,8 +113819,7 @@ const classtable_elt_t VFT_parser___ReduceAction152[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110980,6 +113827,17 @@ const classtable_elt_t VFT_parser___ReduceAction152[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction152 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111046,14 +113904,14 @@ val_t NEW_ReduceAction152_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction152_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction152();
   INIT_ATTRIBUTES__parser___ReduceAction152(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111080,16 +113938,6 @@ const classtable_elt_t VFT_parser___ReduceAction153[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction153 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111097,8 +113945,7 @@ const classtable_elt_t VFT_parser___ReduceAction153[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111106,6 +113953,17 @@ const classtable_elt_t VFT_parser___ReduceAction153[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction153 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111172,14 +114030,14 @@ val_t NEW_ReduceAction153_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction153_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction153();
   INIT_ATTRIBUTES__parser___ReduceAction153(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111206,16 +114064,6 @@ const classtable_elt_t VFT_parser___ReduceAction154[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction154 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111223,8 +114071,7 @@ const classtable_elt_t VFT_parser___ReduceAction154[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111232,6 +114079,17 @@ const classtable_elt_t VFT_parser___ReduceAction154[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction154 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111298,14 +114156,14 @@ val_t NEW_ReduceAction154_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction154_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction154();
   INIT_ATTRIBUTES__parser___ReduceAction154(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111332,16 +114190,6 @@ const classtable_elt_t VFT_parser___ReduceAction155[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction155 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111349,8 +114197,7 @@ const classtable_elt_t VFT_parser___ReduceAction155[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111358,6 +114205,17 @@ const classtable_elt_t VFT_parser___ReduceAction155[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction155 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111424,14 +114282,14 @@ val_t NEW_ReduceAction155_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction155_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction155();
   INIT_ATTRIBUTES__parser___ReduceAction155(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111458,16 +114316,6 @@ const classtable_elt_t VFT_parser___ReduceAction156[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction156 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111475,8 +114323,7 @@ const classtable_elt_t VFT_parser___ReduceAction156[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111484,6 +114331,17 @@ const classtable_elt_t VFT_parser___ReduceAction156[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction156 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111550,14 +114408,14 @@ val_t NEW_ReduceAction156_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction156_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction156();
   INIT_ATTRIBUTES__parser___ReduceAction156(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111584,16 +114442,6 @@ const classtable_elt_t VFT_parser___ReduceAction157[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction157 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111601,8 +114449,7 @@ const classtable_elt_t VFT_parser___ReduceAction157[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111610,6 +114457,17 @@ const classtable_elt_t VFT_parser___ReduceAction157[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction157 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111676,14 +114534,14 @@ val_t NEW_ReduceAction157_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction157_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction157();
   INIT_ATTRIBUTES__parser___ReduceAction157(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111710,16 +114568,6 @@ const classtable_elt_t VFT_parser___ReduceAction158[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction158 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111727,8 +114575,7 @@ const classtable_elt_t VFT_parser___ReduceAction158[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111736,6 +114583,17 @@ const classtable_elt_t VFT_parser___ReduceAction158[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction158 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111802,14 +114660,14 @@ val_t NEW_ReduceAction158_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction158_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction158();
   INIT_ATTRIBUTES__parser___ReduceAction158(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111836,16 +114694,6 @@ const classtable_elt_t VFT_parser___ReduceAction159[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction159 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111853,8 +114701,7 @@ const classtable_elt_t VFT_parser___ReduceAction159[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111862,6 +114709,17 @@ const classtable_elt_t VFT_parser___ReduceAction159[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction159 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -111928,14 +114786,14 @@ val_t NEW_ReduceAction159_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction159_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction159();
   INIT_ATTRIBUTES__parser___ReduceAction159(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -111962,16 +114820,6 @@ const classtable_elt_t VFT_parser___ReduceAction160[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction160 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -111979,8 +114827,7 @@ const classtable_elt_t VFT_parser___ReduceAction160[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111988,6 +114835,17 @@ const classtable_elt_t VFT_parser___ReduceAction160[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction160 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112054,14 +114912,14 @@ val_t NEW_ReduceAction160_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction160_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction160();
   INIT_ATTRIBUTES__parser___ReduceAction160(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112088,16 +114946,6 @@ const classtable_elt_t VFT_parser___ReduceAction161[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction161 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112105,8 +114953,7 @@ const classtable_elt_t VFT_parser___ReduceAction161[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112114,6 +114961,17 @@ const classtable_elt_t VFT_parser___ReduceAction161[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction161 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112180,14 +115038,14 @@ val_t NEW_ReduceAction161_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction161_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction161();
   INIT_ATTRIBUTES__parser___ReduceAction161(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112214,16 +115072,6 @@ const classtable_elt_t VFT_parser___ReduceAction162[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction162 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112231,8 +115079,7 @@ const classtable_elt_t VFT_parser___ReduceAction162[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112240,6 +115087,17 @@ const classtable_elt_t VFT_parser___ReduceAction162[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction162 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112306,14 +115164,14 @@ val_t NEW_ReduceAction162_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction162_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction162();
   INIT_ATTRIBUTES__parser___ReduceAction162(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112340,16 +115198,6 @@ const classtable_elt_t VFT_parser___ReduceAction163[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction163 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112357,8 +115205,7 @@ const classtable_elt_t VFT_parser___ReduceAction163[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112366,6 +115213,17 @@ const classtable_elt_t VFT_parser___ReduceAction163[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction163 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112432,14 +115290,14 @@ val_t NEW_ReduceAction163_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction163_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction163();
   INIT_ATTRIBUTES__parser___ReduceAction163(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112466,16 +115324,6 @@ const classtable_elt_t VFT_parser___ReduceAction164[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction164 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112483,8 +115331,7 @@ const classtable_elt_t VFT_parser___ReduceAction164[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112492,6 +115339,17 @@ const classtable_elt_t VFT_parser___ReduceAction164[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction164 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112558,14 +115416,14 @@ val_t NEW_ReduceAction164_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction164_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction164();
   INIT_ATTRIBUTES__parser___ReduceAction164(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112592,16 +115450,6 @@ const classtable_elt_t VFT_parser___ReduceAction165[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction165 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112609,8 +115457,7 @@ const classtable_elt_t VFT_parser___ReduceAction165[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112618,6 +115465,17 @@ const classtable_elt_t VFT_parser___ReduceAction165[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction165 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112684,14 +115542,14 @@ val_t NEW_ReduceAction165_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction165_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction165();
   INIT_ATTRIBUTES__parser___ReduceAction165(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112718,16 +115576,6 @@ const classtable_elt_t VFT_parser___ReduceAction166[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction166 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112735,8 +115583,7 @@ const classtable_elt_t VFT_parser___ReduceAction166[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112744,6 +115591,17 @@ const classtable_elt_t VFT_parser___ReduceAction166[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction166 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112810,14 +115668,14 @@ val_t NEW_ReduceAction166_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction166_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction166();
   INIT_ATTRIBUTES__parser___ReduceAction166(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112844,16 +115702,6 @@ const classtable_elt_t VFT_parser___ReduceAction167[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction167 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112861,8 +115709,7 @@ const classtable_elt_t VFT_parser___ReduceAction167[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112870,6 +115717,17 @@ const classtable_elt_t VFT_parser___ReduceAction167[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction167 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -112936,14 +115794,14 @@ val_t NEW_ReduceAction167_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction167_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction167();
   INIT_ATTRIBUTES__parser___ReduceAction167(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -112970,16 +115828,6 @@ const classtable_elt_t VFT_parser___ReduceAction168[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction168 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -112987,8 +115835,7 @@ const classtable_elt_t VFT_parser___ReduceAction168[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112996,6 +115843,17 @@ const classtable_elt_t VFT_parser___ReduceAction168[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction168 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113062,14 +115920,14 @@ val_t NEW_ReduceAction168_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction168_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction168();
   INIT_ATTRIBUTES__parser___ReduceAction168(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113096,16 +115954,6 @@ const classtable_elt_t VFT_parser___ReduceAction169[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction169 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113113,8 +115961,7 @@ const classtable_elt_t VFT_parser___ReduceAction169[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113122,6 +115969,17 @@ const classtable_elt_t VFT_parser___ReduceAction169[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction169 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113188,14 +116046,14 @@ val_t NEW_ReduceAction169_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction169_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction169();
   INIT_ATTRIBUTES__parser___ReduceAction169(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113222,16 +116080,6 @@ const classtable_elt_t VFT_parser___ReduceAction170[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction170 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113239,8 +116087,7 @@ const classtable_elt_t VFT_parser___ReduceAction170[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113248,6 +116095,17 @@ const classtable_elt_t VFT_parser___ReduceAction170[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction170 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113314,14 +116172,14 @@ val_t NEW_ReduceAction170_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction170_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction170();
   INIT_ATTRIBUTES__parser___ReduceAction170(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113348,16 +116206,6 @@ const classtable_elt_t VFT_parser___ReduceAction171[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction171 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113365,8 +116213,7 @@ const classtable_elt_t VFT_parser___ReduceAction171[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113374,6 +116221,17 @@ const classtable_elt_t VFT_parser___ReduceAction171[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction171 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113440,14 +116298,14 @@ val_t NEW_ReduceAction171_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction171_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction171();
   INIT_ATTRIBUTES__parser___ReduceAction171(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113474,16 +116332,6 @@ const classtable_elt_t VFT_parser___ReduceAction172[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction172 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113491,8 +116339,7 @@ const classtable_elt_t VFT_parser___ReduceAction172[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113500,6 +116347,17 @@ const classtable_elt_t VFT_parser___ReduceAction172[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction172 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113566,14 +116424,14 @@ val_t NEW_ReduceAction172_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction172_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction172();
   INIT_ATTRIBUTES__parser___ReduceAction172(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113600,16 +116458,6 @@ const classtable_elt_t VFT_parser___ReduceAction173[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction173 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113617,8 +116465,7 @@ const classtable_elt_t VFT_parser___ReduceAction173[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113626,6 +116473,17 @@ const classtable_elt_t VFT_parser___ReduceAction173[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction173 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113692,14 +116550,14 @@ val_t NEW_ReduceAction173_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction173_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction173();
   INIT_ATTRIBUTES__parser___ReduceAction173(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113726,16 +116584,6 @@ const classtable_elt_t VFT_parser___ReduceAction174[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction174 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113743,8 +116591,7 @@ const classtable_elt_t VFT_parser___ReduceAction174[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113752,6 +116599,17 @@ const classtable_elt_t VFT_parser___ReduceAction174[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction174 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113818,14 +116676,14 @@ val_t NEW_ReduceAction174_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction174_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction174();
   INIT_ATTRIBUTES__parser___ReduceAction174(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113852,16 +116710,6 @@ const classtable_elt_t VFT_parser___ReduceAction175[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction175 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113869,8 +116717,7 @@ const classtable_elt_t VFT_parser___ReduceAction175[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113878,6 +116725,17 @@ const classtable_elt_t VFT_parser___ReduceAction175[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction175 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -113944,14 +116802,14 @@ val_t NEW_ReduceAction175_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction175_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction175();
   INIT_ATTRIBUTES__parser___ReduceAction175(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -113978,16 +116836,6 @@ const classtable_elt_t VFT_parser___ReduceAction176[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction176 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -113995,8 +116843,7 @@ const classtable_elt_t VFT_parser___ReduceAction176[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114004,6 +116851,17 @@ const classtable_elt_t VFT_parser___ReduceAction176[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction176 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114070,14 +116928,14 @@ val_t NEW_ReduceAction176_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction176_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction176();
   INIT_ATTRIBUTES__parser___ReduceAction176(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114104,16 +116962,6 @@ const classtable_elt_t VFT_parser___ReduceAction177[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction177 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114121,8 +116969,7 @@ const classtable_elt_t VFT_parser___ReduceAction177[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114130,6 +116977,17 @@ const classtable_elt_t VFT_parser___ReduceAction177[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction177 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114196,14 +117054,14 @@ val_t NEW_ReduceAction177_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction177_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction177();
   INIT_ATTRIBUTES__parser___ReduceAction177(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114230,16 +117088,6 @@ const classtable_elt_t VFT_parser___ReduceAction178[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction178 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114247,8 +117095,7 @@ const classtable_elt_t VFT_parser___ReduceAction178[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114256,6 +117103,17 @@ const classtable_elt_t VFT_parser___ReduceAction178[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction178 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114322,14 +117180,14 @@ val_t NEW_ReduceAction178_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction178_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction178();
   INIT_ATTRIBUTES__parser___ReduceAction178(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114356,16 +117214,6 @@ const classtable_elt_t VFT_parser___ReduceAction179[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction179 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114373,8 +117221,7 @@ const classtable_elt_t VFT_parser___ReduceAction179[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114382,6 +117229,17 @@ const classtable_elt_t VFT_parser___ReduceAction179[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction179 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114448,14 +117306,14 @@ val_t NEW_ReduceAction179_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction179_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction179();
   INIT_ATTRIBUTES__parser___ReduceAction179(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114482,16 +117340,6 @@ const classtable_elt_t VFT_parser___ReduceAction180[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction180 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114499,8 +117347,7 @@ const classtable_elt_t VFT_parser___ReduceAction180[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114508,6 +117355,17 @@ const classtable_elt_t VFT_parser___ReduceAction180[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction180 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114574,14 +117432,14 @@ val_t NEW_ReduceAction180_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction180_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction180();
   INIT_ATTRIBUTES__parser___ReduceAction180(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114608,16 +117466,6 @@ const classtable_elt_t VFT_parser___ReduceAction181[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction181 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114625,8 +117473,7 @@ const classtable_elt_t VFT_parser___ReduceAction181[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114634,6 +117481,17 @@ const classtable_elt_t VFT_parser___ReduceAction181[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction181 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114700,14 +117558,14 @@ val_t NEW_ReduceAction181_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction181_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction181();
   INIT_ATTRIBUTES__parser___ReduceAction181(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114734,16 +117592,6 @@ const classtable_elt_t VFT_parser___ReduceAction182[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction182 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114751,8 +117599,7 @@ const classtable_elt_t VFT_parser___ReduceAction182[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114760,6 +117607,17 @@ const classtable_elt_t VFT_parser___ReduceAction182[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction182 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114826,14 +117684,14 @@ val_t NEW_ReduceAction182_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction182_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction182();
   INIT_ATTRIBUTES__parser___ReduceAction182(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114860,16 +117718,6 @@ const classtable_elt_t VFT_parser___ReduceAction183[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction183 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -114877,8 +117725,7 @@ const classtable_elt_t VFT_parser___ReduceAction183[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114886,6 +117733,17 @@ const classtable_elt_t VFT_parser___ReduceAction183[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction183 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -114952,14 +117810,14 @@ val_t NEW_ReduceAction183_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction183_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction183();
   INIT_ATTRIBUTES__parser___ReduceAction183(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -114986,16 +117844,6 @@ const classtable_elt_t VFT_parser___ReduceAction184[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction184 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115003,8 +117851,7 @@ const classtable_elt_t VFT_parser___ReduceAction184[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115012,6 +117859,17 @@ const classtable_elt_t VFT_parser___ReduceAction184[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction184 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115078,14 +117936,14 @@ val_t NEW_ReduceAction184_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction184_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction184();
   INIT_ATTRIBUTES__parser___ReduceAction184(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115112,16 +117970,6 @@ const classtable_elt_t VFT_parser___ReduceAction185[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction185 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115129,8 +117977,7 @@ const classtable_elt_t VFT_parser___ReduceAction185[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115138,6 +117985,17 @@ const classtable_elt_t VFT_parser___ReduceAction185[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction185 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115204,14 +118062,14 @@ val_t NEW_ReduceAction185_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction185_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction185();
   INIT_ATTRIBUTES__parser___ReduceAction185(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115238,16 +118096,6 @@ const classtable_elt_t VFT_parser___ReduceAction186[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction186 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115255,8 +118103,7 @@ const classtable_elt_t VFT_parser___ReduceAction186[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115264,6 +118111,17 @@ const classtable_elt_t VFT_parser___ReduceAction186[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction186 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115330,14 +118188,14 @@ val_t NEW_ReduceAction186_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction186_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction186();
   INIT_ATTRIBUTES__parser___ReduceAction186(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115364,16 +118222,6 @@ const classtable_elt_t VFT_parser___ReduceAction187[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction187 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115381,8 +118229,7 @@ const classtable_elt_t VFT_parser___ReduceAction187[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115390,6 +118237,17 @@ const classtable_elt_t VFT_parser___ReduceAction187[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction187 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115456,14 +118314,14 @@ val_t NEW_ReduceAction187_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction187_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction187();
   INIT_ATTRIBUTES__parser___ReduceAction187(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115490,16 +118348,6 @@ const classtable_elt_t VFT_parser___ReduceAction188[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction188 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115507,8 +118355,7 @@ const classtable_elt_t VFT_parser___ReduceAction188[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115516,6 +118363,17 @@ const classtable_elt_t VFT_parser___ReduceAction188[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction188 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115582,14 +118440,14 @@ val_t NEW_ReduceAction188_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction188_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction188();
   INIT_ATTRIBUTES__parser___ReduceAction188(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115616,16 +118474,6 @@ const classtable_elt_t VFT_parser___ReduceAction189[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction189 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115633,8 +118481,7 @@ const classtable_elt_t VFT_parser___ReduceAction189[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115642,6 +118489,17 @@ const classtable_elt_t VFT_parser___ReduceAction189[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction189 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115708,14 +118566,14 @@ val_t NEW_ReduceAction189_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction189_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction189();
   INIT_ATTRIBUTES__parser___ReduceAction189(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115742,16 +118600,6 @@ const classtable_elt_t VFT_parser___ReduceAction190[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction190 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115759,8 +118607,7 @@ const classtable_elt_t VFT_parser___ReduceAction190[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115768,6 +118615,17 @@ const classtable_elt_t VFT_parser___ReduceAction190[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction190 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115834,14 +118692,14 @@ val_t NEW_ReduceAction190_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction190_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction190();
   INIT_ATTRIBUTES__parser___ReduceAction190(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115868,16 +118726,6 @@ const classtable_elt_t VFT_parser___ReduceAction191[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction191 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -115885,8 +118733,7 @@ const classtable_elt_t VFT_parser___ReduceAction191[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115894,6 +118741,17 @@ const classtable_elt_t VFT_parser___ReduceAction191[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction191 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -115960,14 +118818,14 @@ val_t NEW_ReduceAction191_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction191_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction191();
   INIT_ATTRIBUTES__parser___ReduceAction191(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -115994,16 +118852,6 @@ const classtable_elt_t VFT_parser___ReduceAction192[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction192 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116011,8 +118859,7 @@ const classtable_elt_t VFT_parser___ReduceAction192[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116020,6 +118867,17 @@ const classtable_elt_t VFT_parser___ReduceAction192[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction192 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116086,14 +118944,14 @@ val_t NEW_ReduceAction192_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction192_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction192();
   INIT_ATTRIBUTES__parser___ReduceAction192(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116120,16 +118978,6 @@ const classtable_elt_t VFT_parser___ReduceAction193[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction193 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116137,8 +118985,7 @@ const classtable_elt_t VFT_parser___ReduceAction193[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116146,6 +118993,17 @@ const classtable_elt_t VFT_parser___ReduceAction193[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction193 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116212,14 +119070,14 @@ val_t NEW_ReduceAction193_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction193_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction193();
   INIT_ATTRIBUTES__parser___ReduceAction193(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116246,16 +119104,6 @@ const classtable_elt_t VFT_parser___ReduceAction194[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction194 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116263,8 +119111,7 @@ const classtable_elt_t VFT_parser___ReduceAction194[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116272,6 +119119,17 @@ const classtable_elt_t VFT_parser___ReduceAction194[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction194 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116338,14 +119196,14 @@ val_t NEW_ReduceAction194_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction194_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction194();
   INIT_ATTRIBUTES__parser___ReduceAction194(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116372,16 +119230,6 @@ const classtable_elt_t VFT_parser___ReduceAction195[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction195 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116389,8 +119237,7 @@ const classtable_elt_t VFT_parser___ReduceAction195[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116398,6 +119245,17 @@ const classtable_elt_t VFT_parser___ReduceAction195[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction195 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116464,14 +119322,14 @@ val_t NEW_ReduceAction195_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction195_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction195();
   INIT_ATTRIBUTES__parser___ReduceAction195(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116498,16 +119356,6 @@ const classtable_elt_t VFT_parser___ReduceAction196[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction196 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116515,8 +119363,7 @@ const classtable_elt_t VFT_parser___ReduceAction196[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116524,6 +119371,17 @@ const classtable_elt_t VFT_parser___ReduceAction196[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction196 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116590,14 +119448,14 @@ val_t NEW_ReduceAction196_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction196_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction196();
   INIT_ATTRIBUTES__parser___ReduceAction196(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116624,16 +119482,6 @@ const classtable_elt_t VFT_parser___ReduceAction197[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction197 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116641,8 +119489,7 @@ const classtable_elt_t VFT_parser___ReduceAction197[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116650,6 +119497,17 @@ const classtable_elt_t VFT_parser___ReduceAction197[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction197 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116716,14 +119574,14 @@ val_t NEW_ReduceAction197_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction197_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction197();
   INIT_ATTRIBUTES__parser___ReduceAction197(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116750,16 +119608,6 @@ const classtable_elt_t VFT_parser___ReduceAction198[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction198 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116767,8 +119615,7 @@ const classtable_elt_t VFT_parser___ReduceAction198[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116776,6 +119623,17 @@ const classtable_elt_t VFT_parser___ReduceAction198[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction198 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116842,14 +119700,14 @@ val_t NEW_ReduceAction198_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction198_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction198();
   INIT_ATTRIBUTES__parser___ReduceAction198(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -116876,16 +119734,6 @@ const classtable_elt_t VFT_parser___ReduceAction199[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction199 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -116893,8 +119741,7 @@ const classtable_elt_t VFT_parser___ReduceAction199[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116902,6 +119749,17 @@ const classtable_elt_t VFT_parser___ReduceAction199[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction199 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -116968,14 +119826,14 @@ val_t NEW_ReduceAction199_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction199_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction199();
   INIT_ATTRIBUTES__parser___ReduceAction199(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117002,16 +119860,6 @@ const classtable_elt_t VFT_parser___ReduceAction200[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction200 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117019,8 +119867,7 @@ const classtable_elt_t VFT_parser___ReduceAction200[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117028,6 +119875,17 @@ const classtable_elt_t VFT_parser___ReduceAction200[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction200 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117094,14 +119952,14 @@ val_t NEW_ReduceAction200_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction200_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction200();
   INIT_ATTRIBUTES__parser___ReduceAction200(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117128,16 +119986,6 @@ const classtable_elt_t VFT_parser___ReduceAction201[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction201 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117145,8 +119993,7 @@ const classtable_elt_t VFT_parser___ReduceAction201[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117154,6 +120001,17 @@ const classtable_elt_t VFT_parser___ReduceAction201[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction201 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117220,14 +120078,14 @@ val_t NEW_ReduceAction201_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction201_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction201();
   INIT_ATTRIBUTES__parser___ReduceAction201(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117254,16 +120112,6 @@ const classtable_elt_t VFT_parser___ReduceAction202[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction202 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117271,8 +120119,7 @@ const classtable_elt_t VFT_parser___ReduceAction202[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117280,6 +120127,17 @@ const classtable_elt_t VFT_parser___ReduceAction202[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction202 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117346,14 +120204,14 @@ val_t NEW_ReduceAction202_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction202_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction202();
   INIT_ATTRIBUTES__parser___ReduceAction202(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117380,16 +120238,6 @@ const classtable_elt_t VFT_parser___ReduceAction203[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction203 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117397,8 +120245,7 @@ const classtable_elt_t VFT_parser___ReduceAction203[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117406,6 +120253,17 @@ const classtable_elt_t VFT_parser___ReduceAction203[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction203 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117472,14 +120330,14 @@ val_t NEW_ReduceAction203_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction203_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction203();
   INIT_ATTRIBUTES__parser___ReduceAction203(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117506,16 +120364,6 @@ const classtable_elt_t VFT_parser___ReduceAction204[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction204 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117523,8 +120371,7 @@ const classtable_elt_t VFT_parser___ReduceAction204[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117532,6 +120379,17 @@ const classtable_elt_t VFT_parser___ReduceAction204[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction204 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117598,14 +120456,14 @@ val_t NEW_ReduceAction204_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction204_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction204();
   INIT_ATTRIBUTES__parser___ReduceAction204(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117632,16 +120490,6 @@ const classtable_elt_t VFT_parser___ReduceAction205[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction205 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117649,8 +120497,7 @@ const classtable_elt_t VFT_parser___ReduceAction205[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117658,6 +120505,17 @@ const classtable_elt_t VFT_parser___ReduceAction205[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction205 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117724,14 +120582,14 @@ val_t NEW_ReduceAction205_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction205_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction205();
   INIT_ATTRIBUTES__parser___ReduceAction205(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117758,16 +120616,6 @@ const classtable_elt_t VFT_parser___ReduceAction206[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction206 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117775,8 +120623,7 @@ const classtable_elt_t VFT_parser___ReduceAction206[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117784,6 +120631,17 @@ const classtable_elt_t VFT_parser___ReduceAction206[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction206 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117850,14 +120708,14 @@ val_t NEW_ReduceAction206_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction206_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction206();
   INIT_ATTRIBUTES__parser___ReduceAction206(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -117884,16 +120742,6 @@ const classtable_elt_t VFT_parser___ReduceAction207[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction207 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -117901,8 +120749,7 @@ const classtable_elt_t VFT_parser___ReduceAction207[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117910,6 +120757,17 @@ const classtable_elt_t VFT_parser___ReduceAction207[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction207 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -117976,14 +120834,14 @@ val_t NEW_ReduceAction207_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction207_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction207();
   INIT_ATTRIBUTES__parser___ReduceAction207(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118010,16 +120868,6 @@ const classtable_elt_t VFT_parser___ReduceAction208[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction208 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118027,8 +120875,7 @@ const classtable_elt_t VFT_parser___ReduceAction208[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118036,6 +120883,17 @@ const classtable_elt_t VFT_parser___ReduceAction208[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction208 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118102,14 +120960,14 @@ val_t NEW_ReduceAction208_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction208_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction208();
   INIT_ATTRIBUTES__parser___ReduceAction208(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118136,16 +120994,6 @@ const classtable_elt_t VFT_parser___ReduceAction209[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction209 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118153,8 +121001,7 @@ const classtable_elt_t VFT_parser___ReduceAction209[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118162,6 +121009,17 @@ const classtable_elt_t VFT_parser___ReduceAction209[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction209 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118228,14 +121086,14 @@ val_t NEW_ReduceAction209_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction209_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction209();
   INIT_ATTRIBUTES__parser___ReduceAction209(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118262,16 +121120,6 @@ const classtable_elt_t VFT_parser___ReduceAction210[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction210 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118279,8 +121127,7 @@ const classtable_elt_t VFT_parser___ReduceAction210[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118288,6 +121135,17 @@ const classtable_elt_t VFT_parser___ReduceAction210[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction210 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118354,14 +121212,14 @@ val_t NEW_ReduceAction210_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction210_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction210();
   INIT_ATTRIBUTES__parser___ReduceAction210(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118388,16 +121246,6 @@ const classtable_elt_t VFT_parser___ReduceAction211[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction211 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118405,8 +121253,7 @@ const classtable_elt_t VFT_parser___ReduceAction211[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118414,6 +121261,17 @@ const classtable_elt_t VFT_parser___ReduceAction211[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction211 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118480,14 +121338,14 @@ val_t NEW_ReduceAction211_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction211_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction211();
   INIT_ATTRIBUTES__parser___ReduceAction211(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118514,16 +121372,6 @@ const classtable_elt_t VFT_parser___ReduceAction212[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction212 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118531,8 +121379,7 @@ const classtable_elt_t VFT_parser___ReduceAction212[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118540,6 +121387,17 @@ const classtable_elt_t VFT_parser___ReduceAction212[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction212 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118606,14 +121464,14 @@ val_t NEW_ReduceAction212_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction212_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction212();
   INIT_ATTRIBUTES__parser___ReduceAction212(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118640,16 +121498,6 @@ const classtable_elt_t VFT_parser___ReduceAction213[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction213 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118657,8 +121505,7 @@ const classtable_elt_t VFT_parser___ReduceAction213[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118666,6 +121513,17 @@ const classtable_elt_t VFT_parser___ReduceAction213[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction213 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118732,14 +121590,14 @@ val_t NEW_ReduceAction213_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction213_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction213();
   INIT_ATTRIBUTES__parser___ReduceAction213(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118766,16 +121624,6 @@ const classtable_elt_t VFT_parser___ReduceAction214[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction214 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118783,8 +121631,7 @@ const classtable_elt_t VFT_parser___ReduceAction214[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118792,6 +121639,17 @@ const classtable_elt_t VFT_parser___ReduceAction214[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction214 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118858,14 +121716,14 @@ val_t NEW_ReduceAction214_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction214_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction214();
   INIT_ATTRIBUTES__parser___ReduceAction214(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -118892,16 +121750,6 @@ const classtable_elt_t VFT_parser___ReduceAction215[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction215 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -118909,8 +121757,7 @@ const classtable_elt_t VFT_parser___ReduceAction215[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118918,6 +121765,17 @@ const classtable_elt_t VFT_parser___ReduceAction215[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction215 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -118984,14 +121842,14 @@ val_t NEW_ReduceAction215_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction215_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction215();
   INIT_ATTRIBUTES__parser___ReduceAction215(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119018,16 +121876,6 @@ const classtable_elt_t VFT_parser___ReduceAction216[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction216 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119035,8 +121883,7 @@ const classtable_elt_t VFT_parser___ReduceAction216[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119044,6 +121891,17 @@ const classtable_elt_t VFT_parser___ReduceAction216[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction216 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119110,14 +121968,14 @@ val_t NEW_ReduceAction216_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction216_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction216();
   INIT_ATTRIBUTES__parser___ReduceAction216(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119144,16 +122002,6 @@ const classtable_elt_t VFT_parser___ReduceAction217[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction217 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119161,8 +122009,7 @@ const classtable_elt_t VFT_parser___ReduceAction217[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119170,6 +122017,17 @@ const classtable_elt_t VFT_parser___ReduceAction217[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction217 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119236,14 +122094,14 @@ val_t NEW_ReduceAction217_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction217_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction217();
   INIT_ATTRIBUTES__parser___ReduceAction217(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119270,16 +122128,6 @@ const classtable_elt_t VFT_parser___ReduceAction218[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction218 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119287,8 +122135,7 @@ const classtable_elt_t VFT_parser___ReduceAction218[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119296,6 +122143,17 @@ const classtable_elt_t VFT_parser___ReduceAction218[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction218 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119362,14 +122220,14 @@ val_t NEW_ReduceAction218_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction218_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction218();
   INIT_ATTRIBUTES__parser___ReduceAction218(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119396,16 +122254,6 @@ const classtable_elt_t VFT_parser___ReduceAction219[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction219 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119413,8 +122261,7 @@ const classtable_elt_t VFT_parser___ReduceAction219[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119422,6 +122269,17 @@ const classtable_elt_t VFT_parser___ReduceAction219[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction219 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119488,14 +122346,14 @@ val_t NEW_ReduceAction219_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction219_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction219();
   INIT_ATTRIBUTES__parser___ReduceAction219(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119522,16 +122380,6 @@ const classtable_elt_t VFT_parser___ReduceAction220[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction220 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119539,8 +122387,7 @@ const classtable_elt_t VFT_parser___ReduceAction220[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119548,6 +122395,17 @@ const classtable_elt_t VFT_parser___ReduceAction220[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction220 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119614,14 +122472,14 @@ val_t NEW_ReduceAction220_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction220_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction220();
   INIT_ATTRIBUTES__parser___ReduceAction220(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119648,16 +122506,6 @@ const classtable_elt_t VFT_parser___ReduceAction221[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction221 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119665,8 +122513,7 @@ const classtable_elt_t VFT_parser___ReduceAction221[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119674,6 +122521,17 @@ const classtable_elt_t VFT_parser___ReduceAction221[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction221 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119740,14 +122598,14 @@ val_t NEW_ReduceAction221_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction221_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction221();
   INIT_ATTRIBUTES__parser___ReduceAction221(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119774,16 +122632,6 @@ const classtable_elt_t VFT_parser___ReduceAction222[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction222 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119791,8 +122639,7 @@ const classtable_elt_t VFT_parser___ReduceAction222[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119800,6 +122647,17 @@ const classtable_elt_t VFT_parser___ReduceAction222[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction222 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119866,14 +122724,14 @@ val_t NEW_ReduceAction222_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction222_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction222();
   INIT_ATTRIBUTES__parser___ReduceAction222(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -119900,16 +122758,6 @@ const classtable_elt_t VFT_parser___ReduceAction223[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction223 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -119917,8 +122765,7 @@ const classtable_elt_t VFT_parser___ReduceAction223[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119926,6 +122773,17 @@ const classtable_elt_t VFT_parser___ReduceAction223[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction223 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -119992,14 +122850,14 @@ val_t NEW_ReduceAction223_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction223_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction223();
   INIT_ATTRIBUTES__parser___ReduceAction223(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120026,16 +122884,6 @@ const classtable_elt_t VFT_parser___ReduceAction224[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction224 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120043,8 +122891,7 @@ const classtable_elt_t VFT_parser___ReduceAction224[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120052,6 +122899,17 @@ const classtable_elt_t VFT_parser___ReduceAction224[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction224 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120118,14 +122976,14 @@ val_t NEW_ReduceAction224_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction224_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction224();
   INIT_ATTRIBUTES__parser___ReduceAction224(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120152,16 +123010,6 @@ const classtable_elt_t VFT_parser___ReduceAction225[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction225 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120169,8 +123017,7 @@ const classtable_elt_t VFT_parser___ReduceAction225[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120178,6 +123025,17 @@ const classtable_elt_t VFT_parser___ReduceAction225[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction225 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120244,14 +123102,14 @@ val_t NEW_ReduceAction225_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction225_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction225();
   INIT_ATTRIBUTES__parser___ReduceAction225(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120278,16 +123136,6 @@ const classtable_elt_t VFT_parser___ReduceAction226[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction226 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120295,8 +123143,7 @@ const classtable_elt_t VFT_parser___ReduceAction226[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120304,6 +123151,17 @@ const classtable_elt_t VFT_parser___ReduceAction226[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction226 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120370,14 +123228,14 @@ val_t NEW_ReduceAction226_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction226_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction226();
   INIT_ATTRIBUTES__parser___ReduceAction226(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120404,16 +123262,6 @@ const classtable_elt_t VFT_parser___ReduceAction227[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction227 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120421,8 +123269,7 @@ const classtable_elt_t VFT_parser___ReduceAction227[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120430,6 +123277,17 @@ const classtable_elt_t VFT_parser___ReduceAction227[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction227 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120496,14 +123354,14 @@ val_t NEW_ReduceAction227_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction227_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction227();
   INIT_ATTRIBUTES__parser___ReduceAction227(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120530,16 +123388,6 @@ const classtable_elt_t VFT_parser___ReduceAction228[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction228 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120547,8 +123395,7 @@ const classtable_elt_t VFT_parser___ReduceAction228[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120556,6 +123403,17 @@ const classtable_elt_t VFT_parser___ReduceAction228[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction228 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120622,14 +123480,14 @@ val_t NEW_ReduceAction228_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction228_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction228();
   INIT_ATTRIBUTES__parser___ReduceAction228(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120656,16 +123514,6 @@ const classtable_elt_t VFT_parser___ReduceAction229[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction229 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120673,8 +123521,7 @@ const classtable_elt_t VFT_parser___ReduceAction229[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120682,6 +123529,17 @@ const classtable_elt_t VFT_parser___ReduceAction229[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction229 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120748,14 +123606,14 @@ val_t NEW_ReduceAction229_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction229_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction229();
   INIT_ATTRIBUTES__parser___ReduceAction229(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120782,16 +123640,6 @@ const classtable_elt_t VFT_parser___ReduceAction230[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction230 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120799,8 +123647,7 @@ const classtable_elt_t VFT_parser___ReduceAction230[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120808,6 +123655,17 @@ const classtable_elt_t VFT_parser___ReduceAction230[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction230 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -120874,14 +123732,14 @@ val_t NEW_ReduceAction230_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction230_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction230();
   INIT_ATTRIBUTES__parser___ReduceAction230(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -120908,16 +123766,6 @@ const classtable_elt_t VFT_parser___ReduceAction231[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction231 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -120925,8 +123773,7 @@ const classtable_elt_t VFT_parser___ReduceAction231[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120934,6 +123781,17 @@ const classtable_elt_t VFT_parser___ReduceAction231[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction231 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121000,14 +123858,14 @@ val_t NEW_ReduceAction231_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction231_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction231();
   INIT_ATTRIBUTES__parser___ReduceAction231(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121034,16 +123892,6 @@ const classtable_elt_t VFT_parser___ReduceAction232[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction232 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121051,8 +123899,7 @@ const classtable_elt_t VFT_parser___ReduceAction232[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121060,6 +123907,17 @@ const classtable_elt_t VFT_parser___ReduceAction232[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction232 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121126,14 +123984,14 @@ val_t NEW_ReduceAction232_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction232_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction232();
   INIT_ATTRIBUTES__parser___ReduceAction232(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121160,16 +124018,6 @@ const classtable_elt_t VFT_parser___ReduceAction233[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction233 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121177,8 +124025,7 @@ const classtable_elt_t VFT_parser___ReduceAction233[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121186,6 +124033,17 @@ const classtable_elt_t VFT_parser___ReduceAction233[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction233 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121252,14 +124110,14 @@ val_t NEW_ReduceAction233_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction233_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction233();
   INIT_ATTRIBUTES__parser___ReduceAction233(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121286,16 +124144,6 @@ const classtable_elt_t VFT_parser___ReduceAction234[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction234 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121303,8 +124151,7 @@ const classtable_elt_t VFT_parser___ReduceAction234[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121312,6 +124159,17 @@ const classtable_elt_t VFT_parser___ReduceAction234[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction234 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121378,14 +124236,14 @@ val_t NEW_ReduceAction234_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction234_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction234();
   INIT_ATTRIBUTES__parser___ReduceAction234(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121412,16 +124270,6 @@ const classtable_elt_t VFT_parser___ReduceAction235[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction235 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121429,8 +124277,7 @@ const classtable_elt_t VFT_parser___ReduceAction235[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121438,6 +124285,17 @@ const classtable_elt_t VFT_parser___ReduceAction235[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction235 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121504,14 +124362,14 @@ val_t NEW_ReduceAction235_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction235_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction235();
   INIT_ATTRIBUTES__parser___ReduceAction235(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121538,16 +124396,6 @@ const classtable_elt_t VFT_parser___ReduceAction236[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction236 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121555,8 +124403,7 @@ const classtable_elt_t VFT_parser___ReduceAction236[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121564,6 +124411,17 @@ const classtable_elt_t VFT_parser___ReduceAction236[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction236 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121630,14 +124488,14 @@ val_t NEW_ReduceAction236_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction236_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction236();
   INIT_ATTRIBUTES__parser___ReduceAction236(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121664,16 +124522,6 @@ const classtable_elt_t VFT_parser___ReduceAction237[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction237 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121681,8 +124529,7 @@ const classtable_elt_t VFT_parser___ReduceAction237[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121690,6 +124537,17 @@ const classtable_elt_t VFT_parser___ReduceAction237[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction237 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121756,14 +124614,14 @@ val_t NEW_ReduceAction237_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction237_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction237();
   INIT_ATTRIBUTES__parser___ReduceAction237(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121790,16 +124648,6 @@ const classtable_elt_t VFT_parser___ReduceAction238[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction238 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121807,8 +124655,7 @@ const classtable_elt_t VFT_parser___ReduceAction238[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121816,6 +124663,17 @@ const classtable_elt_t VFT_parser___ReduceAction238[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction238 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -121882,14 +124740,14 @@ val_t NEW_ReduceAction238_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction238_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction238();
   INIT_ATTRIBUTES__parser___ReduceAction238(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -121916,16 +124774,6 @@ const classtable_elt_t VFT_parser___ReduceAction239[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction239 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -121933,8 +124781,7 @@ const classtable_elt_t VFT_parser___ReduceAction239[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121942,6 +124789,17 @@ const classtable_elt_t VFT_parser___ReduceAction239[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction239 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122008,14 +124866,14 @@ val_t NEW_ReduceAction239_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction239_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction239();
   INIT_ATTRIBUTES__parser___ReduceAction239(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122042,16 +124900,6 @@ const classtable_elt_t VFT_parser___ReduceAction240[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction240 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122059,8 +124907,7 @@ const classtable_elt_t VFT_parser___ReduceAction240[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122068,6 +124915,17 @@ const classtable_elt_t VFT_parser___ReduceAction240[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction240 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122134,14 +124992,14 @@ val_t NEW_ReduceAction240_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction240_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction240();
   INIT_ATTRIBUTES__parser___ReduceAction240(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122168,16 +125026,6 @@ const classtable_elt_t VFT_parser___ReduceAction241[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction241 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122185,8 +125033,7 @@ const classtable_elt_t VFT_parser___ReduceAction241[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122194,6 +125041,17 @@ const classtable_elt_t VFT_parser___ReduceAction241[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction241 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122260,14 +125118,14 @@ val_t NEW_ReduceAction241_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction241_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction241();
   INIT_ATTRIBUTES__parser___ReduceAction241(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122294,16 +125152,6 @@ const classtable_elt_t VFT_parser___ReduceAction242[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction242 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122311,8 +125159,7 @@ const classtable_elt_t VFT_parser___ReduceAction242[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122320,6 +125167,17 @@ const classtable_elt_t VFT_parser___ReduceAction242[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction242 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122386,14 +125244,14 @@ val_t NEW_ReduceAction242_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction242_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction242();
   INIT_ATTRIBUTES__parser___ReduceAction242(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122420,16 +125278,6 @@ const classtable_elt_t VFT_parser___ReduceAction243[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction243 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122437,8 +125285,7 @@ const classtable_elt_t VFT_parser___ReduceAction243[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122446,6 +125293,17 @@ const classtable_elt_t VFT_parser___ReduceAction243[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction243 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122512,14 +125370,14 @@ val_t NEW_ReduceAction243_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction243_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction243();
   INIT_ATTRIBUTES__parser___ReduceAction243(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122546,16 +125404,6 @@ const classtable_elt_t VFT_parser___ReduceAction244[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction244 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122563,8 +125411,7 @@ const classtable_elt_t VFT_parser___ReduceAction244[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122572,6 +125419,17 @@ const classtable_elt_t VFT_parser___ReduceAction244[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction244 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122638,14 +125496,14 @@ val_t NEW_ReduceAction244_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction244_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction244();
   INIT_ATTRIBUTES__parser___ReduceAction244(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122672,16 +125530,6 @@ const classtable_elt_t VFT_parser___ReduceAction245[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction245 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122689,8 +125537,7 @@ const classtable_elt_t VFT_parser___ReduceAction245[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122698,6 +125545,17 @@ const classtable_elt_t VFT_parser___ReduceAction245[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction245 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122764,14 +125622,14 @@ val_t NEW_ReduceAction245_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction245_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction245();
   INIT_ATTRIBUTES__parser___ReduceAction245(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122798,16 +125656,6 @@ const classtable_elt_t VFT_parser___ReduceAction246[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction246 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122815,8 +125663,7 @@ const classtable_elt_t VFT_parser___ReduceAction246[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122824,6 +125671,17 @@ const classtable_elt_t VFT_parser___ReduceAction246[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction246 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -122890,14 +125748,14 @@ val_t NEW_ReduceAction246_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction246_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction246();
   INIT_ATTRIBUTES__parser___ReduceAction246(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -122924,16 +125782,6 @@ const classtable_elt_t VFT_parser___ReduceAction247[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction247 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -122941,8 +125789,7 @@ const classtable_elt_t VFT_parser___ReduceAction247[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122950,6 +125797,17 @@ const classtable_elt_t VFT_parser___ReduceAction247[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction247 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123016,14 +125874,14 @@ val_t NEW_ReduceAction247_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction247_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction247();
   INIT_ATTRIBUTES__parser___ReduceAction247(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123050,16 +125908,6 @@ const classtable_elt_t VFT_parser___ReduceAction248[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction248 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123067,8 +125915,7 @@ const classtable_elt_t VFT_parser___ReduceAction248[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123076,6 +125923,17 @@ const classtable_elt_t VFT_parser___ReduceAction248[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction248 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123142,14 +126000,14 @@ val_t NEW_ReduceAction248_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction248_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction248();
   INIT_ATTRIBUTES__parser___ReduceAction248(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123176,16 +126034,6 @@ const classtable_elt_t VFT_parser___ReduceAction249[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction249 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123193,8 +126041,7 @@ const classtable_elt_t VFT_parser___ReduceAction249[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123202,6 +126049,17 @@ const classtable_elt_t VFT_parser___ReduceAction249[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction249 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123268,14 +126126,14 @@ val_t NEW_ReduceAction249_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction249_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction249();
   INIT_ATTRIBUTES__parser___ReduceAction249(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123302,16 +126160,6 @@ const classtable_elt_t VFT_parser___ReduceAction250[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction250 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123319,8 +126167,7 @@ const classtable_elt_t VFT_parser___ReduceAction250[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123328,6 +126175,17 @@ const classtable_elt_t VFT_parser___ReduceAction250[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction250 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123394,14 +126252,14 @@ val_t NEW_ReduceAction250_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction250_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction250();
   INIT_ATTRIBUTES__parser___ReduceAction250(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123428,16 +126286,6 @@ const classtable_elt_t VFT_parser___ReduceAction251[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction251 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123445,8 +126293,7 @@ const classtable_elt_t VFT_parser___ReduceAction251[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123454,6 +126301,17 @@ const classtable_elt_t VFT_parser___ReduceAction251[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction251 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123520,14 +126378,14 @@ val_t NEW_ReduceAction251_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction251_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction251();
   INIT_ATTRIBUTES__parser___ReduceAction251(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123554,16 +126412,6 @@ const classtable_elt_t VFT_parser___ReduceAction252[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction252 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123571,8 +126419,7 @@ const classtable_elt_t VFT_parser___ReduceAction252[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123580,6 +126427,17 @@ const classtable_elt_t VFT_parser___ReduceAction252[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction252 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123646,14 +126504,14 @@ val_t NEW_ReduceAction252_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction252_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction252();
   INIT_ATTRIBUTES__parser___ReduceAction252(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123680,16 +126538,6 @@ const classtable_elt_t VFT_parser___ReduceAction253[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction253 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123697,8 +126545,7 @@ const classtable_elt_t VFT_parser___ReduceAction253[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123706,6 +126553,17 @@ const classtable_elt_t VFT_parser___ReduceAction253[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction253 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123772,14 +126630,14 @@ val_t NEW_ReduceAction253_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction253_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction253();
   INIT_ATTRIBUTES__parser___ReduceAction253(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123806,16 +126664,6 @@ const classtable_elt_t VFT_parser___ReduceAction254[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction254 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123823,8 +126671,7 @@ const classtable_elt_t VFT_parser___ReduceAction254[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123832,6 +126679,17 @@ const classtable_elt_t VFT_parser___ReduceAction254[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction254 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -123898,14 +126756,14 @@ val_t NEW_ReduceAction254_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction254_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction254();
   INIT_ATTRIBUTES__parser___ReduceAction254(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -123932,16 +126790,6 @@ const classtable_elt_t VFT_parser___ReduceAction255[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction255 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -123949,8 +126797,7 @@ const classtable_elt_t VFT_parser___ReduceAction255[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123958,6 +126805,17 @@ const classtable_elt_t VFT_parser___ReduceAction255[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction255 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124024,14 +126882,14 @@ val_t NEW_ReduceAction255_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction255_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction255();
   INIT_ATTRIBUTES__parser___ReduceAction255(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124058,16 +126916,6 @@ const classtable_elt_t VFT_parser___ReduceAction256[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction256 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124075,8 +126923,7 @@ const classtable_elt_t VFT_parser___ReduceAction256[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124084,6 +126931,17 @@ const classtable_elt_t VFT_parser___ReduceAction256[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction256 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124150,14 +127008,14 @@ val_t NEW_ReduceAction256_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction256_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction256();
   INIT_ATTRIBUTES__parser___ReduceAction256(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124184,16 +127042,6 @@ const classtable_elt_t VFT_parser___ReduceAction257[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction257 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124201,8 +127049,7 @@ const classtable_elt_t VFT_parser___ReduceAction257[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124210,6 +127057,17 @@ const classtable_elt_t VFT_parser___ReduceAction257[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction257 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124276,14 +127134,14 @@ val_t NEW_ReduceAction257_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction257_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction257();
   INIT_ATTRIBUTES__parser___ReduceAction257(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124310,16 +127168,6 @@ const classtable_elt_t VFT_parser___ReduceAction258[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction258 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124327,8 +127175,7 @@ const classtable_elt_t VFT_parser___ReduceAction258[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124336,6 +127183,17 @@ const classtable_elt_t VFT_parser___ReduceAction258[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction258 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124402,14 +127260,14 @@ val_t NEW_ReduceAction258_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction258_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction258();
   INIT_ATTRIBUTES__parser___ReduceAction258(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124436,16 +127294,6 @@ const classtable_elt_t VFT_parser___ReduceAction259[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction259 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124453,8 +127301,7 @@ const classtable_elt_t VFT_parser___ReduceAction259[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124462,6 +127309,17 @@ const classtable_elt_t VFT_parser___ReduceAction259[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction259 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124528,14 +127386,14 @@ val_t NEW_ReduceAction259_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction259_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction259();
   INIT_ATTRIBUTES__parser___ReduceAction259(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124562,16 +127420,6 @@ const classtable_elt_t VFT_parser___ReduceAction260[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction260 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124579,8 +127427,7 @@ const classtable_elt_t VFT_parser___ReduceAction260[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124588,6 +127435,17 @@ const classtable_elt_t VFT_parser___ReduceAction260[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction260 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124654,14 +127512,14 @@ val_t NEW_ReduceAction260_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction260_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction260();
   INIT_ATTRIBUTES__parser___ReduceAction260(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124688,16 +127546,6 @@ const classtable_elt_t VFT_parser___ReduceAction261[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction261 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124705,8 +127553,7 @@ const classtable_elt_t VFT_parser___ReduceAction261[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124714,6 +127561,17 @@ const classtable_elt_t VFT_parser___ReduceAction261[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction261 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124780,14 +127638,14 @@ val_t NEW_ReduceAction261_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction261_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction261();
   INIT_ATTRIBUTES__parser___ReduceAction261(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124814,16 +127672,6 @@ const classtable_elt_t VFT_parser___ReduceAction262[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction262 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124831,8 +127679,7 @@ const classtable_elt_t VFT_parser___ReduceAction262[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124840,6 +127687,17 @@ const classtable_elt_t VFT_parser___ReduceAction262[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction262 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -124906,14 +127764,14 @@ val_t NEW_ReduceAction262_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction262_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction262();
   INIT_ATTRIBUTES__parser___ReduceAction262(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -124940,16 +127798,6 @@ const classtable_elt_t VFT_parser___ReduceAction263[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction263 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -124957,8 +127805,7 @@ const classtable_elt_t VFT_parser___ReduceAction263[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124966,6 +127813,17 @@ const classtable_elt_t VFT_parser___ReduceAction263[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction263 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125032,14 +127890,14 @@ val_t NEW_ReduceAction263_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction263_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction263();
   INIT_ATTRIBUTES__parser___ReduceAction263(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125066,16 +127924,6 @@ const classtable_elt_t VFT_parser___ReduceAction264[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction264 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125083,8 +127931,7 @@ const classtable_elt_t VFT_parser___ReduceAction264[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125092,6 +127939,17 @@ const classtable_elt_t VFT_parser___ReduceAction264[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction264 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125158,14 +128016,14 @@ val_t NEW_ReduceAction264_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction264_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction264();
   INIT_ATTRIBUTES__parser___ReduceAction264(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125192,16 +128050,6 @@ const classtable_elt_t VFT_parser___ReduceAction265[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction265 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125209,8 +128057,7 @@ const classtable_elt_t VFT_parser___ReduceAction265[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125218,6 +128065,17 @@ const classtable_elt_t VFT_parser___ReduceAction265[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction265 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125284,14 +128142,14 @@ val_t NEW_ReduceAction265_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction265_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction265();
   INIT_ATTRIBUTES__parser___ReduceAction265(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125318,16 +128176,6 @@ const classtable_elt_t VFT_parser___ReduceAction266[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction266 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125335,8 +128183,7 @@ const classtable_elt_t VFT_parser___ReduceAction266[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125344,6 +128191,17 @@ const classtable_elt_t VFT_parser___ReduceAction266[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction266 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125410,14 +128268,14 @@ val_t NEW_ReduceAction266_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction266_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction266();
   INIT_ATTRIBUTES__parser___ReduceAction266(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125444,16 +128302,6 @@ const classtable_elt_t VFT_parser___ReduceAction267[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction267 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125461,8 +128309,7 @@ const classtable_elt_t VFT_parser___ReduceAction267[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125470,6 +128317,17 @@ const classtable_elt_t VFT_parser___ReduceAction267[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction267 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125536,14 +128394,14 @@ val_t NEW_ReduceAction267_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction267_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction267();
   INIT_ATTRIBUTES__parser___ReduceAction267(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125570,16 +128428,6 @@ const classtable_elt_t VFT_parser___ReduceAction268[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction268 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125587,8 +128435,7 @@ const classtable_elt_t VFT_parser___ReduceAction268[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125596,6 +128443,17 @@ const classtable_elt_t VFT_parser___ReduceAction268[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction268 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125662,14 +128520,14 @@ val_t NEW_ReduceAction268_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction268_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction268();
   INIT_ATTRIBUTES__parser___ReduceAction268(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125696,16 +128554,6 @@ const classtable_elt_t VFT_parser___ReduceAction269[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction269 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125713,8 +128561,7 @@ const classtable_elt_t VFT_parser___ReduceAction269[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125722,6 +128569,17 @@ const classtable_elt_t VFT_parser___ReduceAction269[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction269 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125788,14 +128646,14 @@ val_t NEW_ReduceAction269_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction269_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction269();
   INIT_ATTRIBUTES__parser___ReduceAction269(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125822,16 +128680,6 @@ const classtable_elt_t VFT_parser___ReduceAction270[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction270 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125839,8 +128687,7 @@ const classtable_elt_t VFT_parser___ReduceAction270[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125848,6 +128695,17 @@ const classtable_elt_t VFT_parser___ReduceAction270[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction270 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -125914,14 +128772,14 @@ val_t NEW_ReduceAction270_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction270_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction270();
   INIT_ATTRIBUTES__parser___ReduceAction270(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -125948,16 +128806,6 @@ const classtable_elt_t VFT_parser___ReduceAction271[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction271 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -125965,8 +128813,7 @@ const classtable_elt_t VFT_parser___ReduceAction271[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125974,6 +128821,17 @@ const classtable_elt_t VFT_parser___ReduceAction271[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction271 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126040,14 +128898,14 @@ val_t NEW_ReduceAction271_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction271_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction271();
   INIT_ATTRIBUTES__parser___ReduceAction271(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126074,16 +128932,6 @@ const classtable_elt_t VFT_parser___ReduceAction272[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction272 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126091,8 +128939,7 @@ const classtable_elt_t VFT_parser___ReduceAction272[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126100,6 +128947,17 @@ const classtable_elt_t VFT_parser___ReduceAction272[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction272 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126166,14 +129024,14 @@ val_t NEW_ReduceAction272_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction272_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction272();
   INIT_ATTRIBUTES__parser___ReduceAction272(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126200,16 +129058,6 @@ const classtable_elt_t VFT_parser___ReduceAction273[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction273 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126217,8 +129065,7 @@ const classtable_elt_t VFT_parser___ReduceAction273[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126226,6 +129073,17 @@ const classtable_elt_t VFT_parser___ReduceAction273[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction273 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126292,14 +129150,14 @@ val_t NEW_ReduceAction273_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction273_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction273();
   INIT_ATTRIBUTES__parser___ReduceAction273(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126326,16 +129184,6 @@ const classtable_elt_t VFT_parser___ReduceAction274[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction274 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126343,8 +129191,7 @@ const classtable_elt_t VFT_parser___ReduceAction274[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126352,6 +129199,17 @@ const classtable_elt_t VFT_parser___ReduceAction274[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction274 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126418,14 +129276,14 @@ val_t NEW_ReduceAction274_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction274_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction274();
   INIT_ATTRIBUTES__parser___ReduceAction274(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126452,16 +129310,6 @@ const classtable_elt_t VFT_parser___ReduceAction275[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction275 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126469,8 +129317,7 @@ const classtable_elt_t VFT_parser___ReduceAction275[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126478,6 +129325,17 @@ const classtable_elt_t VFT_parser___ReduceAction275[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction275 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126544,14 +129402,14 @@ val_t NEW_ReduceAction275_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction275_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction275();
   INIT_ATTRIBUTES__parser___ReduceAction275(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126578,16 +129436,6 @@ const classtable_elt_t VFT_parser___ReduceAction276[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction276 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126595,8 +129443,7 @@ const classtable_elt_t VFT_parser___ReduceAction276[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126604,6 +129451,17 @@ const classtable_elt_t VFT_parser___ReduceAction276[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction276 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126670,14 +129528,14 @@ val_t NEW_ReduceAction276_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction276_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction276();
   INIT_ATTRIBUTES__parser___ReduceAction276(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126704,16 +129562,6 @@ const classtable_elt_t VFT_parser___ReduceAction277[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction277 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126721,8 +129569,7 @@ const classtable_elt_t VFT_parser___ReduceAction277[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126730,6 +129577,17 @@ const classtable_elt_t VFT_parser___ReduceAction277[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction277 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126796,14 +129654,14 @@ val_t NEW_ReduceAction277_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction277_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction277();
   INIT_ATTRIBUTES__parser___ReduceAction277(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126830,16 +129688,6 @@ const classtable_elt_t VFT_parser___ReduceAction278[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction278 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126847,8 +129695,7 @@ const classtable_elt_t VFT_parser___ReduceAction278[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126856,6 +129703,17 @@ const classtable_elt_t VFT_parser___ReduceAction278[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction278 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -126922,14 +129780,14 @@ val_t NEW_ReduceAction278_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction278_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction278();
   INIT_ATTRIBUTES__parser___ReduceAction278(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -126956,16 +129814,6 @@ const classtable_elt_t VFT_parser___ReduceAction279[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction279 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -126973,8 +129821,7 @@ const classtable_elt_t VFT_parser___ReduceAction279[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126982,6 +129829,17 @@ const classtable_elt_t VFT_parser___ReduceAction279[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction279 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127048,14 +129906,14 @@ val_t NEW_ReduceAction279_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction279_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction279();
   INIT_ATTRIBUTES__parser___ReduceAction279(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127082,16 +129940,6 @@ const classtable_elt_t VFT_parser___ReduceAction280[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction280 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127099,8 +129947,7 @@ const classtable_elt_t VFT_parser___ReduceAction280[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127108,6 +129955,17 @@ const classtable_elt_t VFT_parser___ReduceAction280[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction280 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127174,14 +130032,14 @@ val_t NEW_ReduceAction280_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction280_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction280();
   INIT_ATTRIBUTES__parser___ReduceAction280(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127208,16 +130066,6 @@ const classtable_elt_t VFT_parser___ReduceAction281[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction281 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127225,8 +130073,7 @@ const classtable_elt_t VFT_parser___ReduceAction281[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127234,6 +130081,17 @@ const classtable_elt_t VFT_parser___ReduceAction281[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction281 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127300,14 +130158,14 @@ val_t NEW_ReduceAction281_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction281_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction281();
   INIT_ATTRIBUTES__parser___ReduceAction281(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127334,16 +130192,6 @@ const classtable_elt_t VFT_parser___ReduceAction282[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction282 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127351,8 +130199,7 @@ const classtable_elt_t VFT_parser___ReduceAction282[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127360,6 +130207,17 @@ const classtable_elt_t VFT_parser___ReduceAction282[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction282 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127426,14 +130284,14 @@ val_t NEW_ReduceAction282_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction282_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction282();
   INIT_ATTRIBUTES__parser___ReduceAction282(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127460,16 +130318,6 @@ const classtable_elt_t VFT_parser___ReduceAction283[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction283 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127477,8 +130325,7 @@ const classtable_elt_t VFT_parser___ReduceAction283[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127486,6 +130333,17 @@ const classtable_elt_t VFT_parser___ReduceAction283[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction283 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127552,14 +130410,14 @@ val_t NEW_ReduceAction283_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction283_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction283();
   INIT_ATTRIBUTES__parser___ReduceAction283(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127586,16 +130444,6 @@ const classtable_elt_t VFT_parser___ReduceAction284[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction284 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127603,8 +130451,7 @@ const classtable_elt_t VFT_parser___ReduceAction284[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127612,6 +130459,17 @@ const classtable_elt_t VFT_parser___ReduceAction284[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction284 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127678,14 +130536,14 @@ val_t NEW_ReduceAction284_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction284_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction284();
   INIT_ATTRIBUTES__parser___ReduceAction284(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127712,16 +130570,6 @@ const classtable_elt_t VFT_parser___ReduceAction285[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction285 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127729,8 +130577,7 @@ const classtable_elt_t VFT_parser___ReduceAction285[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127738,6 +130585,17 @@ const classtable_elt_t VFT_parser___ReduceAction285[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction285 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127804,14 +130662,14 @@ val_t NEW_ReduceAction285_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction285_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction285();
   INIT_ATTRIBUTES__parser___ReduceAction285(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127838,16 +130696,6 @@ const classtable_elt_t VFT_parser___ReduceAction286[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction286 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127855,8 +130703,7 @@ const classtable_elt_t VFT_parser___ReduceAction286[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127864,6 +130711,17 @@ const classtable_elt_t VFT_parser___ReduceAction286[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction286 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -127930,14 +130788,14 @@ val_t NEW_ReduceAction286_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction286_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction286();
   INIT_ATTRIBUTES__parser___ReduceAction286(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -127964,16 +130822,6 @@ const classtable_elt_t VFT_parser___ReduceAction287[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction287 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -127981,8 +130829,7 @@ const classtable_elt_t VFT_parser___ReduceAction287[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127990,6 +130837,17 @@ const classtable_elt_t VFT_parser___ReduceAction287[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction287 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128056,14 +130914,14 @@ val_t NEW_ReduceAction287_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction287_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction287();
   INIT_ATTRIBUTES__parser___ReduceAction287(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128090,16 +130948,6 @@ const classtable_elt_t VFT_parser___ReduceAction288[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction288 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128107,8 +130955,7 @@ const classtable_elt_t VFT_parser___ReduceAction288[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128116,6 +130963,17 @@ const classtable_elt_t VFT_parser___ReduceAction288[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction288 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128182,14 +131040,14 @@ val_t NEW_ReduceAction288_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction288_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction288();
   INIT_ATTRIBUTES__parser___ReduceAction288(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128216,16 +131074,6 @@ const classtable_elt_t VFT_parser___ReduceAction289[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction289 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128233,8 +131081,7 @@ const classtable_elt_t VFT_parser___ReduceAction289[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128242,6 +131089,17 @@ const classtable_elt_t VFT_parser___ReduceAction289[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction289 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128308,14 +131166,14 @@ val_t NEW_ReduceAction289_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction289_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction289();
   INIT_ATTRIBUTES__parser___ReduceAction289(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128342,16 +131200,6 @@ const classtable_elt_t VFT_parser___ReduceAction290[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction290 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128359,8 +131207,7 @@ const classtable_elt_t VFT_parser___ReduceAction290[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128368,6 +131215,17 @@ const classtable_elt_t VFT_parser___ReduceAction290[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction290 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128434,14 +131292,14 @@ val_t NEW_ReduceAction290_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction290_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction290();
   INIT_ATTRIBUTES__parser___ReduceAction290(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128468,16 +131326,6 @@ const classtable_elt_t VFT_parser___ReduceAction291[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction291 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128485,8 +131333,7 @@ const classtable_elt_t VFT_parser___ReduceAction291[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128494,6 +131341,17 @@ const classtable_elt_t VFT_parser___ReduceAction291[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction291 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128560,14 +131418,14 @@ val_t NEW_ReduceAction291_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction291_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction291();
   INIT_ATTRIBUTES__parser___ReduceAction291(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128594,16 +131452,6 @@ const classtable_elt_t VFT_parser___ReduceAction292[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction292 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128611,8 +131459,7 @@ const classtable_elt_t VFT_parser___ReduceAction292[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128620,6 +131467,17 @@ const classtable_elt_t VFT_parser___ReduceAction292[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction292 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128686,14 +131544,14 @@ val_t NEW_ReduceAction292_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction292_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction292();
   INIT_ATTRIBUTES__parser___ReduceAction292(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128720,16 +131578,6 @@ const classtable_elt_t VFT_parser___ReduceAction293[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction293 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128737,8 +131585,7 @@ const classtable_elt_t VFT_parser___ReduceAction293[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128746,6 +131593,17 @@ const classtable_elt_t VFT_parser___ReduceAction293[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction293 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128812,14 +131670,14 @@ val_t NEW_ReduceAction293_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction293_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction293();
   INIT_ATTRIBUTES__parser___ReduceAction293(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128846,16 +131704,6 @@ const classtable_elt_t VFT_parser___ReduceAction294[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction294 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128863,8 +131711,7 @@ const classtable_elt_t VFT_parser___ReduceAction294[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128872,6 +131719,17 @@ const classtable_elt_t VFT_parser___ReduceAction294[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction294 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -128938,14 +131796,14 @@ val_t NEW_ReduceAction294_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction294_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction294();
   INIT_ATTRIBUTES__parser___ReduceAction294(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -128972,16 +131830,6 @@ const classtable_elt_t VFT_parser___ReduceAction295[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction295 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -128989,8 +131837,7 @@ const classtable_elt_t VFT_parser___ReduceAction295[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128998,6 +131845,17 @@ const classtable_elt_t VFT_parser___ReduceAction295[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction295 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129064,14 +131922,14 @@ val_t NEW_ReduceAction295_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction295_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction295();
   INIT_ATTRIBUTES__parser___ReduceAction295(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129098,16 +131956,6 @@ const classtable_elt_t VFT_parser___ReduceAction296[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction296 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129115,8 +131963,7 @@ const classtable_elt_t VFT_parser___ReduceAction296[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129124,6 +131971,17 @@ const classtable_elt_t VFT_parser___ReduceAction296[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction296 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129190,14 +132048,14 @@ val_t NEW_ReduceAction296_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction296_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction296();
   INIT_ATTRIBUTES__parser___ReduceAction296(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129224,16 +132082,6 @@ const classtable_elt_t VFT_parser___ReduceAction297[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction297 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129241,8 +132089,7 @@ const classtable_elt_t VFT_parser___ReduceAction297[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129250,6 +132097,17 @@ const classtable_elt_t VFT_parser___ReduceAction297[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction297 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129316,14 +132174,14 @@ val_t NEW_ReduceAction297_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction297_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction297();
   INIT_ATTRIBUTES__parser___ReduceAction297(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129350,16 +132208,6 @@ const classtable_elt_t VFT_parser___ReduceAction298[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction298 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129367,8 +132215,7 @@ const classtable_elt_t VFT_parser___ReduceAction298[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129376,6 +132223,17 @@ const classtable_elt_t VFT_parser___ReduceAction298[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction298 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129442,14 +132300,14 @@ val_t NEW_ReduceAction298_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction298_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction298();
   INIT_ATTRIBUTES__parser___ReduceAction298(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129476,16 +132334,6 @@ const classtable_elt_t VFT_parser___ReduceAction299[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction299 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129493,8 +132341,7 @@ const classtable_elt_t VFT_parser___ReduceAction299[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129502,6 +132349,17 @@ const classtable_elt_t VFT_parser___ReduceAction299[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction299 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129568,14 +132426,14 @@ val_t NEW_ReduceAction299_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction299_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction299();
   INIT_ATTRIBUTES__parser___ReduceAction299(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129602,16 +132460,6 @@ const classtable_elt_t VFT_parser___ReduceAction300[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction300 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129619,8 +132467,7 @@ const classtable_elt_t VFT_parser___ReduceAction300[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129628,6 +132475,17 @@ const classtable_elt_t VFT_parser___ReduceAction300[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction300 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129694,14 +132552,14 @@ val_t NEW_ReduceAction300_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction300_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction300();
   INIT_ATTRIBUTES__parser___ReduceAction300(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129728,16 +132586,6 @@ const classtable_elt_t VFT_parser___ReduceAction301[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction301 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129745,8 +132593,7 @@ const classtable_elt_t VFT_parser___ReduceAction301[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129754,6 +132601,17 @@ const classtable_elt_t VFT_parser___ReduceAction301[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction301 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129820,14 +132678,14 @@ val_t NEW_ReduceAction301_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction301_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction301();
   INIT_ATTRIBUTES__parser___ReduceAction301(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129854,16 +132712,6 @@ const classtable_elt_t VFT_parser___ReduceAction302[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction302 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129871,8 +132719,7 @@ const classtable_elt_t VFT_parser___ReduceAction302[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129880,6 +132727,17 @@ const classtable_elt_t VFT_parser___ReduceAction302[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction302 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -129946,14 +132804,14 @@ val_t NEW_ReduceAction302_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction302_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction302();
   INIT_ATTRIBUTES__parser___ReduceAction302(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -129980,16 +132838,6 @@ const classtable_elt_t VFT_parser___ReduceAction303[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction303 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -129997,8 +132845,7 @@ const classtable_elt_t VFT_parser___ReduceAction303[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130006,6 +132853,17 @@ const classtable_elt_t VFT_parser___ReduceAction303[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction303 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130072,14 +132930,14 @@ val_t NEW_ReduceAction303_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction303_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction303();
   INIT_ATTRIBUTES__parser___ReduceAction303(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130106,16 +132964,6 @@ const classtable_elt_t VFT_parser___ReduceAction304[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction304 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130123,8 +132971,7 @@ const classtable_elt_t VFT_parser___ReduceAction304[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130132,6 +132979,17 @@ const classtable_elt_t VFT_parser___ReduceAction304[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction304 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130198,14 +133056,14 @@ val_t NEW_ReduceAction304_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction304_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction304();
   INIT_ATTRIBUTES__parser___ReduceAction304(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130232,16 +133090,6 @@ const classtable_elt_t VFT_parser___ReduceAction305[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction305 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130249,8 +133097,7 @@ const classtable_elt_t VFT_parser___ReduceAction305[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130258,6 +133105,17 @@ const classtable_elt_t VFT_parser___ReduceAction305[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction305 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130324,14 +133182,14 @@ val_t NEW_ReduceAction305_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction305_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction305();
   INIT_ATTRIBUTES__parser___ReduceAction305(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130358,16 +133216,6 @@ const classtable_elt_t VFT_parser___ReduceAction306[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction306 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130375,8 +133223,7 @@ const classtable_elt_t VFT_parser___ReduceAction306[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130384,6 +133231,17 @@ const classtable_elt_t VFT_parser___ReduceAction306[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction306 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130450,14 +133308,14 @@ val_t NEW_ReduceAction306_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction306_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction306();
   INIT_ATTRIBUTES__parser___ReduceAction306(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130484,16 +133342,6 @@ const classtable_elt_t VFT_parser___ReduceAction307[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction307 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130501,8 +133349,7 @@ const classtable_elt_t VFT_parser___ReduceAction307[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130510,6 +133357,17 @@ const classtable_elt_t VFT_parser___ReduceAction307[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction307 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130576,14 +133434,14 @@ val_t NEW_ReduceAction307_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction307_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction307();
   INIT_ATTRIBUTES__parser___ReduceAction307(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130610,16 +133468,6 @@ const classtable_elt_t VFT_parser___ReduceAction308[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction308 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130627,8 +133475,7 @@ const classtable_elt_t VFT_parser___ReduceAction308[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130636,6 +133483,17 @@ const classtable_elt_t VFT_parser___ReduceAction308[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction308 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130702,14 +133560,14 @@ val_t NEW_ReduceAction308_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction308_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction308();
   INIT_ATTRIBUTES__parser___ReduceAction308(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130736,16 +133594,6 @@ const classtable_elt_t VFT_parser___ReduceAction309[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction309 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130753,8 +133601,7 @@ const classtable_elt_t VFT_parser___ReduceAction309[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130762,6 +133609,17 @@ const classtable_elt_t VFT_parser___ReduceAction309[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction309 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130828,14 +133686,14 @@ val_t NEW_ReduceAction309_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction309_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction309();
   INIT_ATTRIBUTES__parser___ReduceAction309(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130862,16 +133720,6 @@ const classtable_elt_t VFT_parser___ReduceAction310[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction310 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -130879,8 +133727,7 @@ const classtable_elt_t VFT_parser___ReduceAction310[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130888,6 +133735,17 @@ const classtable_elt_t VFT_parser___ReduceAction310[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction310 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -130954,14 +133812,14 @@ val_t NEW_ReduceAction310_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction310_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction310();
   INIT_ATTRIBUTES__parser___ReduceAction310(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -130988,16 +133846,6 @@ const classtable_elt_t VFT_parser___ReduceAction311[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction311 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131005,8 +133853,7 @@ const classtable_elt_t VFT_parser___ReduceAction311[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131014,6 +133861,17 @@ const classtable_elt_t VFT_parser___ReduceAction311[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction311 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131080,14 +133938,14 @@ val_t NEW_ReduceAction311_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction311_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction311();
   INIT_ATTRIBUTES__parser___ReduceAction311(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131114,16 +133972,6 @@ const classtable_elt_t VFT_parser___ReduceAction312[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction312 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131131,8 +133979,7 @@ const classtable_elt_t VFT_parser___ReduceAction312[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131140,6 +133987,17 @@ const classtable_elt_t VFT_parser___ReduceAction312[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction312 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131206,14 +134064,14 @@ val_t NEW_ReduceAction312_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction312_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction312();
   INIT_ATTRIBUTES__parser___ReduceAction312(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131240,16 +134098,6 @@ const classtable_elt_t VFT_parser___ReduceAction313[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction313 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131257,8 +134105,7 @@ const classtable_elt_t VFT_parser___ReduceAction313[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131266,6 +134113,17 @@ const classtable_elt_t VFT_parser___ReduceAction313[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction313 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131332,14 +134190,14 @@ val_t NEW_ReduceAction313_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction313_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction313();
   INIT_ATTRIBUTES__parser___ReduceAction313(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131366,16 +134224,6 @@ const classtable_elt_t VFT_parser___ReduceAction314[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction314 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131383,8 +134231,7 @@ const classtable_elt_t VFT_parser___ReduceAction314[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131392,6 +134239,17 @@ const classtable_elt_t VFT_parser___ReduceAction314[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction314 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131458,14 +134316,14 @@ val_t NEW_ReduceAction314_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction314_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction314();
   INIT_ATTRIBUTES__parser___ReduceAction314(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131492,16 +134350,6 @@ const classtable_elt_t VFT_parser___ReduceAction315[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction315 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131509,8 +134357,7 @@ const classtable_elt_t VFT_parser___ReduceAction315[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131518,6 +134365,17 @@ const classtable_elt_t VFT_parser___ReduceAction315[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction315 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131584,14 +134442,14 @@ val_t NEW_ReduceAction315_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction315_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction315();
   INIT_ATTRIBUTES__parser___ReduceAction315(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131618,16 +134476,6 @@ const classtable_elt_t VFT_parser___ReduceAction316[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction316 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131635,8 +134483,7 @@ const classtable_elt_t VFT_parser___ReduceAction316[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131644,6 +134491,17 @@ const classtable_elt_t VFT_parser___ReduceAction316[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction316 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131710,14 +134568,14 @@ val_t NEW_ReduceAction316_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction316_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction316();
   INIT_ATTRIBUTES__parser___ReduceAction316(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131744,16 +134602,6 @@ const classtable_elt_t VFT_parser___ReduceAction317[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction317 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131761,8 +134609,7 @@ const classtable_elt_t VFT_parser___ReduceAction317[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131770,6 +134617,17 @@ const classtable_elt_t VFT_parser___ReduceAction317[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction317 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131836,14 +134694,14 @@ val_t NEW_ReduceAction317_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction317_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction317();
   INIT_ATTRIBUTES__parser___ReduceAction317(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131870,16 +134728,6 @@ const classtable_elt_t VFT_parser___ReduceAction318[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction318 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -131887,8 +134735,7 @@ const classtable_elt_t VFT_parser___ReduceAction318[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -131896,6 +134743,17 @@ const classtable_elt_t VFT_parser___ReduceAction318[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction318 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -131962,14 +134820,14 @@ val_t NEW_ReduceAction318_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction318_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction318();
   INIT_ATTRIBUTES__parser___ReduceAction318(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -131996,16 +134854,6 @@ const classtable_elt_t VFT_parser___ReduceAction319[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction319 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132013,8 +134861,7 @@ const classtable_elt_t VFT_parser___ReduceAction319[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132022,6 +134869,17 @@ const classtable_elt_t VFT_parser___ReduceAction319[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction319 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132088,14 +134946,14 @@ val_t NEW_ReduceAction319_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction319_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction319();
   INIT_ATTRIBUTES__parser___ReduceAction319(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132122,16 +134980,6 @@ const classtable_elt_t VFT_parser___ReduceAction320[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction320 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132139,8 +134987,7 @@ const classtable_elt_t VFT_parser___ReduceAction320[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132148,6 +134995,17 @@ const classtable_elt_t VFT_parser___ReduceAction320[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction320 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132214,14 +135072,14 @@ val_t NEW_ReduceAction320_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction320_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction320();
   INIT_ATTRIBUTES__parser___ReduceAction320(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132248,16 +135106,6 @@ const classtable_elt_t VFT_parser___ReduceAction321[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction321 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132265,8 +135113,7 @@ const classtable_elt_t VFT_parser___ReduceAction321[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132274,6 +135121,17 @@ const classtable_elt_t VFT_parser___ReduceAction321[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction321 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132340,14 +135198,14 @@ val_t NEW_ReduceAction321_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction321_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction321();
   INIT_ATTRIBUTES__parser___ReduceAction321(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132374,16 +135232,6 @@ const classtable_elt_t VFT_parser___ReduceAction322[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction322 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132391,8 +135239,7 @@ const classtable_elt_t VFT_parser___ReduceAction322[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132400,6 +135247,17 @@ const classtable_elt_t VFT_parser___ReduceAction322[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction322 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132466,14 +135324,14 @@ val_t NEW_ReduceAction322_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction322_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction322();
   INIT_ATTRIBUTES__parser___ReduceAction322(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132500,16 +135358,6 @@ const classtable_elt_t VFT_parser___ReduceAction324[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction324 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132517,8 +135365,7 @@ const classtable_elt_t VFT_parser___ReduceAction324[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132526,6 +135373,17 @@ const classtable_elt_t VFT_parser___ReduceAction324[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction324 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132592,14 +135450,14 @@ val_t NEW_ReduceAction324_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction324_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction324();
   INIT_ATTRIBUTES__parser___ReduceAction324(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132626,16 +135484,6 @@ const classtable_elt_t VFT_parser___ReduceAction325[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction325 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132643,8 +135491,7 @@ const classtable_elt_t VFT_parser___ReduceAction325[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132652,6 +135499,17 @@ const classtable_elt_t VFT_parser___ReduceAction325[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction325 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132718,14 +135576,14 @@ val_t NEW_ReduceAction325_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction325_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction325();
   INIT_ATTRIBUTES__parser___ReduceAction325(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132752,16 +135610,6 @@ const classtable_elt_t VFT_parser___ReduceAction326[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction326 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132769,8 +135617,7 @@ const classtable_elt_t VFT_parser___ReduceAction326[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132778,6 +135625,17 @@ const classtable_elt_t VFT_parser___ReduceAction326[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction326 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132844,14 +135702,14 @@ val_t NEW_ReduceAction326_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction326_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction326();
   INIT_ATTRIBUTES__parser___ReduceAction326(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -132878,16 +135736,6 @@ const classtable_elt_t VFT_parser___ReduceAction327[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction327 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -132895,8 +135743,7 @@ const classtable_elt_t VFT_parser___ReduceAction327[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132904,6 +135751,17 @@ const classtable_elt_t VFT_parser___ReduceAction327[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction327 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -132970,14 +135828,14 @@ val_t NEW_ReduceAction327_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction327_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction327();
   INIT_ATTRIBUTES__parser___ReduceAction327(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133004,16 +135862,6 @@ const classtable_elt_t VFT_parser___ReduceAction328[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction328 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133021,8 +135869,7 @@ const classtable_elt_t VFT_parser___ReduceAction328[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133030,6 +135877,17 @@ const classtable_elt_t VFT_parser___ReduceAction328[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction328 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133096,14 +135954,14 @@ val_t NEW_ReduceAction328_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction328_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction328();
   INIT_ATTRIBUTES__parser___ReduceAction328(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133130,16 +135988,6 @@ const classtable_elt_t VFT_parser___ReduceAction329[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction329 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133147,8 +135995,7 @@ const classtable_elt_t VFT_parser___ReduceAction329[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133156,6 +136003,17 @@ const classtable_elt_t VFT_parser___ReduceAction329[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction329 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133222,14 +136080,14 @@ val_t NEW_ReduceAction329_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction329_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction329();
   INIT_ATTRIBUTES__parser___ReduceAction329(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133256,16 +136114,6 @@ const classtable_elt_t VFT_parser___ReduceAction330[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction330 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133273,8 +136121,7 @@ const classtable_elt_t VFT_parser___ReduceAction330[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133282,6 +136129,17 @@ const classtable_elt_t VFT_parser___ReduceAction330[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction330 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133348,14 +136206,14 @@ val_t NEW_ReduceAction330_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction330_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction330();
   INIT_ATTRIBUTES__parser___ReduceAction330(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133382,16 +136240,6 @@ const classtable_elt_t VFT_parser___ReduceAction331[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction331 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133399,8 +136247,7 @@ const classtable_elt_t VFT_parser___ReduceAction331[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133408,6 +136255,17 @@ const classtable_elt_t VFT_parser___ReduceAction331[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction331 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133474,14 +136332,14 @@ val_t NEW_ReduceAction331_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction331_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction331();
   INIT_ATTRIBUTES__parser___ReduceAction331(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133508,16 +136366,6 @@ const classtable_elt_t VFT_parser___ReduceAction332[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction332 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133525,8 +136373,7 @@ const classtable_elt_t VFT_parser___ReduceAction332[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133534,6 +136381,17 @@ const classtable_elt_t VFT_parser___ReduceAction332[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction332 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133600,14 +136458,14 @@ val_t NEW_ReduceAction332_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction332_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction332();
   INIT_ATTRIBUTES__parser___ReduceAction332(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133634,16 +136492,6 @@ const classtable_elt_t VFT_parser___ReduceAction333[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction333 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133651,8 +136499,7 @@ const classtable_elt_t VFT_parser___ReduceAction333[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133660,6 +136507,17 @@ const classtable_elt_t VFT_parser___ReduceAction333[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction333 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133726,14 +136584,14 @@ val_t NEW_ReduceAction333_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction333_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction333();
   INIT_ATTRIBUTES__parser___ReduceAction333(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133760,16 +136618,6 @@ const classtable_elt_t VFT_parser___ReduceAction334[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction334 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133777,8 +136625,7 @@ const classtable_elt_t VFT_parser___ReduceAction334[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133786,6 +136633,17 @@ const classtable_elt_t VFT_parser___ReduceAction334[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction334 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133852,14 +136710,14 @@ val_t NEW_ReduceAction334_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction334_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction334();
   INIT_ATTRIBUTES__parser___ReduceAction334(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -133886,16 +136744,6 @@ const classtable_elt_t VFT_parser___ReduceAction335[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction335 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -133903,8 +136751,7 @@ const classtable_elt_t VFT_parser___ReduceAction335[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -133912,6 +136759,17 @@ const classtable_elt_t VFT_parser___ReduceAction335[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction335 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -133978,14 +136836,14 @@ val_t NEW_ReduceAction335_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction335_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction335();
   INIT_ATTRIBUTES__parser___ReduceAction335(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134012,16 +136870,6 @@ const classtable_elt_t VFT_parser___ReduceAction336[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction336 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134029,8 +136877,7 @@ const classtable_elt_t VFT_parser___ReduceAction336[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134038,6 +136885,17 @@ const classtable_elt_t VFT_parser___ReduceAction336[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction336 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134104,14 +136962,14 @@ val_t NEW_ReduceAction336_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction336_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction336();
   INIT_ATTRIBUTES__parser___ReduceAction336(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134138,16 +136996,6 @@ const classtable_elt_t VFT_parser___ReduceAction337[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction337 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134155,8 +137003,7 @@ const classtable_elt_t VFT_parser___ReduceAction337[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134164,6 +137011,17 @@ const classtable_elt_t VFT_parser___ReduceAction337[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction337 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134230,14 +137088,14 @@ val_t NEW_ReduceAction337_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction337_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction337();
   INIT_ATTRIBUTES__parser___ReduceAction337(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134264,16 +137122,6 @@ const classtable_elt_t VFT_parser___ReduceAction338[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction338 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134281,8 +137129,7 @@ const classtable_elt_t VFT_parser___ReduceAction338[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134290,6 +137137,17 @@ const classtable_elt_t VFT_parser___ReduceAction338[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction338 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134356,14 +137214,14 @@ val_t NEW_ReduceAction338_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction338_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction338();
   INIT_ATTRIBUTES__parser___ReduceAction338(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134390,16 +137248,6 @@ const classtable_elt_t VFT_parser___ReduceAction339[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction339 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134407,8 +137255,7 @@ const classtable_elt_t VFT_parser___ReduceAction339[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134416,6 +137263,17 @@ const classtable_elt_t VFT_parser___ReduceAction339[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction339 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134482,14 +137340,14 @@ val_t NEW_ReduceAction339_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction339_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction339();
   INIT_ATTRIBUTES__parser___ReduceAction339(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134516,16 +137374,6 @@ const classtable_elt_t VFT_parser___ReduceAction340[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction340 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134533,8 +137381,7 @@ const classtable_elt_t VFT_parser___ReduceAction340[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134542,6 +137389,17 @@ const classtable_elt_t VFT_parser___ReduceAction340[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction340 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134608,14 +137466,14 @@ val_t NEW_ReduceAction340_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction340_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction340();
   INIT_ATTRIBUTES__parser___ReduceAction340(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134642,16 +137500,6 @@ const classtable_elt_t VFT_parser___ReduceAction341[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction341 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134659,8 +137507,7 @@ const classtable_elt_t VFT_parser___ReduceAction341[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134668,6 +137515,17 @@ const classtable_elt_t VFT_parser___ReduceAction341[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction341 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134734,14 +137592,14 @@ val_t NEW_ReduceAction341_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction341_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction341();
   INIT_ATTRIBUTES__parser___ReduceAction341(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134768,16 +137626,6 @@ const classtable_elt_t VFT_parser___ReduceAction342[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction342 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134785,8 +137633,7 @@ const classtable_elt_t VFT_parser___ReduceAction342[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134794,6 +137641,17 @@ const classtable_elt_t VFT_parser___ReduceAction342[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction342 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134860,14 +137718,14 @@ val_t NEW_ReduceAction342_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction342_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction342();
   INIT_ATTRIBUTES__parser___ReduceAction342(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -134894,16 +137752,6 @@ const classtable_elt_t VFT_parser___ReduceAction343[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction343 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -134911,8 +137759,7 @@ const classtable_elt_t VFT_parser___ReduceAction343[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -134920,6 +137767,17 @@ const classtable_elt_t VFT_parser___ReduceAction343[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction343 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -134986,14 +137844,14 @@ val_t NEW_ReduceAction343_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction343_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction343();
   INIT_ATTRIBUTES__parser___ReduceAction343(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135020,16 +137878,6 @@ const classtable_elt_t VFT_parser___ReduceAction344[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction344 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135037,8 +137885,7 @@ const classtable_elt_t VFT_parser___ReduceAction344[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135046,6 +137893,17 @@ const classtable_elt_t VFT_parser___ReduceAction344[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction344 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135112,14 +137970,14 @@ val_t NEW_ReduceAction344_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction344_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction344();
   INIT_ATTRIBUTES__parser___ReduceAction344(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135146,16 +138004,6 @@ const classtable_elt_t VFT_parser___ReduceAction345[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction345 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135163,8 +138011,7 @@ const classtable_elt_t VFT_parser___ReduceAction345[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135172,6 +138019,17 @@ const classtable_elt_t VFT_parser___ReduceAction345[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction345 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135238,14 +138096,14 @@ val_t NEW_ReduceAction345_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction345_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction345();
   INIT_ATTRIBUTES__parser___ReduceAction345(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135272,16 +138130,6 @@ const classtable_elt_t VFT_parser___ReduceAction346[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction346 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135289,8 +138137,7 @@ const classtable_elt_t VFT_parser___ReduceAction346[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135298,6 +138145,17 @@ const classtable_elt_t VFT_parser___ReduceAction346[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction346 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135364,14 +138222,14 @@ val_t NEW_ReduceAction346_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction346_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction346();
   INIT_ATTRIBUTES__parser___ReduceAction346(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135398,16 +138256,6 @@ const classtable_elt_t VFT_parser___ReduceAction347[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction347 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135415,8 +138263,7 @@ const classtable_elt_t VFT_parser___ReduceAction347[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135424,6 +138271,17 @@ const classtable_elt_t VFT_parser___ReduceAction347[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction347 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135490,14 +138348,14 @@ val_t NEW_ReduceAction347_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction347_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction347();
   INIT_ATTRIBUTES__parser___ReduceAction347(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135524,16 +138382,6 @@ const classtable_elt_t VFT_parser___ReduceAction348[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction348 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135541,8 +138389,7 @@ const classtable_elt_t VFT_parser___ReduceAction348[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135550,6 +138397,17 @@ const classtable_elt_t VFT_parser___ReduceAction348[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction348 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135616,14 +138474,14 @@ val_t NEW_ReduceAction348_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction348_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction348();
   INIT_ATTRIBUTES__parser___ReduceAction348(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135650,16 +138508,6 @@ const classtable_elt_t VFT_parser___ReduceAction349[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction349 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135667,8 +138515,7 @@ const classtable_elt_t VFT_parser___ReduceAction349[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135676,6 +138523,17 @@ const classtable_elt_t VFT_parser___ReduceAction349[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction349 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135742,14 +138600,14 @@ val_t NEW_ReduceAction349_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction349_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction349();
   INIT_ATTRIBUTES__parser___ReduceAction349(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135776,16 +138634,6 @@ const classtable_elt_t VFT_parser___ReduceAction350[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction350 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135793,8 +138641,7 @@ const classtable_elt_t VFT_parser___ReduceAction350[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135802,6 +138649,17 @@ const classtable_elt_t VFT_parser___ReduceAction350[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction350 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135868,14 +138726,14 @@ val_t NEW_ReduceAction350_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction350_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction350();
   INIT_ATTRIBUTES__parser___ReduceAction350(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -135902,16 +138760,6 @@ const classtable_elt_t VFT_parser___ReduceAction351[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction351 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -135919,8 +138767,7 @@ const classtable_elt_t VFT_parser___ReduceAction351[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -135928,6 +138775,17 @@ const classtable_elt_t VFT_parser___ReduceAction351[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction351 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -135994,14 +138852,14 @@ val_t NEW_ReduceAction351_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction351_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction351();
   INIT_ATTRIBUTES__parser___ReduceAction351(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136028,16 +138886,6 @@ const classtable_elt_t VFT_parser___ReduceAction352[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction352 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136045,8 +138893,7 @@ const classtable_elt_t VFT_parser___ReduceAction352[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136054,6 +138901,17 @@ const classtable_elt_t VFT_parser___ReduceAction352[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction352 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136120,14 +138978,14 @@ val_t NEW_ReduceAction352_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction352_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction352();
   INIT_ATTRIBUTES__parser___ReduceAction352(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136154,16 +139012,6 @@ const classtable_elt_t VFT_parser___ReduceAction353[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction353 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136171,8 +139019,7 @@ const classtable_elt_t VFT_parser___ReduceAction353[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136180,6 +139027,17 @@ const classtable_elt_t VFT_parser___ReduceAction353[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction353 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136246,14 +139104,14 @@ val_t NEW_ReduceAction353_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction353_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction353();
   INIT_ATTRIBUTES__parser___ReduceAction353(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136280,16 +139138,6 @@ const classtable_elt_t VFT_parser___ReduceAction354[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction354 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136297,8 +139145,7 @@ const classtable_elt_t VFT_parser___ReduceAction354[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136306,6 +139153,17 @@ const classtable_elt_t VFT_parser___ReduceAction354[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction354 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136372,14 +139230,14 @@ val_t NEW_ReduceAction354_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction354_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction354();
   INIT_ATTRIBUTES__parser___ReduceAction354(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136406,16 +139264,6 @@ const classtable_elt_t VFT_parser___ReduceAction355[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction355 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136423,8 +139271,7 @@ const classtable_elt_t VFT_parser___ReduceAction355[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136432,6 +139279,17 @@ const classtable_elt_t VFT_parser___ReduceAction355[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction355 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136498,14 +139356,14 @@ val_t NEW_ReduceAction355_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction355_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction355();
   INIT_ATTRIBUTES__parser___ReduceAction355(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136532,16 +139390,6 @@ const classtable_elt_t VFT_parser___ReduceAction356[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction356 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136549,8 +139397,7 @@ const classtable_elt_t VFT_parser___ReduceAction356[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136558,6 +139405,17 @@ const classtable_elt_t VFT_parser___ReduceAction356[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction356 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136624,14 +139482,14 @@ val_t NEW_ReduceAction356_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction356_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction356();
   INIT_ATTRIBUTES__parser___ReduceAction356(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136658,16 +139516,6 @@ const classtable_elt_t VFT_parser___ReduceAction357[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction357 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136675,8 +139523,7 @@ const classtable_elt_t VFT_parser___ReduceAction357[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136684,6 +139531,17 @@ const classtable_elt_t VFT_parser___ReduceAction357[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction357 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136750,14 +139608,14 @@ val_t NEW_ReduceAction357_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction357_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction357();
   INIT_ATTRIBUTES__parser___ReduceAction357(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136784,16 +139642,6 @@ const classtable_elt_t VFT_parser___ReduceAction358[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction358 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136801,8 +139649,7 @@ const classtable_elt_t VFT_parser___ReduceAction358[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136810,6 +139657,17 @@ const classtable_elt_t VFT_parser___ReduceAction358[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction358 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -136876,14 +139734,14 @@ val_t NEW_ReduceAction358_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction358_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction358();
   INIT_ATTRIBUTES__parser___ReduceAction358(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -136910,16 +139768,6 @@ const classtable_elt_t VFT_parser___ReduceAction359[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction359 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -136927,8 +139775,7 @@ const classtable_elt_t VFT_parser___ReduceAction359[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136936,6 +139783,17 @@ const classtable_elt_t VFT_parser___ReduceAction359[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction359 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137002,14 +139860,14 @@ val_t NEW_ReduceAction359_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction359_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction359();
   INIT_ATTRIBUTES__parser___ReduceAction359(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137036,16 +139894,6 @@ const classtable_elt_t VFT_parser___ReduceAction360[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction360 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137053,8 +139901,7 @@ const classtable_elt_t VFT_parser___ReduceAction360[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137062,6 +139909,17 @@ const classtable_elt_t VFT_parser___ReduceAction360[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction360 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137128,14 +139986,14 @@ val_t NEW_ReduceAction360_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction360_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction360();
   INIT_ATTRIBUTES__parser___ReduceAction360(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137162,16 +140020,6 @@ const classtable_elt_t VFT_parser___ReduceAction361[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction361 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137179,8 +140027,7 @@ const classtable_elt_t VFT_parser___ReduceAction361[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137188,6 +140035,17 @@ const classtable_elt_t VFT_parser___ReduceAction361[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction361 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137254,14 +140112,14 @@ val_t NEW_ReduceAction361_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction361_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction361();
   INIT_ATTRIBUTES__parser___ReduceAction361(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137288,16 +140146,6 @@ const classtable_elt_t VFT_parser___ReduceAction362[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction362 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137305,8 +140153,7 @@ const classtable_elt_t VFT_parser___ReduceAction362[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137314,6 +140161,17 @@ const classtable_elt_t VFT_parser___ReduceAction362[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction362 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137380,14 +140238,14 @@ val_t NEW_ReduceAction362_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction362_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction362();
   INIT_ATTRIBUTES__parser___ReduceAction362(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137414,16 +140272,6 @@ const classtable_elt_t VFT_parser___ReduceAction363[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction363 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137431,8 +140279,7 @@ const classtable_elt_t VFT_parser___ReduceAction363[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137440,6 +140287,17 @@ const classtable_elt_t VFT_parser___ReduceAction363[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction363 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137506,14 +140364,14 @@ val_t NEW_ReduceAction363_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction363_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction363();
   INIT_ATTRIBUTES__parser___ReduceAction363(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137540,16 +140398,6 @@ const classtable_elt_t VFT_parser___ReduceAction364[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction364 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137557,8 +140405,7 @@ const classtable_elt_t VFT_parser___ReduceAction364[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137566,6 +140413,17 @@ const classtable_elt_t VFT_parser___ReduceAction364[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction364 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137632,14 +140490,14 @@ val_t NEW_ReduceAction364_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction364_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction364();
   INIT_ATTRIBUTES__parser___ReduceAction364(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137666,16 +140524,6 @@ const classtable_elt_t VFT_parser___ReduceAction365[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction365 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137683,8 +140531,7 @@ const classtable_elt_t VFT_parser___ReduceAction365[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137692,6 +140539,17 @@ const classtable_elt_t VFT_parser___ReduceAction365[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction365 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137758,14 +140616,14 @@ val_t NEW_ReduceAction365_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction365_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction365();
   INIT_ATTRIBUTES__parser___ReduceAction365(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137792,16 +140650,6 @@ const classtable_elt_t VFT_parser___ReduceAction366[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction366 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137809,8 +140657,7 @@ const classtable_elt_t VFT_parser___ReduceAction366[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137818,6 +140665,17 @@ const classtable_elt_t VFT_parser___ReduceAction366[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction366 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -137884,14 +140742,14 @@ val_t NEW_ReduceAction366_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction366_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction366();
   INIT_ATTRIBUTES__parser___ReduceAction366(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -137918,16 +140776,6 @@ const classtable_elt_t VFT_parser___ReduceAction367[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction367 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -137935,8 +140783,7 @@ const classtable_elt_t VFT_parser___ReduceAction367[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137944,6 +140791,17 @@ const classtable_elt_t VFT_parser___ReduceAction367[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction367 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138010,14 +140868,14 @@ val_t NEW_ReduceAction367_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction367_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction367();
   INIT_ATTRIBUTES__parser___ReduceAction367(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138044,16 +140902,6 @@ const classtable_elt_t VFT_parser___ReduceAction368[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction368 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138061,8 +140909,7 @@ const classtable_elt_t VFT_parser___ReduceAction368[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138070,6 +140917,17 @@ const classtable_elt_t VFT_parser___ReduceAction368[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction368 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138136,14 +140994,14 @@ val_t NEW_ReduceAction368_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction368_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction368();
   INIT_ATTRIBUTES__parser___ReduceAction368(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138170,16 +141028,6 @@ const classtable_elt_t VFT_parser___ReduceAction369[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction369 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138187,8 +141035,7 @@ const classtable_elt_t VFT_parser___ReduceAction369[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138196,6 +141043,17 @@ const classtable_elt_t VFT_parser___ReduceAction369[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction369 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138262,14 +141120,14 @@ val_t NEW_ReduceAction369_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction369_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction369();
   INIT_ATTRIBUTES__parser___ReduceAction369(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138296,16 +141154,6 @@ const classtable_elt_t VFT_parser___ReduceAction370[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction370 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138313,8 +141161,7 @@ const classtable_elt_t VFT_parser___ReduceAction370[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138322,6 +141169,17 @@ const classtable_elt_t VFT_parser___ReduceAction370[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction370 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138388,14 +141246,14 @@ val_t NEW_ReduceAction370_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction370_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction370();
   INIT_ATTRIBUTES__parser___ReduceAction370(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138422,16 +141280,6 @@ const classtable_elt_t VFT_parser___ReduceAction371[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction371 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138439,8 +141287,7 @@ const classtable_elt_t VFT_parser___ReduceAction371[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138448,6 +141295,17 @@ const classtable_elt_t VFT_parser___ReduceAction371[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction371 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138514,14 +141372,14 @@ val_t NEW_ReduceAction371_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction371_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction371();
   INIT_ATTRIBUTES__parser___ReduceAction371(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138548,16 +141406,6 @@ const classtable_elt_t VFT_parser___ReduceAction372[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction372 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138565,8 +141413,7 @@ const classtable_elt_t VFT_parser___ReduceAction372[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138574,6 +141421,17 @@ const classtable_elt_t VFT_parser___ReduceAction372[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction372 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138640,14 +141498,14 @@ val_t NEW_ReduceAction372_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction372_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction372();
   INIT_ATTRIBUTES__parser___ReduceAction372(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138674,16 +141532,6 @@ const classtable_elt_t VFT_parser___ReduceAction373[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction373 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138691,8 +141539,7 @@ const classtable_elt_t VFT_parser___ReduceAction373[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138700,6 +141547,17 @@ const classtable_elt_t VFT_parser___ReduceAction373[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction373 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138766,14 +141624,14 @@ val_t NEW_ReduceAction373_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction373_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction373();
   INIT_ATTRIBUTES__parser___ReduceAction373(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138800,16 +141658,6 @@ const classtable_elt_t VFT_parser___ReduceAction374[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction374 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138817,8 +141665,7 @@ const classtable_elt_t VFT_parser___ReduceAction374[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138826,6 +141673,17 @@ const classtable_elt_t VFT_parser___ReduceAction374[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction374 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -138892,14 +141750,14 @@ val_t NEW_ReduceAction374_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction374_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction374();
   INIT_ATTRIBUTES__parser___ReduceAction374(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -138926,16 +141784,6 @@ const classtable_elt_t VFT_parser___ReduceAction375[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction375 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -138943,8 +141791,7 @@ const classtable_elt_t VFT_parser___ReduceAction375[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -138952,6 +141799,17 @@ const classtable_elt_t VFT_parser___ReduceAction375[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction375 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139018,14 +141876,14 @@ val_t NEW_ReduceAction375_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction375_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction375();
   INIT_ATTRIBUTES__parser___ReduceAction375(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139052,16 +141910,6 @@ const classtable_elt_t VFT_parser___ReduceAction376[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction376 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139069,8 +141917,7 @@ const classtable_elt_t VFT_parser___ReduceAction376[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139078,6 +141925,17 @@ const classtable_elt_t VFT_parser___ReduceAction376[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction376 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139144,14 +142002,14 @@ val_t NEW_ReduceAction376_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction376_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction376();
   INIT_ATTRIBUTES__parser___ReduceAction376(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139178,16 +142036,6 @@ const classtable_elt_t VFT_parser___ReduceAction377[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction377 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139195,8 +142043,7 @@ const classtable_elt_t VFT_parser___ReduceAction377[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139204,6 +142051,17 @@ const classtable_elt_t VFT_parser___ReduceAction377[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction377 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139270,14 +142128,14 @@ val_t NEW_ReduceAction377_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction377_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction377();
   INIT_ATTRIBUTES__parser___ReduceAction377(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139304,16 +142162,6 @@ const classtable_elt_t VFT_parser___ReduceAction378[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction378 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139321,8 +142169,7 @@ const classtable_elt_t VFT_parser___ReduceAction378[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139330,6 +142177,17 @@ const classtable_elt_t VFT_parser___ReduceAction378[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction378 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139396,14 +142254,14 @@ val_t NEW_ReduceAction378_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction378_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction378();
   INIT_ATTRIBUTES__parser___ReduceAction378(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139430,16 +142288,6 @@ const classtable_elt_t VFT_parser___ReduceAction379[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction379 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139447,8 +142295,7 @@ const classtable_elt_t VFT_parser___ReduceAction379[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139456,6 +142303,17 @@ const classtable_elt_t VFT_parser___ReduceAction379[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction379 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139522,14 +142380,14 @@ val_t NEW_ReduceAction379_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction379_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction379();
   INIT_ATTRIBUTES__parser___ReduceAction379(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139556,16 +142414,6 @@ const classtable_elt_t VFT_parser___ReduceAction380[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction380 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139573,8 +142421,7 @@ const classtable_elt_t VFT_parser___ReduceAction380[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139582,6 +142429,17 @@ const classtable_elt_t VFT_parser___ReduceAction380[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction380 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139648,14 +142506,14 @@ val_t NEW_ReduceAction380_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction380_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction380();
   INIT_ATTRIBUTES__parser___ReduceAction380(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139682,16 +142540,6 @@ const classtable_elt_t VFT_parser___ReduceAction381[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction381 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139699,8 +142547,7 @@ const classtable_elt_t VFT_parser___ReduceAction381[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139708,6 +142555,17 @@ const classtable_elt_t VFT_parser___ReduceAction381[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction381 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139774,14 +142632,14 @@ val_t NEW_ReduceAction381_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction381_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction381();
   INIT_ATTRIBUTES__parser___ReduceAction381(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139808,16 +142666,6 @@ const classtable_elt_t VFT_parser___ReduceAction382[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction382 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139825,8 +142673,7 @@ const classtable_elt_t VFT_parser___ReduceAction382[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139834,6 +142681,17 @@ const classtable_elt_t VFT_parser___ReduceAction382[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction382 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -139900,14 +142758,14 @@ val_t NEW_ReduceAction382_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction382_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction382();
   INIT_ATTRIBUTES__parser___ReduceAction382(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -139934,16 +142792,6 @@ const classtable_elt_t VFT_parser___ReduceAction383[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction383 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -139951,8 +142799,7 @@ const classtable_elt_t VFT_parser___ReduceAction383[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -139960,6 +142807,17 @@ const classtable_elt_t VFT_parser___ReduceAction383[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction383 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140026,14 +142884,14 @@ val_t NEW_ReduceAction383_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction383_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction383();
   INIT_ATTRIBUTES__parser___ReduceAction383(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140060,16 +142918,6 @@ const classtable_elt_t VFT_parser___ReduceAction384[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction384 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140077,8 +142925,7 @@ const classtable_elt_t VFT_parser___ReduceAction384[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140086,6 +142933,17 @@ const classtable_elt_t VFT_parser___ReduceAction384[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction384 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140152,14 +143010,14 @@ val_t NEW_ReduceAction384_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction384_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction384();
   INIT_ATTRIBUTES__parser___ReduceAction384(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140186,16 +143044,6 @@ const classtable_elt_t VFT_parser___ReduceAction385[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction385 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140203,8 +143051,7 @@ const classtable_elt_t VFT_parser___ReduceAction385[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140212,6 +143059,17 @@ const classtable_elt_t VFT_parser___ReduceAction385[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction385 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140278,14 +143136,14 @@ val_t NEW_ReduceAction385_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction385_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction385();
   INIT_ATTRIBUTES__parser___ReduceAction385(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140312,16 +143170,6 @@ const classtable_elt_t VFT_parser___ReduceAction386[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction386 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140329,8 +143177,7 @@ const classtable_elt_t VFT_parser___ReduceAction386[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140338,6 +143185,17 @@ const classtable_elt_t VFT_parser___ReduceAction386[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction386 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140404,14 +143262,14 @@ val_t NEW_ReduceAction386_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction386_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction386();
   INIT_ATTRIBUTES__parser___ReduceAction386(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140438,16 +143296,6 @@ const classtable_elt_t VFT_parser___ReduceAction387[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction387 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140455,8 +143303,7 @@ const classtable_elt_t VFT_parser___ReduceAction387[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140464,6 +143311,17 @@ const classtable_elt_t VFT_parser___ReduceAction387[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction387 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140530,14 +143388,14 @@ val_t NEW_ReduceAction387_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction387_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction387();
   INIT_ATTRIBUTES__parser___ReduceAction387(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140564,16 +143422,6 @@ const classtable_elt_t VFT_parser___ReduceAction388[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction388 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140581,8 +143429,7 @@ const classtable_elt_t VFT_parser___ReduceAction388[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140590,6 +143437,17 @@ const classtable_elt_t VFT_parser___ReduceAction388[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction388 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140656,14 +143514,14 @@ val_t NEW_ReduceAction388_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction388_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction388();
   INIT_ATTRIBUTES__parser___ReduceAction388(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140690,16 +143548,6 @@ const classtable_elt_t VFT_parser___ReduceAction389[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction389 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140707,8 +143555,7 @@ const classtable_elt_t VFT_parser___ReduceAction389[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140716,6 +143563,17 @@ const classtable_elt_t VFT_parser___ReduceAction389[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction389 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140782,14 +143640,14 @@ val_t NEW_ReduceAction389_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction389_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction389();
   INIT_ATTRIBUTES__parser___ReduceAction389(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140816,16 +143674,6 @@ const classtable_elt_t VFT_parser___ReduceAction390[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction390 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140833,8 +143681,7 @@ const classtable_elt_t VFT_parser___ReduceAction390[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140842,6 +143689,17 @@ const classtable_elt_t VFT_parser___ReduceAction390[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction390 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -140908,14 +143766,14 @@ val_t NEW_ReduceAction390_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction390_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction390();
   INIT_ATTRIBUTES__parser___ReduceAction390(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -140942,16 +143800,6 @@ const classtable_elt_t VFT_parser___ReduceAction391[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction391 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -140959,8 +143807,7 @@ const classtable_elt_t VFT_parser___ReduceAction391[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140968,6 +143815,17 @@ const classtable_elt_t VFT_parser___ReduceAction391[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction391 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141034,14 +143892,14 @@ val_t NEW_ReduceAction391_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction391_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction391();
   INIT_ATTRIBUTES__parser___ReduceAction391(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141068,16 +143926,6 @@ const classtable_elt_t VFT_parser___ReduceAction393[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction393 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141085,8 +143933,7 @@ const classtable_elt_t VFT_parser___ReduceAction393[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141094,6 +143941,17 @@ const classtable_elt_t VFT_parser___ReduceAction393[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction393 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141160,14 +144018,14 @@ val_t NEW_ReduceAction393_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction393_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction393();
   INIT_ATTRIBUTES__parser___ReduceAction393(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141194,16 +144052,6 @@ const classtable_elt_t VFT_parser___ReduceAction394[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction394 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141211,8 +144059,7 @@ const classtable_elt_t VFT_parser___ReduceAction394[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141220,6 +144067,17 @@ const classtable_elt_t VFT_parser___ReduceAction394[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction394 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141286,14 +144144,14 @@ val_t NEW_ReduceAction394_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction394_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction394();
   INIT_ATTRIBUTES__parser___ReduceAction394(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141320,16 +144178,6 @@ const classtable_elt_t VFT_parser___ReduceAction395[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction395 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141337,8 +144185,7 @@ const classtable_elt_t VFT_parser___ReduceAction395[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141346,6 +144193,17 @@ const classtable_elt_t VFT_parser___ReduceAction395[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction395 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141412,14 +144270,14 @@ val_t NEW_ReduceAction395_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction395_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction395();
   INIT_ATTRIBUTES__parser___ReduceAction395(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141446,16 +144304,6 @@ const classtable_elt_t VFT_parser___ReduceAction396[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction396 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141463,8 +144311,7 @@ const classtable_elt_t VFT_parser___ReduceAction396[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141472,6 +144319,17 @@ const classtable_elt_t VFT_parser___ReduceAction396[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction396 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141538,14 +144396,14 @@ val_t NEW_ReduceAction396_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction396_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction396();
   INIT_ATTRIBUTES__parser___ReduceAction396(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141572,16 +144430,6 @@ const classtable_elt_t VFT_parser___ReduceAction397[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction397 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141589,8 +144437,7 @@ const classtable_elt_t VFT_parser___ReduceAction397[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141598,6 +144445,17 @@ const classtable_elt_t VFT_parser___ReduceAction397[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction397 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141664,14 +144522,14 @@ val_t NEW_ReduceAction397_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction397_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction397();
   INIT_ATTRIBUTES__parser___ReduceAction397(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141698,16 +144556,6 @@ const classtable_elt_t VFT_parser___ReduceAction398[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction398 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141715,8 +144563,7 @@ const classtable_elt_t VFT_parser___ReduceAction398[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141724,6 +144571,17 @@ const classtable_elt_t VFT_parser___ReduceAction398[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction398 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141790,14 +144648,14 @@ val_t NEW_ReduceAction398_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction398_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction398();
   INIT_ATTRIBUTES__parser___ReduceAction398(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141824,16 +144682,6 @@ const classtable_elt_t VFT_parser___ReduceAction399[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction399 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141841,8 +144689,7 @@ const classtable_elt_t VFT_parser___ReduceAction399[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141850,6 +144697,17 @@ const classtable_elt_t VFT_parser___ReduceAction399[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction399 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -141916,14 +144774,14 @@ val_t NEW_ReduceAction399_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction399_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction399();
   INIT_ATTRIBUTES__parser___ReduceAction399(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -141950,16 +144808,6 @@ const classtable_elt_t VFT_parser___ReduceAction400[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction400 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -141967,8 +144815,7 @@ const classtable_elt_t VFT_parser___ReduceAction400[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141976,6 +144823,17 @@ const classtable_elt_t VFT_parser___ReduceAction400[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction400 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142042,14 +144900,14 @@ val_t NEW_ReduceAction400_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction400_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction400();
   INIT_ATTRIBUTES__parser___ReduceAction400(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142076,16 +144934,6 @@ const classtable_elt_t VFT_parser___ReduceAction401[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction401 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142093,8 +144941,7 @@ const classtable_elt_t VFT_parser___ReduceAction401[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142102,6 +144949,17 @@ const classtable_elt_t VFT_parser___ReduceAction401[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction401 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142168,14 +145026,14 @@ val_t NEW_ReduceAction401_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction401_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction401();
   INIT_ATTRIBUTES__parser___ReduceAction401(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142202,16 +145060,6 @@ const classtable_elt_t VFT_parser___ReduceAction402[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction402 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142219,8 +145067,7 @@ const classtable_elt_t VFT_parser___ReduceAction402[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142228,6 +145075,17 @@ const classtable_elt_t VFT_parser___ReduceAction402[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction402 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142294,14 +145152,14 @@ val_t NEW_ReduceAction402_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction402_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction402();
   INIT_ATTRIBUTES__parser___ReduceAction402(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142328,16 +145186,6 @@ const classtable_elt_t VFT_parser___ReduceAction403[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction403 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142345,8 +145193,7 @@ const classtable_elt_t VFT_parser___ReduceAction403[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142354,6 +145201,17 @@ const classtable_elt_t VFT_parser___ReduceAction403[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction403 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142420,14 +145278,14 @@ val_t NEW_ReduceAction403_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction403_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction403();
   INIT_ATTRIBUTES__parser___ReduceAction403(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142454,16 +145312,6 @@ const classtable_elt_t VFT_parser___ReduceAction404[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction404 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142471,8 +145319,7 @@ const classtable_elt_t VFT_parser___ReduceAction404[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142480,6 +145327,17 @@ const classtable_elt_t VFT_parser___ReduceAction404[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction404 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142546,14 +145404,14 @@ val_t NEW_ReduceAction404_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction404_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction404();
   INIT_ATTRIBUTES__parser___ReduceAction404(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142580,16 +145438,6 @@ const classtable_elt_t VFT_parser___ReduceAction405[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction405 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142597,8 +145445,7 @@ const classtable_elt_t VFT_parser___ReduceAction405[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142606,6 +145453,17 @@ const classtable_elt_t VFT_parser___ReduceAction405[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction405 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142672,14 +145530,14 @@ val_t NEW_ReduceAction405_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction405_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction405();
   INIT_ATTRIBUTES__parser___ReduceAction405(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142706,16 +145564,6 @@ const classtable_elt_t VFT_parser___ReduceAction406[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction406 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142723,8 +145571,7 @@ const classtable_elt_t VFT_parser___ReduceAction406[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142732,6 +145579,17 @@ const classtable_elt_t VFT_parser___ReduceAction406[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction406 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142798,14 +145656,14 @@ val_t NEW_ReduceAction406_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction406_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction406();
   INIT_ATTRIBUTES__parser___ReduceAction406(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142832,16 +145690,6 @@ const classtable_elt_t VFT_parser___ReduceAction407[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction407 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142849,8 +145697,7 @@ const classtable_elt_t VFT_parser___ReduceAction407[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142858,6 +145705,17 @@ const classtable_elt_t VFT_parser___ReduceAction407[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction407 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -142924,14 +145782,14 @@ val_t NEW_ReduceAction407_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction407_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction407();
   INIT_ATTRIBUTES__parser___ReduceAction407(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -142958,16 +145816,6 @@ const classtable_elt_t VFT_parser___ReduceAction408[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction408 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -142975,8 +145823,7 @@ const classtable_elt_t VFT_parser___ReduceAction408[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142984,6 +145831,17 @@ const classtable_elt_t VFT_parser___ReduceAction408[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction408 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143050,14 +145908,14 @@ val_t NEW_ReduceAction408_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction408_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction408();
   INIT_ATTRIBUTES__parser___ReduceAction408(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143084,16 +145942,6 @@ const classtable_elt_t VFT_parser___ReduceAction409[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction409 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143101,8 +145949,7 @@ const classtable_elt_t VFT_parser___ReduceAction409[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143110,6 +145957,17 @@ const classtable_elt_t VFT_parser___ReduceAction409[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction409 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143176,14 +146034,14 @@ val_t NEW_ReduceAction409_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction409_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction409();
   INIT_ATTRIBUTES__parser___ReduceAction409(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143210,16 +146068,6 @@ const classtable_elt_t VFT_parser___ReduceAction410[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction410 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143227,8 +146075,7 @@ const classtable_elt_t VFT_parser___ReduceAction410[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143236,6 +146083,17 @@ const classtable_elt_t VFT_parser___ReduceAction410[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction410 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143302,14 +146160,14 @@ val_t NEW_ReduceAction410_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction410_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction410();
   INIT_ATTRIBUTES__parser___ReduceAction410(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143336,16 +146194,6 @@ const classtable_elt_t VFT_parser___ReduceAction411[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction411 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143353,8 +146201,7 @@ const classtable_elt_t VFT_parser___ReduceAction411[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143362,6 +146209,17 @@ const classtable_elt_t VFT_parser___ReduceAction411[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction411 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143428,14 +146286,14 @@ val_t NEW_ReduceAction411_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction411_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction411();
   INIT_ATTRIBUTES__parser___ReduceAction411(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143462,16 +146320,6 @@ const classtable_elt_t VFT_parser___ReduceAction412[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction412 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143479,8 +146327,7 @@ const classtable_elt_t VFT_parser___ReduceAction412[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143488,6 +146335,17 @@ const classtable_elt_t VFT_parser___ReduceAction412[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction412 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143554,14 +146412,14 @@ val_t NEW_ReduceAction412_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction412_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction412();
   INIT_ATTRIBUTES__parser___ReduceAction412(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143588,16 +146446,6 @@ const classtable_elt_t VFT_parser___ReduceAction413[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction413 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143605,8 +146453,7 @@ const classtable_elt_t VFT_parser___ReduceAction413[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143614,6 +146461,17 @@ const classtable_elt_t VFT_parser___ReduceAction413[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction413 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143680,14 +146538,14 @@ val_t NEW_ReduceAction413_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction413_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction413();
   INIT_ATTRIBUTES__parser___ReduceAction413(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143714,16 +146572,6 @@ const classtable_elt_t VFT_parser___ReduceAction414[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction414 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143731,8 +146579,7 @@ const classtable_elt_t VFT_parser___ReduceAction414[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143740,6 +146587,17 @@ const classtable_elt_t VFT_parser___ReduceAction414[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction414 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143806,14 +146664,14 @@ val_t NEW_ReduceAction414_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction414_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction414();
   INIT_ATTRIBUTES__parser___ReduceAction414(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143840,16 +146698,6 @@ const classtable_elt_t VFT_parser___ReduceAction416[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction416 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143857,8 +146705,7 @@ const classtable_elt_t VFT_parser___ReduceAction416[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143866,6 +146713,17 @@ const classtable_elt_t VFT_parser___ReduceAction416[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction416 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -143932,14 +146790,14 @@ val_t NEW_ReduceAction416_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction416_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction416();
   INIT_ATTRIBUTES__parser___ReduceAction416(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -143966,16 +146824,6 @@ const classtable_elt_t VFT_parser___ReduceAction417[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction417 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -143983,8 +146831,7 @@ const classtable_elt_t VFT_parser___ReduceAction417[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143992,6 +146839,17 @@ const classtable_elt_t VFT_parser___ReduceAction417[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction417 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144058,14 +146916,14 @@ val_t NEW_ReduceAction417_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction417_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction417();
   INIT_ATTRIBUTES__parser___ReduceAction417(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144092,16 +146950,6 @@ const classtable_elt_t VFT_parser___ReduceAction418[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction418 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144109,8 +146957,7 @@ const classtable_elt_t VFT_parser___ReduceAction418[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144118,6 +146965,17 @@ const classtable_elt_t VFT_parser___ReduceAction418[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction418 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144184,14 +147042,14 @@ val_t NEW_ReduceAction418_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction418_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction418();
   INIT_ATTRIBUTES__parser___ReduceAction418(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144218,16 +147076,6 @@ const classtable_elt_t VFT_parser___ReduceAction419[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction419 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144235,8 +147083,7 @@ const classtable_elt_t VFT_parser___ReduceAction419[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144244,6 +147091,17 @@ const classtable_elt_t VFT_parser___ReduceAction419[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction419 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144310,14 +147168,14 @@ val_t NEW_ReduceAction419_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction419_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction419();
   INIT_ATTRIBUTES__parser___ReduceAction419(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144344,16 +147202,6 @@ const classtable_elt_t VFT_parser___ReduceAction420[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction420 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144361,8 +147209,7 @@ const classtable_elt_t VFT_parser___ReduceAction420[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144370,6 +147217,17 @@ const classtable_elt_t VFT_parser___ReduceAction420[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction420 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144436,14 +147294,14 @@ val_t NEW_ReduceAction420_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction420_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction420();
   INIT_ATTRIBUTES__parser___ReduceAction420(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144470,16 +147328,6 @@ const classtable_elt_t VFT_parser___ReduceAction421[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction421 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144487,8 +147335,7 @@ const classtable_elt_t VFT_parser___ReduceAction421[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144496,6 +147343,17 @@ const classtable_elt_t VFT_parser___ReduceAction421[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction421 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144562,14 +147420,14 @@ val_t NEW_ReduceAction421_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction421_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction421();
   INIT_ATTRIBUTES__parser___ReduceAction421(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144596,16 +147454,6 @@ const classtable_elt_t VFT_parser___ReduceAction422[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction422 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144613,8 +147461,7 @@ const classtable_elt_t VFT_parser___ReduceAction422[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144622,6 +147469,17 @@ const classtable_elt_t VFT_parser___ReduceAction422[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction422 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144688,14 +147546,14 @@ val_t NEW_ReduceAction422_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction422_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction422();
   INIT_ATTRIBUTES__parser___ReduceAction422(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144722,16 +147580,6 @@ const classtable_elt_t VFT_parser___ReduceAction423[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction423 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144739,8 +147587,7 @@ const classtable_elt_t VFT_parser___ReduceAction423[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144748,6 +147595,17 @@ const classtable_elt_t VFT_parser___ReduceAction423[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction423 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144814,14 +147672,14 @@ val_t NEW_ReduceAction423_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction423_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction423();
   INIT_ATTRIBUTES__parser___ReduceAction423(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144848,16 +147706,6 @@ const classtable_elt_t VFT_parser___ReduceAction424[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction424 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144865,8 +147713,7 @@ const classtable_elt_t VFT_parser___ReduceAction424[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144874,6 +147721,17 @@ const classtable_elt_t VFT_parser___ReduceAction424[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction424 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -144940,14 +147798,14 @@ val_t NEW_ReduceAction424_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction424_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction424();
   INIT_ATTRIBUTES__parser___ReduceAction424(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -144974,16 +147832,6 @@ const classtable_elt_t VFT_parser___ReduceAction425[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction425 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -144991,8 +147839,7 @@ const classtable_elt_t VFT_parser___ReduceAction425[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145000,6 +147847,17 @@ const classtable_elt_t VFT_parser___ReduceAction425[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction425 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145066,14 +147924,14 @@ val_t NEW_ReduceAction425_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction425_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction425();
   INIT_ATTRIBUTES__parser___ReduceAction425(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145100,16 +147958,6 @@ const classtable_elt_t VFT_parser___ReduceAction429[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction429 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145117,8 +147965,7 @@ const classtable_elt_t VFT_parser___ReduceAction429[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145126,6 +147973,17 @@ const classtable_elt_t VFT_parser___ReduceAction429[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction429 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145192,14 +148050,14 @@ val_t NEW_ReduceAction429_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction429_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction429();
   INIT_ATTRIBUTES__parser___ReduceAction429(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145226,16 +148084,6 @@ const classtable_elt_t VFT_parser___ReduceAction430[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction430 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145243,8 +148091,7 @@ const classtable_elt_t VFT_parser___ReduceAction430[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145252,6 +148099,17 @@ const classtable_elt_t VFT_parser___ReduceAction430[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction430 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145318,14 +148176,14 @@ val_t NEW_ReduceAction430_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction430_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction430();
   INIT_ATTRIBUTES__parser___ReduceAction430(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145352,16 +148210,6 @@ const classtable_elt_t VFT_parser___ReduceAction431[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction431 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145369,8 +148217,7 @@ const classtable_elt_t VFT_parser___ReduceAction431[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145378,6 +148225,17 @@ const classtable_elt_t VFT_parser___ReduceAction431[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction431 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145444,14 +148302,14 @@ val_t NEW_ReduceAction431_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction431_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction431();
   INIT_ATTRIBUTES__parser___ReduceAction431(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145478,16 +148336,6 @@ const classtable_elt_t VFT_parser___ReduceAction432[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction432 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145495,8 +148343,7 @@ const classtable_elt_t VFT_parser___ReduceAction432[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145504,6 +148351,17 @@ const classtable_elt_t VFT_parser___ReduceAction432[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction432 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145570,14 +148428,14 @@ val_t NEW_ReduceAction432_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction432_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction432();
   INIT_ATTRIBUTES__parser___ReduceAction432(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145604,16 +148462,6 @@ const classtable_elt_t VFT_parser___ReduceAction433[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction433 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145621,8 +148469,7 @@ const classtable_elt_t VFT_parser___ReduceAction433[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145630,6 +148477,17 @@ const classtable_elt_t VFT_parser___ReduceAction433[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction433 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145696,14 +148554,14 @@ val_t NEW_ReduceAction433_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction433_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction433();
   INIT_ATTRIBUTES__parser___ReduceAction433(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145730,16 +148588,6 @@ const classtable_elt_t VFT_parser___ReduceAction434[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction434 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145747,8 +148595,7 @@ const classtable_elt_t VFT_parser___ReduceAction434[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145756,6 +148603,17 @@ const classtable_elt_t VFT_parser___ReduceAction434[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction434 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145822,14 +148680,14 @@ val_t NEW_ReduceAction434_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction434_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction434();
   INIT_ATTRIBUTES__parser___ReduceAction434(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145856,16 +148714,6 @@ const classtable_elt_t VFT_parser___ReduceAction435[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction435 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145873,8 +148721,7 @@ const classtable_elt_t VFT_parser___ReduceAction435[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145882,6 +148729,17 @@ const classtable_elt_t VFT_parser___ReduceAction435[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction435 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -145948,14 +148806,14 @@ val_t NEW_ReduceAction435_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction435_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction435();
   INIT_ATTRIBUTES__parser___ReduceAction435(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -145982,16 +148840,6 @@ const classtable_elt_t VFT_parser___ReduceAction436[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction436 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -145999,8 +148847,7 @@ const classtable_elt_t VFT_parser___ReduceAction436[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146008,6 +148855,17 @@ const classtable_elt_t VFT_parser___ReduceAction436[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction436 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146074,14 +148932,14 @@ val_t NEW_ReduceAction436_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction436_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction436();
   INIT_ATTRIBUTES__parser___ReduceAction436(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146108,16 +148966,6 @@ const classtable_elt_t VFT_parser___ReduceAction437[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction437 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146125,8 +148973,7 @@ const classtable_elt_t VFT_parser___ReduceAction437[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146134,6 +148981,17 @@ const classtable_elt_t VFT_parser___ReduceAction437[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction437 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146200,14 +149058,14 @@ val_t NEW_ReduceAction437_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction437_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction437();
   INIT_ATTRIBUTES__parser___ReduceAction437(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146234,16 +149092,6 @@ const classtable_elt_t VFT_parser___ReduceAction438[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction438 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146251,8 +149099,7 @@ const classtable_elt_t VFT_parser___ReduceAction438[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146260,6 +149107,17 @@ const classtable_elt_t VFT_parser___ReduceAction438[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction438 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146326,14 +149184,14 @@ val_t NEW_ReduceAction438_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction438_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction438();
   INIT_ATTRIBUTES__parser___ReduceAction438(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146360,16 +149218,6 @@ const classtable_elt_t VFT_parser___ReduceAction439[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction439 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146377,8 +149225,7 @@ const classtable_elt_t VFT_parser___ReduceAction439[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146386,6 +149233,17 @@ const classtable_elt_t VFT_parser___ReduceAction439[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction439 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146452,14 +149310,14 @@ val_t NEW_ReduceAction439_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction439_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction439();
   INIT_ATTRIBUTES__parser___ReduceAction439(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146486,16 +149344,6 @@ const classtable_elt_t VFT_parser___ReduceAction446[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction446 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146503,8 +149351,7 @@ const classtable_elt_t VFT_parser___ReduceAction446[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146512,6 +149359,17 @@ const classtable_elt_t VFT_parser___ReduceAction446[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction446 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146578,14 +149436,14 @@ val_t NEW_ReduceAction446_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction446_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction446();
   INIT_ATTRIBUTES__parser___ReduceAction446(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146612,16 +149470,6 @@ const classtable_elt_t VFT_parser___ReduceAction447[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction447 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146629,8 +149477,7 @@ const classtable_elt_t VFT_parser___ReduceAction447[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146638,6 +149485,17 @@ const classtable_elt_t VFT_parser___ReduceAction447[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction447 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146704,14 +149562,14 @@ val_t NEW_ReduceAction447_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction447_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction447();
   INIT_ATTRIBUTES__parser___ReduceAction447(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146738,16 +149596,6 @@ const classtable_elt_t VFT_parser___ReduceAction448[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction448 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146755,8 +149603,7 @@ const classtable_elt_t VFT_parser___ReduceAction448[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146764,6 +149611,17 @@ const classtable_elt_t VFT_parser___ReduceAction448[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction448 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146830,14 +149688,14 @@ val_t NEW_ReduceAction448_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction448_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction448();
   INIT_ATTRIBUTES__parser___ReduceAction448(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146864,16 +149722,6 @@ const classtable_elt_t VFT_parser___ReduceAction449[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction449 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -146881,8 +149729,7 @@ const classtable_elt_t VFT_parser___ReduceAction449[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146890,6 +149737,17 @@ const classtable_elt_t VFT_parser___ReduceAction449[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction449 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -146956,14 +149814,14 @@ val_t NEW_ReduceAction449_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction449_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction449();
   INIT_ATTRIBUTES__parser___ReduceAction449(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -146990,16 +149848,6 @@ const classtable_elt_t VFT_parser___ReduceAction450[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction450 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147007,8 +149855,7 @@ const classtable_elt_t VFT_parser___ReduceAction450[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147016,6 +149863,17 @@ const classtable_elt_t VFT_parser___ReduceAction450[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction450 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147082,14 +149940,14 @@ val_t NEW_ReduceAction450_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction450_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction450();
   INIT_ATTRIBUTES__parser___ReduceAction450(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147116,16 +149974,6 @@ const classtable_elt_t VFT_parser___ReduceAction451[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction451 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147133,8 +149981,7 @@ const classtable_elt_t VFT_parser___ReduceAction451[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147142,6 +149989,17 @@ const classtable_elt_t VFT_parser___ReduceAction451[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction451 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147208,14 +150066,14 @@ val_t NEW_ReduceAction451_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction451_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction451();
   INIT_ATTRIBUTES__parser___ReduceAction451(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147242,16 +150100,6 @@ const classtable_elt_t VFT_parser___ReduceAction452[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction452 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147259,8 +150107,7 @@ const classtable_elt_t VFT_parser___ReduceAction452[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147268,6 +150115,17 @@ const classtable_elt_t VFT_parser___ReduceAction452[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction452 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147334,14 +150192,14 @@ val_t NEW_ReduceAction452_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction452_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction452();
   INIT_ATTRIBUTES__parser___ReduceAction452(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147368,16 +150226,6 @@ const classtable_elt_t VFT_parser___ReduceAction453[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction453 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147385,8 +150233,7 @@ const classtable_elt_t VFT_parser___ReduceAction453[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147394,6 +150241,17 @@ const classtable_elt_t VFT_parser___ReduceAction453[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction453 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147460,14 +150318,14 @@ val_t NEW_ReduceAction453_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction453_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction453();
   INIT_ATTRIBUTES__parser___ReduceAction453(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147494,16 +150352,6 @@ const classtable_elt_t VFT_parser___ReduceAction454[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction454 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147511,8 +150359,7 @@ const classtable_elt_t VFT_parser___ReduceAction454[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147520,6 +150367,17 @@ const classtable_elt_t VFT_parser___ReduceAction454[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction454 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147586,14 +150444,14 @@ val_t NEW_ReduceAction454_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction454_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction454();
   INIT_ATTRIBUTES__parser___ReduceAction454(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147620,16 +150478,6 @@ const classtable_elt_t VFT_parser___ReduceAction455[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction455 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147637,8 +150485,7 @@ const classtable_elt_t VFT_parser___ReduceAction455[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147646,6 +150493,17 @@ const classtable_elt_t VFT_parser___ReduceAction455[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction455 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147712,14 +150570,14 @@ val_t NEW_ReduceAction455_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction455_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction455();
   INIT_ATTRIBUTES__parser___ReduceAction455(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147746,16 +150604,6 @@ const classtable_elt_t VFT_parser___ReduceAction456[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction456 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147763,8 +150611,7 @@ const classtable_elt_t VFT_parser___ReduceAction456[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147772,6 +150619,17 @@ const classtable_elt_t VFT_parser___ReduceAction456[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction456 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147838,14 +150696,14 @@ val_t NEW_ReduceAction456_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction456_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction456();
   INIT_ATTRIBUTES__parser___ReduceAction456(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147872,16 +150730,6 @@ const classtable_elt_t VFT_parser___ReduceAction457[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction457 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -147889,8 +150737,7 @@ const classtable_elt_t VFT_parser___ReduceAction457[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -147898,6 +150745,17 @@ const classtable_elt_t VFT_parser___ReduceAction457[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction457 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -147964,14 +150822,14 @@ val_t NEW_ReduceAction457_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction457_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction457();
   INIT_ATTRIBUTES__parser___ReduceAction457(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -147998,16 +150856,6 @@ const classtable_elt_t VFT_parser___ReduceAction458[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction458 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148015,8 +150863,7 @@ const classtable_elt_t VFT_parser___ReduceAction458[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148024,6 +150871,17 @@ const classtable_elt_t VFT_parser___ReduceAction458[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction458 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148090,14 +150948,14 @@ val_t NEW_ReduceAction458_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction458_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction458();
   INIT_ATTRIBUTES__parser___ReduceAction458(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148124,16 +150982,6 @@ const classtable_elt_t VFT_parser___ReduceAction459[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction459 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148141,8 +150989,7 @@ const classtable_elt_t VFT_parser___ReduceAction459[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148150,6 +150997,17 @@ const classtable_elt_t VFT_parser___ReduceAction459[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction459 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148216,14 +151074,14 @@ val_t NEW_ReduceAction459_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction459_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction459();
   INIT_ATTRIBUTES__parser___ReduceAction459(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148250,16 +151108,6 @@ const classtable_elt_t VFT_parser___ReduceAction460[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction460 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148267,8 +151115,7 @@ const classtable_elt_t VFT_parser___ReduceAction460[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148276,6 +151123,17 @@ const classtable_elt_t VFT_parser___ReduceAction460[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction460 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148342,14 +151200,14 @@ val_t NEW_ReduceAction460_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction460_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction460();
   INIT_ATTRIBUTES__parser___ReduceAction460(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148376,16 +151234,6 @@ const classtable_elt_t VFT_parser___ReduceAction461[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction461 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148393,8 +151241,7 @@ const classtable_elt_t VFT_parser___ReduceAction461[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148402,6 +151249,17 @@ const classtable_elt_t VFT_parser___ReduceAction461[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction461 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148468,14 +151326,14 @@ val_t NEW_ReduceAction461_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction461_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction461();
   INIT_ATTRIBUTES__parser___ReduceAction461(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148502,16 +151360,6 @@ const classtable_elt_t VFT_parser___ReduceAction462[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction462 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148519,8 +151367,7 @@ const classtable_elt_t VFT_parser___ReduceAction462[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148528,6 +151375,17 @@ const classtable_elt_t VFT_parser___ReduceAction462[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction462 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148594,14 +151452,14 @@ val_t NEW_ReduceAction462_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction462_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction462();
   INIT_ATTRIBUTES__parser___ReduceAction462(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148628,16 +151486,6 @@ const classtable_elt_t VFT_parser___ReduceAction463[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction463 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148645,8 +151493,7 @@ const classtable_elt_t VFT_parser___ReduceAction463[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148654,6 +151501,17 @@ const classtable_elt_t VFT_parser___ReduceAction463[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction463 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148720,14 +151578,14 @@ val_t NEW_ReduceAction463_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction463_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction463();
   INIT_ATTRIBUTES__parser___ReduceAction463(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148754,16 +151612,6 @@ const classtable_elt_t VFT_parser___ReduceAction464[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction464 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148771,8 +151619,7 @@ const classtable_elt_t VFT_parser___ReduceAction464[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148780,6 +151627,17 @@ const classtable_elt_t VFT_parser___ReduceAction464[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction464 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148846,14 +151704,14 @@ val_t NEW_ReduceAction464_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction464_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction464();
   INIT_ATTRIBUTES__parser___ReduceAction464(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -148880,16 +151738,6 @@ const classtable_elt_t VFT_parser___ReduceAction465[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction465 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -148897,8 +151745,7 @@ const classtable_elt_t VFT_parser___ReduceAction465[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148906,6 +151753,17 @@ const classtable_elt_t VFT_parser___ReduceAction465[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction465 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -148972,14 +151830,14 @@ val_t NEW_ReduceAction465_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction465_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction465();
   INIT_ATTRIBUTES__parser___ReduceAction465(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149006,16 +151864,6 @@ const classtable_elt_t VFT_parser___ReduceAction466[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction466 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149023,8 +151871,7 @@ const classtable_elt_t VFT_parser___ReduceAction466[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149032,6 +151879,17 @@ const classtable_elt_t VFT_parser___ReduceAction466[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction466 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149098,14 +151956,14 @@ val_t NEW_ReduceAction466_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction466_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction466();
   INIT_ATTRIBUTES__parser___ReduceAction466(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149132,16 +151990,6 @@ const classtable_elt_t VFT_parser___ReduceAction467[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction467 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149149,8 +151997,7 @@ const classtable_elt_t VFT_parser___ReduceAction467[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149158,6 +152005,17 @@ const classtable_elt_t VFT_parser___ReduceAction467[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction467 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149224,14 +152082,14 @@ val_t NEW_ReduceAction467_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction467_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction467();
   INIT_ATTRIBUTES__parser___ReduceAction467(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149258,16 +152116,6 @@ const classtable_elt_t VFT_parser___ReduceAction468[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction468 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149275,8 +152123,7 @@ const classtable_elt_t VFT_parser___ReduceAction468[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149284,6 +152131,17 @@ const classtable_elt_t VFT_parser___ReduceAction468[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction468 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149350,14 +152208,14 @@ val_t NEW_ReduceAction468_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction468_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction468();
   INIT_ATTRIBUTES__parser___ReduceAction468(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149384,16 +152242,6 @@ const classtable_elt_t VFT_parser___ReduceAction469[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction469 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149401,8 +152249,7 @@ const classtable_elt_t VFT_parser___ReduceAction469[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149410,6 +152257,17 @@ const classtable_elt_t VFT_parser___ReduceAction469[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction469 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149476,14 +152334,14 @@ val_t NEW_ReduceAction469_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction469_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction469();
   INIT_ATTRIBUTES__parser___ReduceAction469(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149510,16 +152368,6 @@ const classtable_elt_t VFT_parser___ReduceAction470[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction470 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149527,8 +152375,7 @@ const classtable_elt_t VFT_parser___ReduceAction470[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149536,6 +152383,17 @@ const classtable_elt_t VFT_parser___ReduceAction470[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction470 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149602,14 +152460,14 @@ val_t NEW_ReduceAction470_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction470_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction470();
   INIT_ATTRIBUTES__parser___ReduceAction470(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149636,16 +152494,6 @@ const classtable_elt_t VFT_parser___ReduceAction471[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction471 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149653,8 +152501,7 @@ const classtable_elt_t VFT_parser___ReduceAction471[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149662,6 +152509,17 @@ const classtable_elt_t VFT_parser___ReduceAction471[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction471 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149728,14 +152586,14 @@ val_t NEW_ReduceAction471_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction471_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction471();
   INIT_ATTRIBUTES__parser___ReduceAction471(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149762,16 +152620,6 @@ const classtable_elt_t VFT_parser___ReduceAction472[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction472 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149779,8 +152627,7 @@ const classtable_elt_t VFT_parser___ReduceAction472[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149788,6 +152635,17 @@ const classtable_elt_t VFT_parser___ReduceAction472[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction472 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149854,14 +152712,14 @@ val_t NEW_ReduceAction472_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction472_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction472();
   INIT_ATTRIBUTES__parser___ReduceAction472(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -149888,16 +152746,6 @@ const classtable_elt_t VFT_parser___ReduceAction473[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction473 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -149905,8 +152753,7 @@ const classtable_elt_t VFT_parser___ReduceAction473[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149914,6 +152761,17 @@ const classtable_elt_t VFT_parser___ReduceAction473[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction473 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -149980,14 +152838,14 @@ val_t NEW_ReduceAction473_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction473_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction473();
   INIT_ATTRIBUTES__parser___ReduceAction473(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150014,16 +152872,6 @@ const classtable_elt_t VFT_parser___ReduceAction474[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction474 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150031,8 +152879,7 @@ const classtable_elt_t VFT_parser___ReduceAction474[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150040,6 +152887,17 @@ const classtable_elt_t VFT_parser___ReduceAction474[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction474 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150106,14 +152964,14 @@ val_t NEW_ReduceAction474_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction474_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction474();
   INIT_ATTRIBUTES__parser___ReduceAction474(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150140,16 +152998,6 @@ const classtable_elt_t VFT_parser___ReduceAction475[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction475 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150157,8 +153005,7 @@ const classtable_elt_t VFT_parser___ReduceAction475[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150166,6 +153013,17 @@ const classtable_elt_t VFT_parser___ReduceAction475[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction475 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150232,14 +153090,14 @@ val_t NEW_ReduceAction475_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction475_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction475();
   INIT_ATTRIBUTES__parser___ReduceAction475(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150266,16 +153124,6 @@ const classtable_elt_t VFT_parser___ReduceAction476[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction476 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150283,8 +153131,7 @@ const classtable_elt_t VFT_parser___ReduceAction476[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150292,6 +153139,17 @@ const classtable_elt_t VFT_parser___ReduceAction476[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction476 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150358,14 +153216,14 @@ val_t NEW_ReduceAction476_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction476_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction476();
   INIT_ATTRIBUTES__parser___ReduceAction476(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150392,16 +153250,6 @@ const classtable_elt_t VFT_parser___ReduceAction477[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction477 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150409,8 +153257,7 @@ const classtable_elt_t VFT_parser___ReduceAction477[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150418,6 +153265,17 @@ const classtable_elt_t VFT_parser___ReduceAction477[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction477 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150484,14 +153342,14 @@ val_t NEW_ReduceAction477_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction477_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction477();
   INIT_ATTRIBUTES__parser___ReduceAction477(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150518,16 +153376,6 @@ const classtable_elt_t VFT_parser___ReduceAction478[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction478 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150535,8 +153383,7 @@ const classtable_elt_t VFT_parser___ReduceAction478[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150544,6 +153391,17 @@ const classtable_elt_t VFT_parser___ReduceAction478[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction478 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150610,14 +153468,14 @@ val_t NEW_ReduceAction478_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction478_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction478();
   INIT_ATTRIBUTES__parser___ReduceAction478(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150644,16 +153502,6 @@ const classtable_elt_t VFT_parser___ReduceAction479[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction479 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150661,8 +153509,7 @@ const classtable_elt_t VFT_parser___ReduceAction479[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150670,6 +153517,17 @@ const classtable_elt_t VFT_parser___ReduceAction479[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction479 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150736,14 +153594,14 @@ val_t NEW_ReduceAction479_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction479_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction479();
   INIT_ATTRIBUTES__parser___ReduceAction479(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150770,16 +153628,6 @@ const classtable_elt_t VFT_parser___ReduceAction480[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction480 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150787,8 +153635,7 @@ const classtable_elt_t VFT_parser___ReduceAction480[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150796,6 +153643,17 @@ const classtable_elt_t VFT_parser___ReduceAction480[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction480 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150862,14 +153720,14 @@ val_t NEW_ReduceAction480_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction480_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction480();
   INIT_ATTRIBUTES__parser___ReduceAction480(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -150896,16 +153754,6 @@ const classtable_elt_t VFT_parser___ReduceAction481[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction481 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -150913,8 +153761,7 @@ const classtable_elt_t VFT_parser___ReduceAction481[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150922,6 +153769,17 @@ const classtable_elt_t VFT_parser___ReduceAction481[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction481 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -150988,14 +153846,14 @@ val_t NEW_ReduceAction481_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction481_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction481();
   INIT_ATTRIBUTES__parser___ReduceAction481(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151022,16 +153880,6 @@ const classtable_elt_t VFT_parser___ReduceAction482[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction482 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151039,8 +153887,7 @@ const classtable_elt_t VFT_parser___ReduceAction482[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151048,6 +153895,17 @@ const classtable_elt_t VFT_parser___ReduceAction482[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction482 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151114,14 +153972,14 @@ val_t NEW_ReduceAction482_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction482_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction482();
   INIT_ATTRIBUTES__parser___ReduceAction482(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151148,16 +154006,6 @@ const classtable_elt_t VFT_parser___ReduceAction483[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction483 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151165,8 +154013,7 @@ const classtable_elt_t VFT_parser___ReduceAction483[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151174,6 +154021,17 @@ const classtable_elt_t VFT_parser___ReduceAction483[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction483 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151240,14 +154098,14 @@ val_t NEW_ReduceAction483_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction483_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction483();
   INIT_ATTRIBUTES__parser___ReduceAction483(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151274,16 +154132,6 @@ const classtable_elt_t VFT_parser___ReduceAction484[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction484 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151291,8 +154139,7 @@ const classtable_elt_t VFT_parser___ReduceAction484[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151300,6 +154147,17 @@ const classtable_elt_t VFT_parser___ReduceAction484[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction484 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151366,14 +154224,14 @@ val_t NEW_ReduceAction484_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction484_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction484();
   INIT_ATTRIBUTES__parser___ReduceAction484(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151400,16 +154258,6 @@ const classtable_elt_t VFT_parser___ReduceAction485[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction485 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151417,8 +154265,7 @@ const classtable_elt_t VFT_parser___ReduceAction485[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151426,6 +154273,17 @@ const classtable_elt_t VFT_parser___ReduceAction485[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction485 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151492,14 +154350,14 @@ val_t NEW_ReduceAction485_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction485_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction485();
   INIT_ATTRIBUTES__parser___ReduceAction485(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151526,16 +154384,6 @@ const classtable_elt_t VFT_parser___ReduceAction486[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction486 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151543,8 +154391,7 @@ const classtable_elt_t VFT_parser___ReduceAction486[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151552,6 +154399,17 @@ const classtable_elt_t VFT_parser___ReduceAction486[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction486 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151618,14 +154476,14 @@ val_t NEW_ReduceAction486_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction486_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction486();
   INIT_ATTRIBUTES__parser___ReduceAction486(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151652,16 +154510,6 @@ const classtable_elt_t VFT_parser___ReduceAction487[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction487 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151669,8 +154517,7 @@ const classtable_elt_t VFT_parser___ReduceAction487[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151678,6 +154525,17 @@ const classtable_elt_t VFT_parser___ReduceAction487[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction487 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151744,14 +154602,14 @@ val_t NEW_ReduceAction487_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction487_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction487();
   INIT_ATTRIBUTES__parser___ReduceAction487(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151778,16 +154636,6 @@ const classtable_elt_t VFT_parser___ReduceAction488[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction488 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151795,8 +154643,7 @@ const classtable_elt_t VFT_parser___ReduceAction488[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151804,6 +154651,17 @@ const classtable_elt_t VFT_parser___ReduceAction488[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction488 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151870,14 +154728,14 @@ val_t NEW_ReduceAction488_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction488_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction488();
   INIT_ATTRIBUTES__parser___ReduceAction488(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -151904,16 +154762,6 @@ const classtable_elt_t VFT_parser___ReduceAction489[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction489 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -151921,8 +154769,7 @@ const classtable_elt_t VFT_parser___ReduceAction489[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151930,6 +154777,17 @@ const classtable_elt_t VFT_parser___ReduceAction489[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction489 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -151996,14 +154854,14 @@ val_t NEW_ReduceAction489_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction489_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction489();
   INIT_ATTRIBUTES__parser___ReduceAction489(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152030,16 +154888,6 @@ const classtable_elt_t VFT_parser___ReduceAction490[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction490 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152047,8 +154895,7 @@ const classtable_elt_t VFT_parser___ReduceAction490[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152056,6 +154903,17 @@ const classtable_elt_t VFT_parser___ReduceAction490[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction490 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152122,14 +154980,14 @@ val_t NEW_ReduceAction490_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction490_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction490();
   INIT_ATTRIBUTES__parser___ReduceAction490(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152156,16 +155014,6 @@ const classtable_elt_t VFT_parser___ReduceAction491[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction491 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152173,8 +155021,7 @@ const classtable_elt_t VFT_parser___ReduceAction491[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152182,6 +155029,17 @@ const classtable_elt_t VFT_parser___ReduceAction491[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction491 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152248,14 +155106,14 @@ val_t NEW_ReduceAction491_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction491_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction491();
   INIT_ATTRIBUTES__parser___ReduceAction491(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152282,16 +155140,6 @@ const classtable_elt_t VFT_parser___ReduceAction492[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction492 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152299,8 +155147,7 @@ const classtable_elt_t VFT_parser___ReduceAction492[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152308,6 +155155,17 @@ const classtable_elt_t VFT_parser___ReduceAction492[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction492 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152374,14 +155232,14 @@ val_t NEW_ReduceAction492_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction492_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction492();
   INIT_ATTRIBUTES__parser___ReduceAction492(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152408,16 +155266,6 @@ const classtable_elt_t VFT_parser___ReduceAction493[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction493 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152425,8 +155273,7 @@ const classtable_elt_t VFT_parser___ReduceAction493[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152434,6 +155281,17 @@ const classtable_elt_t VFT_parser___ReduceAction493[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction493 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152500,14 +155358,14 @@ val_t NEW_ReduceAction493_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction493_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction493();
   INIT_ATTRIBUTES__parser___ReduceAction493(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152534,16 +155392,6 @@ const classtable_elt_t VFT_parser___ReduceAction494[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction494 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152551,8 +155399,7 @@ const classtable_elt_t VFT_parser___ReduceAction494[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152560,6 +155407,17 @@ const classtable_elt_t VFT_parser___ReduceAction494[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction494 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152626,14 +155484,14 @@ val_t NEW_ReduceAction494_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction494_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction494();
   INIT_ATTRIBUTES__parser___ReduceAction494(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152660,16 +155518,6 @@ const classtable_elt_t VFT_parser___ReduceAction495[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction495 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152677,8 +155525,7 @@ const classtable_elt_t VFT_parser___ReduceAction495[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152686,6 +155533,17 @@ const classtable_elt_t VFT_parser___ReduceAction495[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction495 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152752,14 +155610,14 @@ val_t NEW_ReduceAction495_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction495_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction495();
   INIT_ATTRIBUTES__parser___ReduceAction495(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152786,16 +155644,6 @@ const classtable_elt_t VFT_parser___ReduceAction496[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction496 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152803,8 +155651,7 @@ const classtable_elt_t VFT_parser___ReduceAction496[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152812,6 +155659,17 @@ const classtable_elt_t VFT_parser___ReduceAction496[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction496 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -152878,14 +155736,14 @@ val_t NEW_ReduceAction496_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction496_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction496();
   INIT_ATTRIBUTES__parser___ReduceAction496(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -152912,16 +155770,6 @@ const classtable_elt_t VFT_parser___ReduceAction497[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction497 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -152929,8 +155777,7 @@ const classtable_elt_t VFT_parser___ReduceAction497[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152938,6 +155785,17 @@ const classtable_elt_t VFT_parser___ReduceAction497[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction497 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153004,14 +155862,14 @@ val_t NEW_ReduceAction497_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction497_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction497();
   INIT_ATTRIBUTES__parser___ReduceAction497(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153038,16 +155896,6 @@ const classtable_elt_t VFT_parser___ReduceAction498[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction498 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153055,8 +155903,7 @@ const classtable_elt_t VFT_parser___ReduceAction498[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153064,6 +155911,17 @@ const classtable_elt_t VFT_parser___ReduceAction498[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction498 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153130,14 +155988,14 @@ val_t NEW_ReduceAction498_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction498_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction498();
   INIT_ATTRIBUTES__parser___ReduceAction498(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153164,16 +156022,6 @@ const classtable_elt_t VFT_parser___ReduceAction499[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction499 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153181,8 +156029,7 @@ const classtable_elt_t VFT_parser___ReduceAction499[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153190,6 +156037,17 @@ const classtable_elt_t VFT_parser___ReduceAction499[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction499 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153256,14 +156114,14 @@ val_t NEW_ReduceAction499_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction499_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction499();
   INIT_ATTRIBUTES__parser___ReduceAction499(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153290,16 +156148,6 @@ const classtable_elt_t VFT_parser___ReduceAction500[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction500 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153307,8 +156155,7 @@ const classtable_elt_t VFT_parser___ReduceAction500[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153316,6 +156163,17 @@ const classtable_elt_t VFT_parser___ReduceAction500[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction500 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153382,14 +156240,14 @@ val_t NEW_ReduceAction500_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction500_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction500();
   INIT_ATTRIBUTES__parser___ReduceAction500(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153416,16 +156274,6 @@ const classtable_elt_t VFT_parser___ReduceAction501[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction501 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153433,8 +156281,7 @@ const classtable_elt_t VFT_parser___ReduceAction501[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153442,6 +156289,17 @@ const classtable_elt_t VFT_parser___ReduceAction501[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction501 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153508,14 +156366,14 @@ val_t NEW_ReduceAction501_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction501_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction501();
   INIT_ATTRIBUTES__parser___ReduceAction501(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153542,16 +156400,6 @@ const classtable_elt_t VFT_parser___ReduceAction502[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction502 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153559,8 +156407,7 @@ const classtable_elt_t VFT_parser___ReduceAction502[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153568,6 +156415,17 @@ const classtable_elt_t VFT_parser___ReduceAction502[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction502 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153634,14 +156492,14 @@ val_t NEW_ReduceAction502_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction502_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction502();
   INIT_ATTRIBUTES__parser___ReduceAction502(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153668,16 +156526,6 @@ const classtable_elt_t VFT_parser___ReduceAction505[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction505 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153685,8 +156533,7 @@ const classtable_elt_t VFT_parser___ReduceAction505[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153694,6 +156541,17 @@ const classtable_elt_t VFT_parser___ReduceAction505[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction505 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153760,14 +156618,14 @@ val_t NEW_ReduceAction505_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction505_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction505();
   INIT_ATTRIBUTES__parser___ReduceAction505(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153794,16 +156652,6 @@ const classtable_elt_t VFT_parser___ReduceAction506[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction506 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153811,8 +156659,7 @@ const classtable_elt_t VFT_parser___ReduceAction506[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153820,6 +156667,17 @@ const classtable_elt_t VFT_parser___ReduceAction506[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction506 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -153886,14 +156744,14 @@ val_t NEW_ReduceAction506_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction506_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction506();
   INIT_ATTRIBUTES__parser___ReduceAction506(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -153920,16 +156778,6 @@ const classtable_elt_t VFT_parser___ReduceAction507[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction507 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -153937,8 +156785,7 @@ const classtable_elt_t VFT_parser___ReduceAction507[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153946,6 +156793,17 @@ const classtable_elt_t VFT_parser___ReduceAction507[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction507 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154012,14 +156870,14 @@ val_t NEW_ReduceAction507_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction507_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction507();
   INIT_ATTRIBUTES__parser___ReduceAction507(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154046,16 +156904,6 @@ const classtable_elt_t VFT_parser___ReduceAction508[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction508 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154063,8 +156911,7 @@ const classtable_elt_t VFT_parser___ReduceAction508[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154072,6 +156919,17 @@ const classtable_elt_t VFT_parser___ReduceAction508[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction508 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154138,14 +156996,14 @@ val_t NEW_ReduceAction508_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction508_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction508();
   INIT_ATTRIBUTES__parser___ReduceAction508(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154172,16 +157030,6 @@ const classtable_elt_t VFT_parser___ReduceAction509[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction509 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154189,8 +157037,7 @@ const classtable_elt_t VFT_parser___ReduceAction509[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154198,6 +157045,17 @@ const classtable_elt_t VFT_parser___ReduceAction509[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction509 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154264,14 +157122,14 @@ val_t NEW_ReduceAction509_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction509_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction509();
   INIT_ATTRIBUTES__parser___ReduceAction509(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154298,16 +157156,6 @@ const classtable_elt_t VFT_parser___ReduceAction510[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction510 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154315,8 +157163,7 @@ const classtable_elt_t VFT_parser___ReduceAction510[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154324,6 +157171,17 @@ const classtable_elt_t VFT_parser___ReduceAction510[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction510 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154390,14 +157248,14 @@ val_t NEW_ReduceAction510_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction510_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction510();
   INIT_ATTRIBUTES__parser___ReduceAction510(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154424,16 +157282,6 @@ const classtable_elt_t VFT_parser___ReduceAction511[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction511 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154441,8 +157289,7 @@ const classtable_elt_t VFT_parser___ReduceAction511[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154450,6 +157297,17 @@ const classtable_elt_t VFT_parser___ReduceAction511[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction511 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154516,14 +157374,14 @@ val_t NEW_ReduceAction511_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction511_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction511();
   INIT_ATTRIBUTES__parser___ReduceAction511(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154550,16 +157408,6 @@ const classtable_elt_t VFT_parser___ReduceAction512[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction512 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154567,8 +157415,7 @@ const classtable_elt_t VFT_parser___ReduceAction512[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154576,6 +157423,17 @@ const classtable_elt_t VFT_parser___ReduceAction512[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction512 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154642,14 +157500,14 @@ val_t NEW_ReduceAction512_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction512_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction512();
   INIT_ATTRIBUTES__parser___ReduceAction512(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154676,16 +157534,6 @@ const classtable_elt_t VFT_parser___ReduceAction513[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction513 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154693,8 +157541,7 @@ const classtable_elt_t VFT_parser___ReduceAction513[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154702,6 +157549,17 @@ const classtable_elt_t VFT_parser___ReduceAction513[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction513 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154768,14 +157626,14 @@ val_t NEW_ReduceAction513_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction513_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction513();
   INIT_ATTRIBUTES__parser___ReduceAction513(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154802,16 +157660,6 @@ const classtable_elt_t VFT_parser___ReduceAction514[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction514 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154819,8 +157667,7 @@ const classtable_elt_t VFT_parser___ReduceAction514[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154828,6 +157675,17 @@ const classtable_elt_t VFT_parser___ReduceAction514[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction514 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -154894,14 +157752,14 @@ val_t NEW_ReduceAction514_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction514_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction514();
   INIT_ATTRIBUTES__parser___ReduceAction514(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -154928,16 +157786,6 @@ const classtable_elt_t VFT_parser___ReduceAction515[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction515 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -154945,8 +157793,7 @@ const classtable_elt_t VFT_parser___ReduceAction515[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154954,6 +157801,17 @@ const classtable_elt_t VFT_parser___ReduceAction515[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction515 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155020,14 +157878,14 @@ val_t NEW_ReduceAction515_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction515_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction515();
   INIT_ATTRIBUTES__parser___ReduceAction515(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155054,16 +157912,6 @@ const classtable_elt_t VFT_parser___ReduceAction516[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction516 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155071,8 +157919,7 @@ const classtable_elt_t VFT_parser___ReduceAction516[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155080,6 +157927,17 @@ const classtable_elt_t VFT_parser___ReduceAction516[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction516 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155146,14 +158004,14 @@ val_t NEW_ReduceAction516_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction516_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction516();
   INIT_ATTRIBUTES__parser___ReduceAction516(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155180,16 +158038,6 @@ const classtable_elt_t VFT_parser___ReduceAction517[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction517 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155197,8 +158045,7 @@ const classtable_elt_t VFT_parser___ReduceAction517[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155206,6 +158053,17 @@ const classtable_elt_t VFT_parser___ReduceAction517[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction517 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155272,14 +158130,14 @@ val_t NEW_ReduceAction517_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction517_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction517();
   INIT_ATTRIBUTES__parser___ReduceAction517(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155306,16 +158164,6 @@ const classtable_elt_t VFT_parser___ReduceAction521[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction521 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155323,8 +158171,7 @@ const classtable_elt_t VFT_parser___ReduceAction521[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155332,6 +158179,17 @@ const classtable_elt_t VFT_parser___ReduceAction521[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction521 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155398,14 +158256,14 @@ val_t NEW_ReduceAction521_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction521_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction521();
   INIT_ATTRIBUTES__parser___ReduceAction521(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155432,16 +158290,6 @@ const classtable_elt_t VFT_parser___ReduceAction523[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction523 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155449,8 +158297,7 @@ const classtable_elt_t VFT_parser___ReduceAction523[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155458,6 +158305,17 @@ const classtable_elt_t VFT_parser___ReduceAction523[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction523 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155524,14 +158382,14 @@ val_t NEW_ReduceAction523_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction523_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction523();
   INIT_ATTRIBUTES__parser___ReduceAction523(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155558,16 +158416,6 @@ const classtable_elt_t VFT_parser___ReduceAction525[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction525 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155575,8 +158423,7 @@ const classtable_elt_t VFT_parser___ReduceAction525[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155584,6 +158431,17 @@ const classtable_elt_t VFT_parser___ReduceAction525[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction525 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155650,14 +158508,14 @@ val_t NEW_ReduceAction525_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction525_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction525();
   INIT_ATTRIBUTES__parser___ReduceAction525(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155684,16 +158542,6 @@ const classtable_elt_t VFT_parser___ReduceAction526[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction526 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155701,8 +158549,7 @@ const classtable_elt_t VFT_parser___ReduceAction526[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155710,6 +158557,17 @@ const classtable_elt_t VFT_parser___ReduceAction526[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction526 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155776,14 +158634,14 @@ val_t NEW_ReduceAction526_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction526_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction526();
   INIT_ATTRIBUTES__parser___ReduceAction526(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155810,16 +158668,6 @@ const classtable_elt_t VFT_parser___ReduceAction527[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction527 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155827,8 +158675,7 @@ const classtable_elt_t VFT_parser___ReduceAction527[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155836,6 +158683,17 @@ const classtable_elt_t VFT_parser___ReduceAction527[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction527 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -155902,14 +158760,14 @@ val_t NEW_ReduceAction527_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction527_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction527();
   INIT_ATTRIBUTES__parser___ReduceAction527(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -155936,16 +158794,6 @@ const classtable_elt_t VFT_parser___ReduceAction529[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction529 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -155953,8 +158801,7 @@ const classtable_elt_t VFT_parser___ReduceAction529[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155962,6 +158809,17 @@ const classtable_elt_t VFT_parser___ReduceAction529[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction529 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156028,14 +158886,14 @@ val_t NEW_ReduceAction529_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction529_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction529();
   INIT_ATTRIBUTES__parser___ReduceAction529(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156062,16 +158920,6 @@ const classtable_elt_t VFT_parser___ReduceAction531[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction531 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156079,8 +158927,7 @@ const classtable_elt_t VFT_parser___ReduceAction531[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156088,6 +158935,17 @@ const classtable_elt_t VFT_parser___ReduceAction531[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction531 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156154,14 +159012,14 @@ val_t NEW_ReduceAction531_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction531_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction531();
   INIT_ATTRIBUTES__parser___ReduceAction531(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156188,16 +159046,6 @@ const classtable_elt_t VFT_parser___ReduceAction532[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction532 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156205,8 +159053,7 @@ const classtable_elt_t VFT_parser___ReduceAction532[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156214,6 +159061,17 @@ const classtable_elt_t VFT_parser___ReduceAction532[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction532 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156280,14 +159138,14 @@ val_t NEW_ReduceAction532_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction532_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction532();
   INIT_ATTRIBUTES__parser___ReduceAction532(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156314,16 +159172,6 @@ const classtable_elt_t VFT_parser___ReduceAction533[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction533 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156331,8 +159179,7 @@ const classtable_elt_t VFT_parser___ReduceAction533[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156340,6 +159187,17 @@ const classtable_elt_t VFT_parser___ReduceAction533[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction533 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156406,14 +159264,14 @@ val_t NEW_ReduceAction533_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction533_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction533();
   INIT_ATTRIBUTES__parser___ReduceAction533(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156440,16 +159298,6 @@ const classtable_elt_t VFT_parser___ReduceAction534[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction534 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156457,8 +159305,7 @@ const classtable_elt_t VFT_parser___ReduceAction534[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156466,6 +159313,17 @@ const classtable_elt_t VFT_parser___ReduceAction534[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction534 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156532,14 +159390,14 @@ val_t NEW_ReduceAction534_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction534_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction534();
   INIT_ATTRIBUTES__parser___ReduceAction534(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156566,16 +159424,6 @@ const classtable_elt_t VFT_parser___ReduceAction535[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction535 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156583,8 +159431,7 @@ const classtable_elt_t VFT_parser___ReduceAction535[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156592,6 +159439,17 @@ const classtable_elt_t VFT_parser___ReduceAction535[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction535 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156658,14 +159516,14 @@ val_t NEW_ReduceAction535_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction535_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction535();
   INIT_ATTRIBUTES__parser___ReduceAction535(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156692,16 +159550,6 @@ const classtable_elt_t VFT_parser___ReduceAction536[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction536 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156709,8 +159557,7 @@ const classtable_elt_t VFT_parser___ReduceAction536[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156718,6 +159565,17 @@ const classtable_elt_t VFT_parser___ReduceAction536[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction536 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156784,14 +159642,14 @@ val_t NEW_ReduceAction536_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction536_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction536();
   INIT_ATTRIBUTES__parser___ReduceAction536(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156818,16 +159676,6 @@ const classtable_elt_t VFT_parser___ReduceAction537[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction537 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156835,8 +159683,7 @@ const classtable_elt_t VFT_parser___ReduceAction537[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156844,6 +159691,17 @@ const classtable_elt_t VFT_parser___ReduceAction537[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction537 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -156910,14 +159768,14 @@ val_t NEW_ReduceAction537_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction537_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction537();
   INIT_ATTRIBUTES__parser___ReduceAction537(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -156944,16 +159802,6 @@ const classtable_elt_t VFT_parser___ReduceAction538[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction538 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -156961,8 +159809,7 @@ const classtable_elt_t VFT_parser___ReduceAction538[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156970,6 +159817,17 @@ const classtable_elt_t VFT_parser___ReduceAction538[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction538 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157036,14 +159894,14 @@ val_t NEW_ReduceAction538_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction538_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction538();
   INIT_ATTRIBUTES__parser___ReduceAction538(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157070,16 +159928,6 @@ const classtable_elt_t VFT_parser___ReduceAction539[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction539 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157087,8 +159935,7 @@ const classtable_elt_t VFT_parser___ReduceAction539[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157096,6 +159943,17 @@ const classtable_elt_t VFT_parser___ReduceAction539[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction539 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157162,14 +160020,14 @@ val_t NEW_ReduceAction539_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction539_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction539();
   INIT_ATTRIBUTES__parser___ReduceAction539(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157196,16 +160054,6 @@ const classtable_elt_t VFT_parser___ReduceAction540[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction540 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157213,8 +160061,7 @@ const classtable_elt_t VFT_parser___ReduceAction540[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157222,6 +160069,17 @@ const classtable_elt_t VFT_parser___ReduceAction540[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction540 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157288,14 +160146,14 @@ val_t NEW_ReduceAction540_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction540_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction540();
   INIT_ATTRIBUTES__parser___ReduceAction540(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157322,16 +160180,6 @@ const classtable_elt_t VFT_parser___ReduceAction541[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction541 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157339,8 +160187,7 @@ const classtable_elt_t VFT_parser___ReduceAction541[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157348,6 +160195,17 @@ const classtable_elt_t VFT_parser___ReduceAction541[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction541 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157414,14 +160272,14 @@ val_t NEW_ReduceAction541_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction541_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction541();
   INIT_ATTRIBUTES__parser___ReduceAction541(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157448,16 +160306,6 @@ const classtable_elt_t VFT_parser___ReduceAction543[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction543 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157465,8 +160313,7 @@ const classtable_elt_t VFT_parser___ReduceAction543[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157474,6 +160321,17 @@ const classtable_elt_t VFT_parser___ReduceAction543[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction543 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157540,14 +160398,14 @@ val_t NEW_ReduceAction543_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction543_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction543();
   INIT_ATTRIBUTES__parser___ReduceAction543(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157574,16 +160432,6 @@ const classtable_elt_t VFT_parser___ReduceAction544[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction544 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157591,8 +160439,7 @@ const classtable_elt_t VFT_parser___ReduceAction544[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157600,6 +160447,17 @@ const classtable_elt_t VFT_parser___ReduceAction544[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction544 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157666,14 +160524,14 @@ val_t NEW_ReduceAction544_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction544_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction544();
   INIT_ATTRIBUTES__parser___ReduceAction544(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157700,16 +160558,6 @@ const classtable_elt_t VFT_parser___ReduceAction546[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction546 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157717,8 +160565,7 @@ const classtable_elt_t VFT_parser___ReduceAction546[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157726,6 +160573,17 @@ const classtable_elt_t VFT_parser___ReduceAction546[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction546 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157792,14 +160650,14 @@ val_t NEW_ReduceAction546_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction546_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction546();
   INIT_ATTRIBUTES__parser___ReduceAction546(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157826,16 +160684,6 @@ const classtable_elt_t VFT_parser___ReduceAction547[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction547 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157843,8 +160691,7 @@ const classtable_elt_t VFT_parser___ReduceAction547[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157852,6 +160699,17 @@ const classtable_elt_t VFT_parser___ReduceAction547[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction547 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -157918,14 +160776,14 @@ val_t NEW_ReduceAction547_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction547_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction547();
   INIT_ATTRIBUTES__parser___ReduceAction547(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -157952,16 +160810,6 @@ const classtable_elt_t VFT_parser___ReduceAction548[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction548 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -157969,8 +160817,7 @@ const classtable_elt_t VFT_parser___ReduceAction548[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157978,6 +160825,17 @@ const classtable_elt_t VFT_parser___ReduceAction548[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction548 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158044,14 +160902,14 @@ val_t NEW_ReduceAction548_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction548_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction548();
   INIT_ATTRIBUTES__parser___ReduceAction548(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158078,16 +160936,6 @@ const classtable_elt_t VFT_parser___ReduceAction550[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction550 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158095,8 +160943,7 @@ const classtable_elt_t VFT_parser___ReduceAction550[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158104,6 +160951,17 @@ const classtable_elt_t VFT_parser___ReduceAction550[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction550 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158170,14 +161028,14 @@ val_t NEW_ReduceAction550_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction550_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction550();
   INIT_ATTRIBUTES__parser___ReduceAction550(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158204,16 +161062,6 @@ const classtable_elt_t VFT_parser___ReduceAction551[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction551 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158221,8 +161069,7 @@ const classtable_elt_t VFT_parser___ReduceAction551[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158230,6 +161077,17 @@ const classtable_elt_t VFT_parser___ReduceAction551[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction551 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158296,14 +161154,14 @@ val_t NEW_ReduceAction551_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction551_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction551();
   INIT_ATTRIBUTES__parser___ReduceAction551(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158330,16 +161188,6 @@ const classtable_elt_t VFT_parser___ReduceAction553[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction553 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158347,8 +161195,7 @@ const classtable_elt_t VFT_parser___ReduceAction553[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158356,6 +161203,17 @@ const classtable_elt_t VFT_parser___ReduceAction553[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction553 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158422,14 +161280,14 @@ val_t NEW_ReduceAction553_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction553_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction553();
   INIT_ATTRIBUTES__parser___ReduceAction553(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158456,16 +161314,6 @@ const classtable_elt_t VFT_parser___ReduceAction554[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction554 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158473,8 +161321,7 @@ const classtable_elt_t VFT_parser___ReduceAction554[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158482,6 +161329,17 @@ const classtable_elt_t VFT_parser___ReduceAction554[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction554 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158548,14 +161406,14 @@ val_t NEW_ReduceAction554_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction554_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction554();
   INIT_ATTRIBUTES__parser___ReduceAction554(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158582,16 +161440,6 @@ const classtable_elt_t VFT_parser___ReduceAction555[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction555 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158599,8 +161447,7 @@ const classtable_elt_t VFT_parser___ReduceAction555[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158608,6 +161455,17 @@ const classtable_elt_t VFT_parser___ReduceAction555[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction555 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158674,14 +161532,14 @@ val_t NEW_ReduceAction555_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction555_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction555();
   INIT_ATTRIBUTES__parser___ReduceAction555(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158708,16 +161566,6 @@ const classtable_elt_t VFT_parser___ReduceAction556[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction556 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158725,8 +161573,7 @@ const classtable_elt_t VFT_parser___ReduceAction556[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158734,6 +161581,17 @@ const classtable_elt_t VFT_parser___ReduceAction556[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction556 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158800,14 +161658,14 @@ val_t NEW_ReduceAction556_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction556_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction556();
   INIT_ATTRIBUTES__parser___ReduceAction556(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158834,16 +161692,6 @@ const classtable_elt_t VFT_parser___ReduceAction557[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction557 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158851,8 +161699,7 @@ const classtable_elt_t VFT_parser___ReduceAction557[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158860,6 +161707,17 @@ const classtable_elt_t VFT_parser___ReduceAction557[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction557 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -158926,14 +161784,14 @@ val_t NEW_ReduceAction557_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction557_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction557();
   INIT_ATTRIBUTES__parser___ReduceAction557(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -158960,16 +161818,6 @@ const classtable_elt_t VFT_parser___ReduceAction564[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction564 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -158977,8 +161825,7 @@ const classtable_elt_t VFT_parser___ReduceAction564[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158986,6 +161833,17 @@ const classtable_elt_t VFT_parser___ReduceAction564[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction564 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159052,14 +161910,14 @@ val_t NEW_ReduceAction564_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction564_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction564();
   INIT_ATTRIBUTES__parser___ReduceAction564(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159086,16 +161944,6 @@ const classtable_elt_t VFT_parser___ReduceAction565[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction565 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159103,8 +161951,7 @@ const classtable_elt_t VFT_parser___ReduceAction565[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159112,6 +161959,17 @@ const classtable_elt_t VFT_parser___ReduceAction565[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction565 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159178,14 +162036,14 @@ val_t NEW_ReduceAction565_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction565_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction565();
   INIT_ATTRIBUTES__parser___ReduceAction565(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159212,16 +162070,6 @@ const classtable_elt_t VFT_parser___ReduceAction566[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction566 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159229,8 +162077,7 @@ const classtable_elt_t VFT_parser___ReduceAction566[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159238,6 +162085,17 @@ const classtable_elt_t VFT_parser___ReduceAction566[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction566 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159304,14 +162162,14 @@ val_t NEW_ReduceAction566_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction566_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction566();
   INIT_ATTRIBUTES__parser___ReduceAction566(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159338,16 +162196,6 @@ const classtable_elt_t VFT_parser___ReduceAction567[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction567 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159355,8 +162203,7 @@ const classtable_elt_t VFT_parser___ReduceAction567[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159364,6 +162211,17 @@ const classtable_elt_t VFT_parser___ReduceAction567[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction567 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159430,14 +162288,14 @@ val_t NEW_ReduceAction567_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction567_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction567();
   INIT_ATTRIBUTES__parser___ReduceAction567(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159464,16 +162322,6 @@ const classtable_elt_t VFT_parser___ReduceAction568[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction568 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159481,8 +162329,7 @@ const classtable_elt_t VFT_parser___ReduceAction568[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159490,6 +162337,17 @@ const classtable_elt_t VFT_parser___ReduceAction568[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction568 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159556,14 +162414,14 @@ val_t NEW_ReduceAction568_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction568_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction568();
   INIT_ATTRIBUTES__parser___ReduceAction568(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159590,16 +162448,6 @@ const classtable_elt_t VFT_parser___ReduceAction569[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction569 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159607,8 +162455,7 @@ const classtable_elt_t VFT_parser___ReduceAction569[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159616,6 +162463,17 @@ const classtable_elt_t VFT_parser___ReduceAction569[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction569 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159682,14 +162540,14 @@ val_t NEW_ReduceAction569_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction569_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction569();
   INIT_ATTRIBUTES__parser___ReduceAction569(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159716,16 +162574,6 @@ const classtable_elt_t VFT_parser___ReduceAction570[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction570 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159733,8 +162581,7 @@ const classtable_elt_t VFT_parser___ReduceAction570[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159742,6 +162589,17 @@ const classtable_elt_t VFT_parser___ReduceAction570[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction570 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159808,14 +162666,14 @@ val_t NEW_ReduceAction570_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction570_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction570();
   INIT_ATTRIBUTES__parser___ReduceAction570(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159842,16 +162700,6 @@ const classtable_elt_t VFT_parser___ReduceAction571[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction571 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159859,8 +162707,7 @@ const classtable_elt_t VFT_parser___ReduceAction571[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159868,6 +162715,17 @@ const classtable_elt_t VFT_parser___ReduceAction571[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction571 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -159934,14 +162792,14 @@ val_t NEW_ReduceAction571_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction571_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction571();
   INIT_ATTRIBUTES__parser___ReduceAction571(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -159968,16 +162826,6 @@ const classtable_elt_t VFT_parser___ReduceAction572[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction572 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -159985,8 +162833,7 @@ const classtable_elt_t VFT_parser___ReduceAction572[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159994,6 +162841,17 @@ const classtable_elt_t VFT_parser___ReduceAction572[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction572 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160060,14 +162918,14 @@ val_t NEW_ReduceAction572_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction572_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction572();
   INIT_ATTRIBUTES__parser___ReduceAction572(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160094,16 +162952,6 @@ const classtable_elt_t VFT_parser___ReduceAction573[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction573 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160111,8 +162959,7 @@ const classtable_elt_t VFT_parser___ReduceAction573[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160120,6 +162967,17 @@ const classtable_elt_t VFT_parser___ReduceAction573[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction573 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160186,14 +163044,14 @@ val_t NEW_ReduceAction573_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction573_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction573();
   INIT_ATTRIBUTES__parser___ReduceAction573(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160220,16 +163078,6 @@ const classtable_elt_t VFT_parser___ReduceAction574[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction574 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160237,8 +163085,7 @@ const classtable_elt_t VFT_parser___ReduceAction574[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160246,6 +163093,17 @@ const classtable_elt_t VFT_parser___ReduceAction574[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction574 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160312,14 +163170,14 @@ val_t NEW_ReduceAction574_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction574_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction574();
   INIT_ATTRIBUTES__parser___ReduceAction574(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160346,16 +163204,6 @@ const classtable_elt_t VFT_parser___ReduceAction575[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction575 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160363,8 +163211,7 @@ const classtable_elt_t VFT_parser___ReduceAction575[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160372,6 +163219,17 @@ const classtable_elt_t VFT_parser___ReduceAction575[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction575 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160438,14 +163296,14 @@ val_t NEW_ReduceAction575_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction575_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction575();
   INIT_ATTRIBUTES__parser___ReduceAction575(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160472,16 +163330,6 @@ const classtable_elt_t VFT_parser___ReduceAction576[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction576 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160489,8 +163337,7 @@ const classtable_elt_t VFT_parser___ReduceAction576[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160498,6 +163345,17 @@ const classtable_elt_t VFT_parser___ReduceAction576[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction576 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160564,14 +163422,14 @@ val_t NEW_ReduceAction576_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction576_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction576();
   INIT_ATTRIBUTES__parser___ReduceAction576(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160598,16 +163456,6 @@ const classtable_elt_t VFT_parser___ReduceAction577[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction577 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160615,8 +163463,7 @@ const classtable_elt_t VFT_parser___ReduceAction577[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160624,6 +163471,17 @@ const classtable_elt_t VFT_parser___ReduceAction577[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction577 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160690,14 +163548,14 @@ val_t NEW_ReduceAction577_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction577_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction577();
   INIT_ATTRIBUTES__parser___ReduceAction577(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160724,16 +163582,6 @@ const classtable_elt_t VFT_parser___ReduceAction578[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction578 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160741,8 +163589,7 @@ const classtable_elt_t VFT_parser___ReduceAction578[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160750,6 +163597,17 @@ const classtable_elt_t VFT_parser___ReduceAction578[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction578 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160816,14 +163674,14 @@ val_t NEW_ReduceAction578_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction578_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction578();
   INIT_ATTRIBUTES__parser___ReduceAction578(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160850,16 +163708,6 @@ const classtable_elt_t VFT_parser___ReduceAction579[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction579 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160867,8 +163715,7 @@ const classtable_elt_t VFT_parser___ReduceAction579[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160876,6 +163723,17 @@ const classtable_elt_t VFT_parser___ReduceAction579[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction579 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -160942,14 +163800,14 @@ val_t NEW_ReduceAction579_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction579_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction579();
   INIT_ATTRIBUTES__parser___ReduceAction579(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -160976,16 +163834,6 @@ const classtable_elt_t VFT_parser___ReduceAction580[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction580 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -160993,8 +163841,7 @@ const classtable_elt_t VFT_parser___ReduceAction580[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161002,6 +163849,17 @@ const classtable_elt_t VFT_parser___ReduceAction580[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction580 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161068,14 +163926,14 @@ val_t NEW_ReduceAction580_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction580_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction580();
   INIT_ATTRIBUTES__parser___ReduceAction580(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161102,16 +163960,6 @@ const classtable_elt_t VFT_parser___ReduceAction581[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction581 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161119,8 +163967,7 @@ const classtable_elt_t VFT_parser___ReduceAction581[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161128,6 +163975,17 @@ const classtable_elt_t VFT_parser___ReduceAction581[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction581 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161194,14 +164052,14 @@ val_t NEW_ReduceAction581_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction581_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction581();
   INIT_ATTRIBUTES__parser___ReduceAction581(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161228,16 +164086,6 @@ const classtable_elt_t VFT_parser___ReduceAction582[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction582 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161245,8 +164093,7 @@ const classtable_elt_t VFT_parser___ReduceAction582[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161254,6 +164101,17 @@ const classtable_elt_t VFT_parser___ReduceAction582[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction582 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161320,14 +164178,14 @@ val_t NEW_ReduceAction582_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction582_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction582();
   INIT_ATTRIBUTES__parser___ReduceAction582(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161354,16 +164212,6 @@ const classtable_elt_t VFT_parser___ReduceAction583[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction583 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161371,8 +164219,7 @@ const classtable_elt_t VFT_parser___ReduceAction583[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161380,6 +164227,17 @@ const classtable_elt_t VFT_parser___ReduceAction583[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction583 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161446,14 +164304,14 @@ val_t NEW_ReduceAction583_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction583_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction583();
   INIT_ATTRIBUTES__parser___ReduceAction583(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161480,16 +164338,6 @@ const classtable_elt_t VFT_parser___ReduceAction584[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction584 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161497,8 +164345,7 @@ const classtable_elt_t VFT_parser___ReduceAction584[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161506,6 +164353,17 @@ const classtable_elt_t VFT_parser___ReduceAction584[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction584 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161572,14 +164430,14 @@ val_t NEW_ReduceAction584_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction584_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction584();
   INIT_ATTRIBUTES__parser___ReduceAction584(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161606,16 +164464,6 @@ const classtable_elt_t VFT_parser___ReduceAction585[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction585 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161623,8 +164471,7 @@ const classtable_elt_t VFT_parser___ReduceAction585[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161632,6 +164479,17 @@ const classtable_elt_t VFT_parser___ReduceAction585[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction585 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161698,14 +164556,14 @@ val_t NEW_ReduceAction585_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction585_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction585();
   INIT_ATTRIBUTES__parser___ReduceAction585(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161732,16 +164590,6 @@ const classtable_elt_t VFT_parser___ReduceAction586[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction586 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161749,8 +164597,7 @@ const classtable_elt_t VFT_parser___ReduceAction586[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161758,6 +164605,17 @@ const classtable_elt_t VFT_parser___ReduceAction586[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction586 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161824,14 +164682,14 @@ val_t NEW_ReduceAction586_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction586_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction586();
   INIT_ATTRIBUTES__parser___ReduceAction586(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161858,16 +164716,6 @@ const classtable_elt_t VFT_parser___ReduceAction587[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction587 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -161875,8 +164723,7 @@ const classtable_elt_t VFT_parser___ReduceAction587[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -161884,6 +164731,17 @@ const classtable_elt_t VFT_parser___ReduceAction587[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction587 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -161950,14 +164808,14 @@ val_t NEW_ReduceAction587_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction587_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction587();
   INIT_ATTRIBUTES__parser___ReduceAction587(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -161984,16 +164842,6 @@ const classtable_elt_t VFT_parser___ReduceAction589[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction589 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162001,8 +164849,7 @@ const classtable_elt_t VFT_parser___ReduceAction589[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162010,6 +164857,17 @@ const classtable_elt_t VFT_parser___ReduceAction589[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction589 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162076,14 +164934,14 @@ val_t NEW_ReduceAction589_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction589_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction589();
   INIT_ATTRIBUTES__parser___ReduceAction589(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162110,16 +164968,6 @@ const classtable_elt_t VFT_parser___ReduceAction590[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction590 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162127,8 +164975,7 @@ const classtable_elt_t VFT_parser___ReduceAction590[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162136,6 +164983,17 @@ const classtable_elt_t VFT_parser___ReduceAction590[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction590 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162202,14 +165060,14 @@ val_t NEW_ReduceAction590_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction590_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction590();
   INIT_ATTRIBUTES__parser___ReduceAction590(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162236,16 +165094,6 @@ const classtable_elt_t VFT_parser___ReduceAction591[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction591 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162253,8 +165101,7 @@ const classtable_elt_t VFT_parser___ReduceAction591[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162262,6 +165109,17 @@ const classtable_elt_t VFT_parser___ReduceAction591[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction591 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162328,14 +165186,14 @@ val_t NEW_ReduceAction591_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction591_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction591();
   INIT_ATTRIBUTES__parser___ReduceAction591(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162362,16 +165220,6 @@ const classtable_elt_t VFT_parser___ReduceAction592[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction592 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162379,8 +165227,7 @@ const classtable_elt_t VFT_parser___ReduceAction592[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162388,6 +165235,17 @@ const classtable_elt_t VFT_parser___ReduceAction592[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction592 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162454,14 +165312,14 @@ val_t NEW_ReduceAction592_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction592_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction592();
   INIT_ATTRIBUTES__parser___ReduceAction592(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162488,16 +165346,6 @@ const classtable_elt_t VFT_parser___ReduceAction593[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction593 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162505,8 +165353,7 @@ const classtable_elt_t VFT_parser___ReduceAction593[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162514,6 +165361,17 @@ const classtable_elt_t VFT_parser___ReduceAction593[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction593 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162580,14 +165438,14 @@ val_t NEW_ReduceAction593_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction593_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction593();
   INIT_ATTRIBUTES__parser___ReduceAction593(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162614,16 +165472,6 @@ const classtable_elt_t VFT_parser___ReduceAction594[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction594 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162631,8 +165479,7 @@ const classtable_elt_t VFT_parser___ReduceAction594[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162640,6 +165487,17 @@ const classtable_elt_t VFT_parser___ReduceAction594[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction594 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162706,14 +165564,14 @@ val_t NEW_ReduceAction594_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction594_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction594();
   INIT_ATTRIBUTES__parser___ReduceAction594(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162740,16 +165598,6 @@ const classtable_elt_t VFT_parser___ReduceAction595[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction595 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162757,8 +165605,7 @@ const classtable_elt_t VFT_parser___ReduceAction595[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162766,6 +165613,17 @@ const classtable_elt_t VFT_parser___ReduceAction595[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction595 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162832,14 +165690,14 @@ val_t NEW_ReduceAction595_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction595_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction595();
   INIT_ATTRIBUTES__parser___ReduceAction595(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162866,16 +165724,6 @@ const classtable_elt_t VFT_parser___ReduceAction596[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction596 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -162883,8 +165731,7 @@ const classtable_elt_t VFT_parser___ReduceAction596[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -162892,6 +165739,17 @@ const classtable_elt_t VFT_parser___ReduceAction596[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction596 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -162958,14 +165816,14 @@ val_t NEW_ReduceAction596_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction596_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction596();
   INIT_ATTRIBUTES__parser___ReduceAction596(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -162992,16 +165850,6 @@ const classtable_elt_t VFT_parser___ReduceAction597[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction597 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163009,8 +165857,7 @@ const classtable_elt_t VFT_parser___ReduceAction597[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163018,6 +165865,17 @@ const classtable_elt_t VFT_parser___ReduceAction597[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction597 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163084,14 +165942,14 @@ val_t NEW_ReduceAction597_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction597_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction597();
   INIT_ATTRIBUTES__parser___ReduceAction597(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163118,16 +165976,6 @@ const classtable_elt_t VFT_parser___ReduceAction598[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction598 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163135,8 +165983,7 @@ const classtable_elt_t VFT_parser___ReduceAction598[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163144,6 +165991,17 @@ const classtable_elt_t VFT_parser___ReduceAction598[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction598 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163210,14 +166068,14 @@ val_t NEW_ReduceAction598_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction598_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction598();
   INIT_ATTRIBUTES__parser___ReduceAction598(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163244,16 +166102,6 @@ const classtable_elt_t VFT_parser___ReduceAction600[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction600 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163261,8 +166109,7 @@ const classtable_elt_t VFT_parser___ReduceAction600[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163270,6 +166117,17 @@ const classtable_elt_t VFT_parser___ReduceAction600[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction600 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163336,14 +166194,14 @@ val_t NEW_ReduceAction600_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction600_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction600();
   INIT_ATTRIBUTES__parser___ReduceAction600(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163370,16 +166228,6 @@ const classtable_elt_t VFT_parser___ReduceAction601[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction601 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163387,8 +166235,7 @@ const classtable_elt_t VFT_parser___ReduceAction601[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163396,6 +166243,17 @@ const classtable_elt_t VFT_parser___ReduceAction601[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction601 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163462,14 +166320,14 @@ val_t NEW_ReduceAction601_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction601_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction601();
   INIT_ATTRIBUTES__parser___ReduceAction601(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163496,16 +166354,6 @@ const classtable_elt_t VFT_parser___ReduceAction602[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction602 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163513,8 +166361,7 @@ const classtable_elt_t VFT_parser___ReduceAction602[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163522,6 +166369,17 @@ const classtable_elt_t VFT_parser___ReduceAction602[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction602 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163588,14 +166446,14 @@ val_t NEW_ReduceAction602_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction602_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction602();
   INIT_ATTRIBUTES__parser___ReduceAction602(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163622,16 +166480,6 @@ const classtable_elt_t VFT_parser___ReduceAction603[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction603 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163639,8 +166487,7 @@ const classtable_elt_t VFT_parser___ReduceAction603[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163648,6 +166495,17 @@ const classtable_elt_t VFT_parser___ReduceAction603[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction603 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163714,14 +166572,14 @@ val_t NEW_ReduceAction603_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction603_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction603();
   INIT_ATTRIBUTES__parser___ReduceAction603(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163748,16 +166606,6 @@ const classtable_elt_t VFT_parser___ReduceAction604[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction604 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163765,8 +166613,7 @@ const classtable_elt_t VFT_parser___ReduceAction604[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163774,6 +166621,17 @@ const classtable_elt_t VFT_parser___ReduceAction604[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction604 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163840,14 +166698,14 @@ val_t NEW_ReduceAction604_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction604_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction604();
   INIT_ATTRIBUTES__parser___ReduceAction604(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -163874,16 +166732,6 @@ const classtable_elt_t VFT_parser___ReduceAction605[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction605 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -163891,8 +166739,7 @@ const classtable_elt_t VFT_parser___ReduceAction605[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -163900,6 +166747,17 @@ const classtable_elt_t VFT_parser___ReduceAction605[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction605 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -163966,14 +166824,14 @@ val_t NEW_ReduceAction605_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction605_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction605();
   INIT_ATTRIBUTES__parser___ReduceAction605(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164000,16 +166858,6 @@ const classtable_elt_t VFT_parser___ReduceAction606[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction606 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164017,8 +166865,7 @@ const classtable_elt_t VFT_parser___ReduceAction606[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164026,6 +166873,17 @@ const classtable_elt_t VFT_parser___ReduceAction606[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction606 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164092,14 +166950,14 @@ val_t NEW_ReduceAction606_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction606_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction606();
   INIT_ATTRIBUTES__parser___ReduceAction606(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164126,16 +166984,6 @@ const classtable_elt_t VFT_parser___ReduceAction607[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction607 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164143,8 +166991,7 @@ const classtable_elt_t VFT_parser___ReduceAction607[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164152,6 +166999,17 @@ const classtable_elt_t VFT_parser___ReduceAction607[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction607 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164218,14 +167076,14 @@ val_t NEW_ReduceAction607_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction607_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction607();
   INIT_ATTRIBUTES__parser___ReduceAction607(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164252,16 +167110,6 @@ const classtable_elt_t VFT_parser___ReduceAction608[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction608 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164269,8 +167117,7 @@ const classtable_elt_t VFT_parser___ReduceAction608[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164278,6 +167125,17 @@ const classtable_elt_t VFT_parser___ReduceAction608[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction608 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164344,14 +167202,14 @@ val_t NEW_ReduceAction608_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction608_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction608();
   INIT_ATTRIBUTES__parser___ReduceAction608(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164378,16 +167236,6 @@ const classtable_elt_t VFT_parser___ReduceAction609[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction609 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164395,8 +167243,7 @@ const classtable_elt_t VFT_parser___ReduceAction609[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164404,6 +167251,17 @@ const classtable_elt_t VFT_parser___ReduceAction609[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction609 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164470,14 +167328,14 @@ val_t NEW_ReduceAction609_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction609_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction609();
   INIT_ATTRIBUTES__parser___ReduceAction609(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164504,16 +167362,6 @@ const classtable_elt_t VFT_parser___ReduceAction610[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction610 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164521,8 +167369,7 @@ const classtable_elt_t VFT_parser___ReduceAction610[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164530,6 +167377,17 @@ const classtable_elt_t VFT_parser___ReduceAction610[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction610 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164596,14 +167454,14 @@ val_t NEW_ReduceAction610_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction610_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction610();
   INIT_ATTRIBUTES__parser___ReduceAction610(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164630,16 +167488,6 @@ const classtable_elt_t VFT_parser___ReduceAction612[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction612 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164647,8 +167495,7 @@ const classtable_elt_t VFT_parser___ReduceAction612[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164656,6 +167503,17 @@ const classtable_elt_t VFT_parser___ReduceAction612[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction612 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164722,14 +167580,14 @@ val_t NEW_ReduceAction612_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction612_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction612();
   INIT_ATTRIBUTES__parser___ReduceAction612(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164756,16 +167614,6 @@ const classtable_elt_t VFT_parser___ReduceAction613[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction613 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164773,8 +167621,7 @@ const classtable_elt_t VFT_parser___ReduceAction613[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164782,6 +167629,17 @@ const classtable_elt_t VFT_parser___ReduceAction613[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction613 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164848,14 +167706,14 @@ val_t NEW_ReduceAction613_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction613_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction613();
   INIT_ATTRIBUTES__parser___ReduceAction613(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -164882,16 +167740,6 @@ const classtable_elt_t VFT_parser___ReduceAction614[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction614 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -164899,8 +167747,7 @@ const classtable_elt_t VFT_parser___ReduceAction614[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -164908,6 +167755,17 @@ const classtable_elt_t VFT_parser___ReduceAction614[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction614 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -164974,14 +167832,14 @@ val_t NEW_ReduceAction614_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction614_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction614();
   INIT_ATTRIBUTES__parser___ReduceAction614(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165008,16 +167866,6 @@ const classtable_elt_t VFT_parser___ReduceAction615[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction615 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165025,8 +167873,7 @@ const classtable_elt_t VFT_parser___ReduceAction615[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165034,6 +167881,17 @@ const classtable_elt_t VFT_parser___ReduceAction615[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction615 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165100,14 +167958,14 @@ val_t NEW_ReduceAction615_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction615_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction615();
   INIT_ATTRIBUTES__parser___ReduceAction615(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165134,16 +167992,6 @@ const classtable_elt_t VFT_parser___ReduceAction616[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction616 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165151,8 +167999,7 @@ const classtable_elt_t VFT_parser___ReduceAction616[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165160,6 +168007,17 @@ const classtable_elt_t VFT_parser___ReduceAction616[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction616 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165226,14 +168084,14 @@ val_t NEW_ReduceAction616_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction616_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction616();
   INIT_ATTRIBUTES__parser___ReduceAction616(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165260,16 +168118,6 @@ const classtable_elt_t VFT_parser___ReduceAction617[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction617 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165277,8 +168125,7 @@ const classtable_elt_t VFT_parser___ReduceAction617[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165286,6 +168133,17 @@ const classtable_elt_t VFT_parser___ReduceAction617[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction617 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165352,14 +168210,14 @@ val_t NEW_ReduceAction617_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction617_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction617();
   INIT_ATTRIBUTES__parser___ReduceAction617(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165386,16 +168244,6 @@ const classtable_elt_t VFT_parser___ReduceAction618[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction618 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165403,8 +168251,7 @@ const classtable_elt_t VFT_parser___ReduceAction618[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165412,6 +168259,17 @@ const classtable_elt_t VFT_parser___ReduceAction618[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction618 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165478,14 +168336,14 @@ val_t NEW_ReduceAction618_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction618_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction618();
   INIT_ATTRIBUTES__parser___ReduceAction618(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165512,16 +168370,6 @@ const classtable_elt_t VFT_parser___ReduceAction619[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction619 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165529,8 +168377,7 @@ const classtable_elt_t VFT_parser___ReduceAction619[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165538,6 +168385,17 @@ const classtable_elt_t VFT_parser___ReduceAction619[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction619 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165604,14 +168462,14 @@ val_t NEW_ReduceAction619_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction619_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction619();
   INIT_ATTRIBUTES__parser___ReduceAction619(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165638,16 +168496,6 @@ const classtable_elt_t VFT_parser___ReduceAction620[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction620 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165655,8 +168503,7 @@ const classtable_elt_t VFT_parser___ReduceAction620[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165664,6 +168511,17 @@ const classtable_elt_t VFT_parser___ReduceAction620[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction620 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165730,14 +168588,14 @@ val_t NEW_ReduceAction620_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction620_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction620();
   INIT_ATTRIBUTES__parser___ReduceAction620(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165764,16 +168622,6 @@ const classtable_elt_t VFT_parser___ReduceAction621[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction621 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165781,8 +168629,7 @@ const classtable_elt_t VFT_parser___ReduceAction621[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165790,6 +168637,17 @@ const classtable_elt_t VFT_parser___ReduceAction621[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction621 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165856,14 +168714,14 @@ val_t NEW_ReduceAction621_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction621_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction621();
   INIT_ATTRIBUTES__parser___ReduceAction621(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -165890,16 +168748,6 @@ const classtable_elt_t VFT_parser___ReduceAction622[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction622 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -165907,8 +168755,7 @@ const classtable_elt_t VFT_parser___ReduceAction622[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -165916,6 +168763,17 @@ const classtable_elt_t VFT_parser___ReduceAction622[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction622 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -165982,14 +168840,14 @@ val_t NEW_ReduceAction622_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction622_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction622();
   INIT_ATTRIBUTES__parser___ReduceAction622(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166016,16 +168874,6 @@ const classtable_elt_t VFT_parser___ReduceAction624[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction624 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166033,8 +168881,7 @@ const classtable_elt_t VFT_parser___ReduceAction624[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166042,6 +168889,17 @@ const classtable_elt_t VFT_parser___ReduceAction624[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction624 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166108,14 +168966,14 @@ val_t NEW_ReduceAction624_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction624_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction624();
   INIT_ATTRIBUTES__parser___ReduceAction624(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166142,16 +169000,6 @@ const classtable_elt_t VFT_parser___ReduceAction625[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction625 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166159,8 +169007,7 @@ const classtable_elt_t VFT_parser___ReduceAction625[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166168,6 +169015,17 @@ const classtable_elt_t VFT_parser___ReduceAction625[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction625 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166234,14 +169092,14 @@ val_t NEW_ReduceAction625_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction625_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction625();
   INIT_ATTRIBUTES__parser___ReduceAction625(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166268,16 +169126,6 @@ const classtable_elt_t VFT_parser___ReduceAction626[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction626 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166285,8 +169133,7 @@ const classtable_elt_t VFT_parser___ReduceAction626[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166294,6 +169141,17 @@ const classtable_elt_t VFT_parser___ReduceAction626[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction626 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166360,14 +169218,14 @@ val_t NEW_ReduceAction626_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction626_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction626();
   INIT_ATTRIBUTES__parser___ReduceAction626(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166394,16 +169252,6 @@ const classtable_elt_t VFT_parser___ReduceAction627[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction627 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166411,8 +169259,7 @@ const classtable_elt_t VFT_parser___ReduceAction627[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166420,6 +169267,17 @@ const classtable_elt_t VFT_parser___ReduceAction627[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction627 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166486,14 +169344,14 @@ val_t NEW_ReduceAction627_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction627_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction627();
   INIT_ATTRIBUTES__parser___ReduceAction627(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166520,16 +169378,6 @@ const classtable_elt_t VFT_parser___ReduceAction628[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction628 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166537,8 +169385,7 @@ const classtable_elt_t VFT_parser___ReduceAction628[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166546,6 +169393,17 @@ const classtable_elt_t VFT_parser___ReduceAction628[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction628 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166612,14 +169470,14 @@ val_t NEW_ReduceAction628_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction628_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction628();
   INIT_ATTRIBUTES__parser___ReduceAction628(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166646,16 +169504,6 @@ const classtable_elt_t VFT_parser___ReduceAction629[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction629 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166663,8 +169511,7 @@ const classtable_elt_t VFT_parser___ReduceAction629[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166672,6 +169519,17 @@ const classtable_elt_t VFT_parser___ReduceAction629[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction629 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166738,14 +169596,14 @@ val_t NEW_ReduceAction629_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction629_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction629();
   INIT_ATTRIBUTES__parser___ReduceAction629(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166772,16 +169630,6 @@ const classtable_elt_t VFT_parser___ReduceAction630[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction630 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166789,8 +169637,7 @@ const classtable_elt_t VFT_parser___ReduceAction630[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166798,6 +169645,17 @@ const classtable_elt_t VFT_parser___ReduceAction630[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction630 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166864,14 +169722,14 @@ val_t NEW_ReduceAction630_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction630_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction630();
   INIT_ATTRIBUTES__parser___ReduceAction630(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -166898,16 +169756,6 @@ const classtable_elt_t VFT_parser___ReduceAction631[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction631 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -166915,8 +169763,7 @@ const classtable_elt_t VFT_parser___ReduceAction631[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -166924,6 +169771,17 @@ const classtable_elt_t VFT_parser___ReduceAction631[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction631 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -166990,14 +169848,14 @@ val_t NEW_ReduceAction631_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction631_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction631();
   INIT_ATTRIBUTES__parser___ReduceAction631(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167024,16 +169882,6 @@ const classtable_elt_t VFT_parser___ReduceAction633[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction633 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167041,8 +169889,7 @@ const classtable_elt_t VFT_parser___ReduceAction633[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167050,6 +169897,17 @@ const classtable_elt_t VFT_parser___ReduceAction633[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction633 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167116,14 +169974,14 @@ val_t NEW_ReduceAction633_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction633_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction633();
   INIT_ATTRIBUTES__parser___ReduceAction633(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167150,16 +170008,6 @@ const classtable_elt_t VFT_parser___ReduceAction636[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction636 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167167,8 +170015,7 @@ const classtable_elt_t VFT_parser___ReduceAction636[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167176,6 +170023,17 @@ const classtable_elt_t VFT_parser___ReduceAction636[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction636 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167242,14 +170100,14 @@ val_t NEW_ReduceAction636_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction636_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction636();
   INIT_ATTRIBUTES__parser___ReduceAction636(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167276,16 +170134,6 @@ const classtable_elt_t VFT_parser___ReduceAction637[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction637 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167293,8 +170141,7 @@ const classtable_elt_t VFT_parser___ReduceAction637[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167302,6 +170149,17 @@ const classtable_elt_t VFT_parser___ReduceAction637[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction637 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167368,14 +170226,14 @@ val_t NEW_ReduceAction637_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction637_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction637();
   INIT_ATTRIBUTES__parser___ReduceAction637(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167402,16 +170260,6 @@ const classtable_elt_t VFT_parser___ReduceAction638[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction638 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167419,8 +170267,7 @@ const classtable_elt_t VFT_parser___ReduceAction638[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167428,6 +170275,17 @@ const classtable_elt_t VFT_parser___ReduceAction638[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction638 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167494,14 +170352,14 @@ val_t NEW_ReduceAction638_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction638_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction638();
   INIT_ATTRIBUTES__parser___ReduceAction638(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167528,16 +170386,6 @@ const classtable_elt_t VFT_parser___ReduceAction639[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction639 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167545,8 +170393,7 @@ const classtable_elt_t VFT_parser___ReduceAction639[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167554,6 +170401,17 @@ const classtable_elt_t VFT_parser___ReduceAction639[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction639 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167620,14 +170478,14 @@ val_t NEW_ReduceAction639_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction639_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction639();
   INIT_ATTRIBUTES__parser___ReduceAction639(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167654,16 +170512,6 @@ const classtable_elt_t VFT_parser___ReduceAction640[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction640 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167671,8 +170519,7 @@ const classtable_elt_t VFT_parser___ReduceAction640[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167680,6 +170527,17 @@ const classtable_elt_t VFT_parser___ReduceAction640[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction640 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167746,14 +170604,14 @@ val_t NEW_ReduceAction640_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction640_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction640();
   INIT_ATTRIBUTES__parser___ReduceAction640(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167780,16 +170638,6 @@ const classtable_elt_t VFT_parser___ReduceAction641[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction641 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167797,8 +170645,7 @@ const classtable_elt_t VFT_parser___ReduceAction641[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167806,6 +170653,17 @@ const classtable_elt_t VFT_parser___ReduceAction641[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction641 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167872,14 +170730,14 @@ val_t NEW_ReduceAction641_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction641_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction641();
   INIT_ATTRIBUTES__parser___ReduceAction641(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -167906,16 +170764,6 @@ const classtable_elt_t VFT_parser___ReduceAction642[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction642 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -167923,8 +170771,7 @@ const classtable_elt_t VFT_parser___ReduceAction642[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -167932,6 +170779,17 @@ const classtable_elt_t VFT_parser___ReduceAction642[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction642 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -167998,14 +170856,14 @@ val_t NEW_ReduceAction642_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction642_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction642();
   INIT_ATTRIBUTES__parser___ReduceAction642(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168032,16 +170890,6 @@ const classtable_elt_t VFT_parser___ReduceAction643[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction643 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168049,8 +170897,7 @@ const classtable_elt_t VFT_parser___ReduceAction643[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168058,6 +170905,17 @@ const classtable_elt_t VFT_parser___ReduceAction643[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction643 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168124,14 +170982,14 @@ val_t NEW_ReduceAction643_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction643_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction643();
   INIT_ATTRIBUTES__parser___ReduceAction643(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168158,16 +171016,6 @@ const classtable_elt_t VFT_parser___ReduceAction644[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction644 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168175,8 +171023,7 @@ const classtable_elt_t VFT_parser___ReduceAction644[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168184,6 +171031,17 @@ const classtable_elt_t VFT_parser___ReduceAction644[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction644 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168250,14 +171108,14 @@ val_t NEW_ReduceAction644_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction644_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction644();
   INIT_ATTRIBUTES__parser___ReduceAction644(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168284,16 +171142,6 @@ const classtable_elt_t VFT_parser___ReduceAction645[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction645 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168301,8 +171149,7 @@ const classtable_elt_t VFT_parser___ReduceAction645[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168310,6 +171157,17 @@ const classtable_elt_t VFT_parser___ReduceAction645[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction645 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168376,14 +171234,14 @@ val_t NEW_ReduceAction645_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction645_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction645();
   INIT_ATTRIBUTES__parser___ReduceAction645(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168410,16 +171268,6 @@ const classtable_elt_t VFT_parser___ReduceAction646[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction646 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168427,8 +171275,7 @@ const classtable_elt_t VFT_parser___ReduceAction646[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168436,6 +171283,17 @@ const classtable_elt_t VFT_parser___ReduceAction646[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction646 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168502,14 +171360,14 @@ val_t NEW_ReduceAction646_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction646_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction646();
   INIT_ATTRIBUTES__parser___ReduceAction646(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168536,16 +171394,6 @@ const classtable_elt_t VFT_parser___ReduceAction647[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction647 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168553,8 +171401,7 @@ const classtable_elt_t VFT_parser___ReduceAction647[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168562,6 +171409,17 @@ const classtable_elt_t VFT_parser___ReduceAction647[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction647 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168628,14 +171486,14 @@ val_t NEW_ReduceAction647_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction647_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction647();
   INIT_ATTRIBUTES__parser___ReduceAction647(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168662,16 +171520,6 @@ const classtable_elt_t VFT_parser___ReduceAction648[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction648 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168679,8 +171527,7 @@ const classtable_elt_t VFT_parser___ReduceAction648[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168688,6 +171535,17 @@ const classtable_elt_t VFT_parser___ReduceAction648[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction648 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168754,14 +171612,14 @@ val_t NEW_ReduceAction648_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction648_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction648();
   INIT_ATTRIBUTES__parser___ReduceAction648(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168788,16 +171646,6 @@ const classtable_elt_t VFT_parser___ReduceAction649[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction649 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168805,8 +171653,7 @@ const classtable_elt_t VFT_parser___ReduceAction649[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168814,6 +171661,17 @@ const classtable_elt_t VFT_parser___ReduceAction649[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction649 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -168880,14 +171738,14 @@ val_t NEW_ReduceAction649_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction649_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction649();
   INIT_ATTRIBUTES__parser___ReduceAction649(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -168914,16 +171772,6 @@ const classtable_elt_t VFT_parser___ReduceAction650[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction650 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -168931,8 +171779,7 @@ const classtable_elt_t VFT_parser___ReduceAction650[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -168940,6 +171787,17 @@ const classtable_elt_t VFT_parser___ReduceAction650[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction650 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169006,14 +171864,14 @@ val_t NEW_ReduceAction650_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction650_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction650();
   INIT_ATTRIBUTES__parser___ReduceAction650(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169040,16 +171898,6 @@ const classtable_elt_t VFT_parser___ReduceAction651[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction651 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169057,8 +171905,7 @@ const classtable_elt_t VFT_parser___ReduceAction651[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169066,6 +171913,17 @@ const classtable_elt_t VFT_parser___ReduceAction651[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction651 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169132,14 +171990,14 @@ val_t NEW_ReduceAction651_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction651_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction651();
   INIT_ATTRIBUTES__parser___ReduceAction651(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169166,16 +172024,6 @@ const classtable_elt_t VFT_parser___ReduceAction653[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction653 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169183,8 +172031,7 @@ const classtable_elt_t VFT_parser___ReduceAction653[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169192,6 +172039,17 @@ const classtable_elt_t VFT_parser___ReduceAction653[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction653 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169258,14 +172116,14 @@ val_t NEW_ReduceAction653_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction653_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction653();
   INIT_ATTRIBUTES__parser___ReduceAction653(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169292,16 +172150,6 @@ const classtable_elt_t VFT_parser___ReduceAction654[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction654 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169309,8 +172157,7 @@ const classtable_elt_t VFT_parser___ReduceAction654[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169318,6 +172165,17 @@ const classtable_elt_t VFT_parser___ReduceAction654[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction654 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169384,14 +172242,14 @@ val_t NEW_ReduceAction654_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction654_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction654();
   INIT_ATTRIBUTES__parser___ReduceAction654(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169418,16 +172276,6 @@ const classtable_elt_t VFT_parser___ReduceAction656[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction656 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169435,8 +172283,7 @@ const classtable_elt_t VFT_parser___ReduceAction656[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169444,6 +172291,17 @@ const classtable_elt_t VFT_parser___ReduceAction656[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction656 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169510,14 +172368,14 @@ val_t NEW_ReduceAction656_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction656_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction656();
   INIT_ATTRIBUTES__parser___ReduceAction656(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169544,16 +172402,6 @@ const classtable_elt_t VFT_parser___ReduceAction657[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction657 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169561,8 +172409,7 @@ const classtable_elt_t VFT_parser___ReduceAction657[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169570,6 +172417,17 @@ const classtable_elt_t VFT_parser___ReduceAction657[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction657 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169636,14 +172494,14 @@ val_t NEW_ReduceAction657_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction657_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction657();
   INIT_ATTRIBUTES__parser___ReduceAction657(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169670,16 +172528,6 @@ const classtable_elt_t VFT_parser___ReduceAction658[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction658 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169687,8 +172535,7 @@ const classtable_elt_t VFT_parser___ReduceAction658[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169696,6 +172543,17 @@ const classtable_elt_t VFT_parser___ReduceAction658[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction658 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169762,14 +172620,14 @@ val_t NEW_ReduceAction658_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction658_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction658();
   INIT_ATTRIBUTES__parser___ReduceAction658(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169796,16 +172654,6 @@ const classtable_elt_t VFT_parser___ReduceAction659[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction659 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169813,8 +172661,7 @@ const classtable_elt_t VFT_parser___ReduceAction659[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169822,6 +172669,17 @@ const classtable_elt_t VFT_parser___ReduceAction659[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction659 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -169888,14 +172746,14 @@ val_t NEW_ReduceAction659_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction659_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction659();
   INIT_ATTRIBUTES__parser___ReduceAction659(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -169922,16 +172780,6 @@ const classtable_elt_t VFT_parser___ReduceAction931[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction931 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -169939,8 +172787,7 @@ const classtable_elt_t VFT_parser___ReduceAction931[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -169948,6 +172795,17 @@ const classtable_elt_t VFT_parser___ReduceAction931[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction931 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170014,14 +172872,14 @@ val_t NEW_ReduceAction931_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction931_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction931();
   INIT_ATTRIBUTES__parser___ReduceAction931(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170048,16 +172906,6 @@ const classtable_elt_t VFT_parser___ReduceAction932[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction932 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170065,8 +172913,7 @@ const classtable_elt_t VFT_parser___ReduceAction932[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170074,6 +172921,17 @@ const classtable_elt_t VFT_parser___ReduceAction932[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction932 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170140,14 +172998,14 @@ val_t NEW_ReduceAction932_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction932_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction932();
   INIT_ATTRIBUTES__parser___ReduceAction932(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170174,16 +173032,6 @@ const classtable_elt_t VFT_parser___ReduceAction933[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction933 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170191,8 +173039,7 @@ const classtable_elt_t VFT_parser___ReduceAction933[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170200,6 +173047,17 @@ const classtable_elt_t VFT_parser___ReduceAction933[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction933 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170266,14 +173124,14 @@ val_t NEW_ReduceAction933_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction933_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction933();
   INIT_ATTRIBUTES__parser___ReduceAction933(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170300,16 +173158,6 @@ const classtable_elt_t VFT_parser___ReduceAction936[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction936 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170317,8 +173165,7 @@ const classtable_elt_t VFT_parser___ReduceAction936[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170326,6 +173173,17 @@ const classtable_elt_t VFT_parser___ReduceAction936[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction936 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170392,14 +173250,14 @@ val_t NEW_ReduceAction936_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction936_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction936();
   INIT_ATTRIBUTES__parser___ReduceAction936(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170426,16 +173284,6 @@ const classtable_elt_t VFT_parser___ReduceAction957[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction957 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170443,8 +173291,7 @@ const classtable_elt_t VFT_parser___ReduceAction957[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170452,6 +173299,17 @@ const classtable_elt_t VFT_parser___ReduceAction957[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction957 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170518,14 +173376,14 @@ val_t NEW_ReduceAction957_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction957_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction957();
   INIT_ATTRIBUTES__parser___ReduceAction957(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170552,16 +173410,6 @@ const classtable_elt_t VFT_parser___ReduceAction958[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction958 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170569,8 +173417,7 @@ const classtable_elt_t VFT_parser___ReduceAction958[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170578,6 +173425,17 @@ const classtable_elt_t VFT_parser___ReduceAction958[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction958 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170644,14 +173502,14 @@ val_t NEW_ReduceAction958_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction958_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction958();
   INIT_ATTRIBUTES__parser___ReduceAction958(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170678,16 +173536,6 @@ const classtable_elt_t VFT_parser___ReduceAction1250[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1250 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170695,8 +173543,7 @@ const classtable_elt_t VFT_parser___ReduceAction1250[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170704,6 +173551,17 @@ const classtable_elt_t VFT_parser___ReduceAction1250[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1250 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170770,14 +173628,14 @@ val_t NEW_ReduceAction1250_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1250_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1250();
   INIT_ATTRIBUTES__parser___ReduceAction1250(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170804,16 +173662,6 @@ const classtable_elt_t VFT_parser___ReduceAction1251[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1251 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170821,8 +173669,7 @@ const classtable_elt_t VFT_parser___ReduceAction1251[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170830,6 +173677,17 @@ const classtable_elt_t VFT_parser___ReduceAction1251[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1251 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -170896,14 +173754,14 @@ val_t NEW_ReduceAction1251_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1251_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1251();
   INIT_ATTRIBUTES__parser___ReduceAction1251(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -170930,16 +173788,6 @@ const classtable_elt_t VFT_parser___ReduceAction1252[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1252 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -170947,8 +173795,7 @@ const classtable_elt_t VFT_parser___ReduceAction1252[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -170956,6 +173803,17 @@ const classtable_elt_t VFT_parser___ReduceAction1252[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1252 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171022,14 +173880,14 @@ val_t NEW_ReduceAction1252_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1252_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1252();
   INIT_ATTRIBUTES__parser___ReduceAction1252(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171056,16 +173914,6 @@ const classtable_elt_t VFT_parser___ReduceAction1253[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1253 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171073,8 +173921,7 @@ const classtable_elt_t VFT_parser___ReduceAction1253[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171082,6 +173929,17 @@ const classtable_elt_t VFT_parser___ReduceAction1253[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1253 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171148,14 +174006,14 @@ val_t NEW_ReduceAction1253_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1253_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1253();
   INIT_ATTRIBUTES__parser___ReduceAction1253(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171182,16 +174040,6 @@ const classtable_elt_t VFT_parser___ReduceAction1254[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1254 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171199,8 +174047,7 @@ const classtable_elt_t VFT_parser___ReduceAction1254[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171208,6 +174055,17 @@ const classtable_elt_t VFT_parser___ReduceAction1254[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1254 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171274,14 +174132,14 @@ val_t NEW_ReduceAction1254_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1254_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1254();
   INIT_ATTRIBUTES__parser___ReduceAction1254(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171308,16 +174166,6 @@ const classtable_elt_t VFT_parser___ReduceAction1255[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1255 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171325,8 +174173,7 @@ const classtable_elt_t VFT_parser___ReduceAction1255[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171334,6 +174181,17 @@ const classtable_elt_t VFT_parser___ReduceAction1255[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1255 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171400,14 +174258,14 @@ val_t NEW_ReduceAction1255_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1255_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1255();
   INIT_ATTRIBUTES__parser___ReduceAction1255(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171434,16 +174292,6 @@ const classtable_elt_t VFT_parser___ReduceAction1256[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1256 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171451,8 +174299,7 @@ const classtable_elt_t VFT_parser___ReduceAction1256[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171460,6 +174307,17 @@ const classtable_elt_t VFT_parser___ReduceAction1256[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1256 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171526,14 +174384,14 @@ val_t NEW_ReduceAction1256_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1256_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1256();
   INIT_ATTRIBUTES__parser___ReduceAction1256(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171560,16 +174418,6 @@ const classtable_elt_t VFT_parser___ReduceAction1257[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1257 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171577,8 +174425,7 @@ const classtable_elt_t VFT_parser___ReduceAction1257[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171586,6 +174433,17 @@ const classtable_elt_t VFT_parser___ReduceAction1257[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1257 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171652,14 +174510,14 @@ val_t NEW_ReduceAction1257_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1257_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1257();
   INIT_ATTRIBUTES__parser___ReduceAction1257(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171686,16 +174544,6 @@ const classtable_elt_t VFT_parser___ReduceAction1258[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1258 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171703,8 +174551,7 @@ const classtable_elt_t VFT_parser___ReduceAction1258[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171712,6 +174559,17 @@ const classtable_elt_t VFT_parser___ReduceAction1258[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1258 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171778,14 +174636,14 @@ val_t NEW_ReduceAction1258_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1258_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1258();
   INIT_ATTRIBUTES__parser___ReduceAction1258(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171812,16 +174670,6 @@ const classtable_elt_t VFT_parser___ReduceAction1259[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1259 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171829,8 +174677,7 @@ const classtable_elt_t VFT_parser___ReduceAction1259[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171838,6 +174685,17 @@ const classtable_elt_t VFT_parser___ReduceAction1259[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1259 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -171904,14 +174762,14 @@ val_t NEW_ReduceAction1259_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1259_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1259();
   INIT_ATTRIBUTES__parser___ReduceAction1259(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -171938,16 +174796,6 @@ const classtable_elt_t VFT_parser___ReduceAction1262[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1262 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -171955,8 +174803,7 @@ const classtable_elt_t VFT_parser___ReduceAction1262[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -171964,6 +174811,17 @@ const classtable_elt_t VFT_parser___ReduceAction1262[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1262 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172030,14 +174888,14 @@ val_t NEW_ReduceAction1262_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1262_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1262();
   INIT_ATTRIBUTES__parser___ReduceAction1262(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172064,16 +174922,6 @@ const classtable_elt_t VFT_parser___ReduceAction1263[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1263 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172081,8 +174929,7 @@ const classtable_elt_t VFT_parser___ReduceAction1263[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172090,6 +174937,17 @@ const classtable_elt_t VFT_parser___ReduceAction1263[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1263 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172156,14 +175014,14 @@ val_t NEW_ReduceAction1263_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1263_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1263();
   INIT_ATTRIBUTES__parser___ReduceAction1263(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172190,16 +175048,6 @@ const classtable_elt_t VFT_parser___ReduceAction1264[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1264 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172207,8 +175055,7 @@ const classtable_elt_t VFT_parser___ReduceAction1264[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172216,6 +175063,17 @@ const classtable_elt_t VFT_parser___ReduceAction1264[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1264 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172282,14 +175140,14 @@ val_t NEW_ReduceAction1264_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1264_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1264();
   INIT_ATTRIBUTES__parser___ReduceAction1264(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172316,16 +175174,6 @@ const classtable_elt_t VFT_parser___ReduceAction1265[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1265 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172333,8 +175181,7 @@ const classtable_elt_t VFT_parser___ReduceAction1265[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172342,6 +175189,17 @@ const classtable_elt_t VFT_parser___ReduceAction1265[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1265 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172408,14 +175266,14 @@ val_t NEW_ReduceAction1265_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1265_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1265();
   INIT_ATTRIBUTES__parser___ReduceAction1265(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172442,16 +175300,6 @@ const classtable_elt_t VFT_parser___ReduceAction1266[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1266 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172459,8 +175307,7 @@ const classtable_elt_t VFT_parser___ReduceAction1266[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172468,6 +175315,17 @@ const classtable_elt_t VFT_parser___ReduceAction1266[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1266 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172534,14 +175392,14 @@ val_t NEW_ReduceAction1266_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1266_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1266();
   INIT_ATTRIBUTES__parser___ReduceAction1266(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172568,16 +175426,6 @@ const classtable_elt_t VFT_parser___ReduceAction1267[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1267 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172585,8 +175433,7 @@ const classtable_elt_t VFT_parser___ReduceAction1267[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172594,6 +175441,17 @@ const classtable_elt_t VFT_parser___ReduceAction1267[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1267 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172660,14 +175518,14 @@ val_t NEW_ReduceAction1267_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1267_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1267();
   INIT_ATTRIBUTES__parser___ReduceAction1267(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172694,16 +175552,6 @@ const classtable_elt_t VFT_parser___ReduceAction1268[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1268 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172711,8 +175559,7 @@ const classtable_elt_t VFT_parser___ReduceAction1268[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172720,6 +175567,17 @@ const classtable_elt_t VFT_parser___ReduceAction1268[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1268 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172786,14 +175644,14 @@ val_t NEW_ReduceAction1268_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1268_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1268();
   INIT_ATTRIBUTES__parser___ReduceAction1268(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172820,16 +175678,6 @@ const classtable_elt_t VFT_parser___ReduceAction1269[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1269 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172837,8 +175685,7 @@ const classtable_elt_t VFT_parser___ReduceAction1269[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172846,6 +175693,17 @@ const classtable_elt_t VFT_parser___ReduceAction1269[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1269 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -172912,14 +175770,14 @@ val_t NEW_ReduceAction1269_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1269_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1269();
   INIT_ATTRIBUTES__parser___ReduceAction1269(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -172946,16 +175804,6 @@ const classtable_elt_t VFT_parser___ReduceAction1271[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1271 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -172963,8 +175811,7 @@ const classtable_elt_t VFT_parser___ReduceAction1271[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -172972,6 +175819,17 @@ const classtable_elt_t VFT_parser___ReduceAction1271[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1271 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173038,14 +175896,14 @@ val_t NEW_ReduceAction1271_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1271_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1271();
   INIT_ATTRIBUTES__parser___ReduceAction1271(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173072,16 +175930,6 @@ const classtable_elt_t VFT_parser___ReduceAction1272[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1272 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173089,8 +175937,7 @@ const classtable_elt_t VFT_parser___ReduceAction1272[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173098,6 +175945,17 @@ const classtable_elt_t VFT_parser___ReduceAction1272[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1272 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173164,14 +176022,14 @@ val_t NEW_ReduceAction1272_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1272_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1272();
   INIT_ATTRIBUTES__parser___ReduceAction1272(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173198,16 +176056,6 @@ const classtable_elt_t VFT_parser___ReduceAction1273[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1273 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173215,8 +176063,7 @@ const classtable_elt_t VFT_parser___ReduceAction1273[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173224,6 +176071,17 @@ const classtable_elt_t VFT_parser___ReduceAction1273[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1273 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173290,14 +176148,14 @@ val_t NEW_ReduceAction1273_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1273_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1273();
   INIT_ATTRIBUTES__parser___ReduceAction1273(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173324,16 +176182,6 @@ const classtable_elt_t VFT_parser___ReduceAction1275[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1275 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173341,8 +176189,7 @@ const classtable_elt_t VFT_parser___ReduceAction1275[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173350,6 +176197,17 @@ const classtable_elt_t VFT_parser___ReduceAction1275[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1275 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173416,14 +176274,14 @@ val_t NEW_ReduceAction1275_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1275_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1275();
   INIT_ATTRIBUTES__parser___ReduceAction1275(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173450,16 +176308,6 @@ const classtable_elt_t VFT_parser___ReduceAction1277[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1277 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173467,8 +176315,7 @@ const classtable_elt_t VFT_parser___ReduceAction1277[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173476,6 +176323,17 @@ const classtable_elt_t VFT_parser___ReduceAction1277[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1277 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173542,14 +176400,14 @@ val_t NEW_ReduceAction1277_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1277_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1277();
   INIT_ATTRIBUTES__parser___ReduceAction1277(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173576,16 +176434,6 @@ const classtable_elt_t VFT_parser___ReduceAction1281[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1281 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173593,8 +176441,7 @@ const classtable_elt_t VFT_parser___ReduceAction1281[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173602,6 +176449,17 @@ const classtable_elt_t VFT_parser___ReduceAction1281[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1281 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173668,14 +176526,14 @@ val_t NEW_ReduceAction1281_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1281_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1281();
   INIT_ATTRIBUTES__parser___ReduceAction1281(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173702,16 +176560,6 @@ const classtable_elt_t VFT_parser___ReduceAction1285[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1285 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173719,8 +176567,7 @@ const classtable_elt_t VFT_parser___ReduceAction1285[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173728,6 +176575,17 @@ const classtable_elt_t VFT_parser___ReduceAction1285[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1285 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173794,14 +176652,14 @@ val_t NEW_ReduceAction1285_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1285_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1285();
   INIT_ATTRIBUTES__parser___ReduceAction1285(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173828,16 +176686,6 @@ const classtable_elt_t VFT_parser___ReduceAction1286[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1286 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173845,8 +176693,7 @@ const classtable_elt_t VFT_parser___ReduceAction1286[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173854,6 +176701,17 @@ const classtable_elt_t VFT_parser___ReduceAction1286[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1286 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -173920,14 +176778,14 @@ val_t NEW_ReduceAction1286_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1286_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1286();
   INIT_ATTRIBUTES__parser___ReduceAction1286(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -173954,16 +176812,6 @@ const classtable_elt_t VFT_parser___ReduceAction1287[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1287 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -173971,8 +176819,7 @@ const classtable_elt_t VFT_parser___ReduceAction1287[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -173980,6 +176827,17 @@ const classtable_elt_t VFT_parser___ReduceAction1287[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1287 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -174046,14 +176904,14 @@ val_t NEW_ReduceAction1287_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1287_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1287();
   INIT_ATTRIBUTES__parser___ReduceAction1287(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -174080,16 +176938,6 @@ const classtable_elt_t VFT_parser___ReduceAction1288[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1288 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -174097,8 +176945,7 @@ const classtable_elt_t VFT_parser___ReduceAction1288[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -174106,6 +176953,17 @@ const classtable_elt_t VFT_parser___ReduceAction1288[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1288 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -174172,14 +177030,14 @@ val_t NEW_ReduceAction1288_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1288_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1288();
   INIT_ATTRIBUTES__parser___ReduceAction1288(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -174206,16 +177064,6 @@ const classtable_elt_t VFT_parser___ReduceAction1289[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReduceAction1289 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -174223,8 +177071,7 @@ const classtable_elt_t VFT_parser___ReduceAction1289[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -174232,6 +177079,17 @@ const classtable_elt_t VFT_parser___ReduceAction1289[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReduceAction1289 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -174298,14 +177156,14 @@ val_t NEW_ReduceAction1289_parser___ReduceAction___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_NEW_ReduceAction1289_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   fra.me.REG[0] = NEW_parser___ReduceAction1289();
   INIT_ATTRIBUTES__parser___ReduceAction1289(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
@@ -174332,16 +177190,6 @@ const classtable_elt_t VFT_opts___OptionText[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: OptionText < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -174349,8 +177197,7 @@ const classtable_elt_t VFT_opts___OptionText[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___OptionText___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -174358,6 +177205,17 @@ const classtable_elt_t VFT_opts___OptionText[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: OptionText < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -174499,16 +177357,6 @@ const classtable_elt_t VFT_opts___OptionBool[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: OptionBool < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -174516,8 +177364,7 @@ const classtable_elt_t VFT_opts___OptionBool[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -174525,6 +177372,17 @@ const classtable_elt_t VFT_opts___OptionBool[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: OptionBool < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -174533,7 +177391,7 @@ const classtable_elt_t VFT_opts___OptionBool[71] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 0 /* 50: OptionBool < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
-  {(bigint) -13 /* 52: VT OptionBool::VALUE : id of Bool */},
+  {(bigint) -9 /* 52: VT OptionBool::VALUE : id of Bool */},
   {(bigint) 4 /* 53: VT OptionBool::VALUE : color of Bool */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___errors},
@@ -174669,16 +177527,6 @@ const classtable_elt_t VFT_opts___OptionCount[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: OptionCount < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -174686,8 +177534,7 @@ const classtable_elt_t VFT_opts___OptionCount[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -174695,6 +177542,17 @@ const classtable_elt_t VFT_opts___OptionCount[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: OptionCount < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -174703,7 +177561,7 @@ const classtable_elt_t VFT_opts___OptionCount[71] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 0 /* 50: OptionCount < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
-  {(bigint) -29 /* 52: VT OptionCount::VALUE : id of Int */},
+  {(bigint) -37 /* 52: VT OptionCount::VALUE : id of Int */},
   {(bigint) 7 /* 53: VT OptionCount::VALUE : color of Int */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___errors},
@@ -174839,16 +177697,6 @@ const classtable_elt_t VFT_opts___OptionString[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: OptionString < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -174856,8 +177704,7 @@ const classtable_elt_t VFT_opts___OptionString[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -174865,6 +177712,17 @@ const classtable_elt_t VFT_opts___OptionString[76] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: OptionString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -175020,16 +177878,6 @@ const classtable_elt_t VFT_opts___OptionEnum[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: OptionEnum < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -175037,8 +177885,7 @@ const classtable_elt_t VFT_opts___OptionEnum[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -175046,6 +177893,17 @@ const classtable_elt_t VFT_opts___OptionEnum[77] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: OptionEnum < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -175054,7 +177912,7 @@ const classtable_elt_t VFT_opts___OptionEnum[77] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: OptionEnum < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
-  {(bigint) -29 /* 52: VT OptionEnum::VALUE : id of Int */},
+  {(bigint) -37 /* 52: VT OptionEnum::VALUE : id of Int */},
   {(bigint) 7 /* 53: VT OptionEnum::VALUE : color of Int */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___errors},
@@ -175212,16 +178070,6 @@ const classtable_elt_t VFT_opts___OptionInt[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: OptionInt < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -175229,8 +178077,7 @@ const classtable_elt_t VFT_opts___OptionInt[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -175238,6 +178085,17 @@ const classtable_elt_t VFT_opts___OptionInt[76] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: OptionInt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -175246,7 +178104,7 @@ const classtable_elt_t VFT_opts___OptionInt[76] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: OptionInt < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
-  {(bigint) -29 /* 52: VT OptionInt::VALUE : id of Int */},
+  {(bigint) -37 /* 52: VT OptionInt::VALUE : id of Int */},
   {(bigint) 7 /* 53: VT OptionInt::VALUE : color of Int */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___errors},
@@ -175395,16 +178253,6 @@ const classtable_elt_t VFT_opts___OptionArray[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: OptionArray < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -175412,8 +178260,7 @@ const classtable_elt_t VFT_opts___OptionArray[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -175421,6 +178268,17 @@ const classtable_elt_t VFT_opts___OptionArray[76] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: OptionArray < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -175429,7 +178287,7 @@ const classtable_elt_t VFT_opts___OptionArray[76] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: OptionArray < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
-  {(bigint) 4827 /* 52: VT OptionArray::VALUE : id of Array */},
+  {(bigint) 4831 /* 52: VT OptionArray::VALUE : id of Array */},
   {(bigint) 4 /* 53: VT OptionArray::VALUE : color of Array */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___errors},
@@ -175582,16 +178440,6 @@ const classtable_elt_t VFT_opts___OptionContext[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: OptionContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -175599,8 +178447,7 @@ const classtable_elt_t VFT_opts___OptionContext[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -175608,6 +178455,17 @@ const classtable_elt_t VFT_opts___OptionContext[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: OptionContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -175730,16 +178588,6 @@ const classtable_elt_t VFT_toolcontext___Message[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: Message < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -175747,8 +178595,7 @@ const classtable_elt_t VFT_toolcontext___Message[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) toolcontext___Message___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -175756,6 +178603,17 @@ const classtable_elt_t VFT_toolcontext___Message[73] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: Message < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -175876,16 +178734,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[132] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMSrcModule < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -175893,8 +178741,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[132] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMModule___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -175902,6 +178749,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[132] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMSrcModule < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -176255,16 +179113,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[164] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: MMSrcLocalClass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -176272,8 +179120,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[164] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -176281,6 +179128,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[164] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: MMSrcLocalClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -176675,16 +179533,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMSrcAttribute < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -176692,8 +179540,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -176701,6 +179548,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[78] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMSrcAttribute < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -176861,16 +179719,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[113
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 19: MMReadImplementationMethod < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -176878,8 +179726,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[113
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -176887,6 +179734,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[113
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: MMReadImplementationMethod < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -177086,16 +179944,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[11
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 19: MMWriteImplementationMethod < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -177103,8 +179951,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[11
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -177112,6 +179959,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[11
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 5 /* 33: MMWriteImplementationMethod < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -177311,16 +180169,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[112] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: MMMethSrcMethod < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -177328,8 +180176,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[112] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -177337,6 +180184,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[112] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: MMMethSrcMethod < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -177578,16 +180436,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: MMSrcTypeProperty < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -177595,8 +180443,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -177604,6 +180451,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[77] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: MMSrcTypeProperty < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -177771,16 +180629,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[117] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: MMImplicitInit < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -177788,8 +180636,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[117] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -177797,6 +180644,17 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[117] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: MMImplicitInit < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178059,16 +180917,6 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: VarVariable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178076,8 +180924,7 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178085,6 +180932,17 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: VarVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178194,16 +181052,6 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ParamVariable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178211,8 +181059,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178220,6 +181067,17 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ParamVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178329,16 +181187,6 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: AutoVariable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178346,8 +181194,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178355,6 +181202,17 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: AutoVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178464,16 +181322,6 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ClosureVariable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178481,8 +181329,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178490,6 +181337,17 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ClosureVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178608,16 +181466,6 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[67] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: RootFlowContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178625,8 +181473,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178634,6 +181481,17 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[67] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: RootFlowContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178785,16 +181643,6 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: SubFlowContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178802,8 +181650,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178811,6 +181658,17 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[68] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: SubFlowContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -178969,16 +181827,6 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: CastFlowContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -178986,8 +181834,7 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -178995,6 +181842,17 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: CastFlowContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -179166,16 +182024,6 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MergeFlowContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -179183,8 +182031,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -179192,6 +182039,17 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[68] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MergeFlowContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -179367,16 +182225,6 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ScopeContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -179384,8 +182232,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -179393,6 +182240,17 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ScopeContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -179519,16 +182377,6 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ScopeBlock < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -179536,8 +182384,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -179545,6 +182392,17 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ScopeBlock < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -179652,16 +182510,6 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: EscapableBlock < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -179669,8 +182517,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -179678,6 +182525,17 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[71] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: EscapableBlock < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -179816,16 +182674,6 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: BreakOnlyEscapableBlock < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -179833,8 +182681,7 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -179842,6 +182689,17 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[73] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: BreakOnlyEscapableBlock < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -179982,16 +182840,6 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[74] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: EscapableClosure < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -179999,8 +182847,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -180008,6 +182855,17 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[74] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: EscapableClosure < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -180141,7 +182999,7 @@ val_t NEW_EscapableClosure_syntax___scope___EscapableClosure___init(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
+const classtable_elt_t VFT_syntax___typing___TypingVisitor[110] = {
   {(bigint) 3327 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TypingVisitor" /* 2: Class Name */},
@@ -180160,16 +183018,6 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TypingVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -180177,8 +183025,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -180186,6 +183033,17 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TypingVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -180194,10 +183052,11 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: TypingVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___typing___TypingVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -180226,7 +183085,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: TypingVisitor < TypingVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: TypingVisitor < TypingVisitor: superclass init_table position */},
   {(bigint) syntax___typing___TypingVisitor___scope_ctx},
   {(bigint) syntax___typing___TypingVisitor___flow_ctx},
   {(bigint) syntax___typing___TypingVisitor___flow_ctx__eq},
@@ -180283,9 +183142,9 @@ void INIT_ATTRIBUTES__syntax___typing___TypingVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/typing.nit:46 */
   fra.me.REG[1] = fra.me.REG[0];
   /* syntax/typing.nit:47 */
@@ -180401,16 +183260,6 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: PrimitiveInfo < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -180418,8 +183267,7 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -180427,6 +183275,17 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: PrimitiveInfo < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -180543,16 +183402,6 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: A2IContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -180560,8 +183409,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[92] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -180569,6 +183417,17 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[92] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: A2IContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -180742,7 +183601,7 @@ val_t NEW_A2IContext_syntax___icode_generation___A2IContext___init(val_t p0, val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
+const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[89] = {
   {(bigint) 3859 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "A2IVisitor" /* 2: Class Name */},
@@ -180761,16 +183620,6 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: A2IVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -180778,8 +183627,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -180787,6 +183635,17 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: A2IVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -180795,10 +183654,11 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: A2IVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___icode_generation___A2IVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: A2IVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: A2IVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -180827,7 +183687,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: A2IVisitor < A2IVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: A2IVisitor < A2IVisitor: superclass init_table position */},
   {(bigint) syntax___icode_generation___A2IVisitor___icode_ctx__eq},
   {(bigint) syntax___icode_generation___A2IVisitor___icode_ctx},
   {(bigint) syntax___icode_generation___A2IVisitor___init},
@@ -180854,9 +183714,9 @@ void INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___icode_generation___A2IVisitor(void)
@@ -180938,16 +183798,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: CSHSorter < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -180955,8 +183805,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -180964,6 +183813,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: CSHSorter < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181056,16 +183916,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MMSrcAncestor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -181073,8 +183923,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) metamodel___static_type___MMAncestor___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -181082,6 +183931,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MMSrcAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181181,7 +184041,7 @@ val_t NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
+const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[91] = {
   {(bigint) 3691 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassBuilderVisitor" /* 2: Class Name */},
@@ -181200,16 +184060,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ClassBuilderVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -181217,8 +184067,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -181226,6 +184075,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ClassBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181234,10 +184094,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: ClassBuilderVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassBuilderVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -181266,7 +184127,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassBuilderVisitor___local_class_arity},
   {(bigint) syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq},
   {(bigint) syntax___mmbuilder___ClassBuilderVisitor___formals},
@@ -181297,9 +184158,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/mmbuilder.nit:353 */
   REGB0 = TAG_Int(0);
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
@@ -181370,7 +184231,7 @@ val_t NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor[86] = {
+const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor[87] = {
   {(bigint) 3687 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassSpecializationBuilderVisitor" /* 2: Class Name */},
@@ -181389,16 +184250,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -181406,8 +184257,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -181415,6 +184265,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181423,10 +184284,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: ClassSpecializationBuilderVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -181455,7 +184317,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -181479,9 +184341,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor(val
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(void)
@@ -181544,7 +184406,7 @@ val_t NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializa
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
+const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[87] = {
   {(bigint) 3695 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassAncestorBuilder" /* 2: Class Name */},
@@ -181563,16 +184425,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ClassAncestorBuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -181580,8 +184432,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -181589,6 +184440,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ClassAncestorBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181597,10 +184459,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: ClassAncestorBuilder < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassAncestorBuilder___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -181629,7 +184492,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
+  {(bigint) 3 /* 85: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassAncestorBuilder___init},
 };
 /* 0: Pointer to the classtable */
@@ -181653,9 +184516,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___mmbuilder___ClassAncestorBuilder(void)
@@ -181718,7 +184581,7 @@ val_t NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
+const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[87] = {
   {(bigint) 3683 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassVerifierVisitor" /* 2: Class Name */},
@@ -181737,16 +184600,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ClassVerifierVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -181754,8 +184607,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -181763,6 +184615,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ClassVerifierVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181771,10 +184634,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: ClassVerifierVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassVerifierVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -181803,7 +184667,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassVerifierVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -181827,9 +184691,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___mmbuilder___ClassVerifierVisitor(void)
@@ -181892,7 +184756,7 @@ val_t NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
+const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[87] = {
   {(bigint) 3467 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "PropertyBuilderVisitor" /* 2: Class Name */},
@@ -181911,16 +184775,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: PropertyBuilderVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -181928,8 +184782,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -181937,6 +184790,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: PropertyBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -181945,10 +184809,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: PropertyBuilderVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -181977,7 +184842,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -182001,9 +184866,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___mmbuilder___PropertyBuilderVisitor(void)
@@ -182066,7 +184931,7 @@ val_t NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___i
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
+const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[89] = {
   {(bigint) 3463 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "PropertyVerifierVisitor" /* 2: Class Name */},
@@ -182085,16 +184950,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: PropertyVerifierVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -182102,8 +184957,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -182111,6 +184965,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: PropertyVerifierVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -182119,10 +184984,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 1 /* 50: PropertyVerifierVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 0 /* 55: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 0 /* 56: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -182151,7 +185017,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 84: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
+  {(bigint) 3 /* 85: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___init},
@@ -182178,9 +185044,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___mmbuilder___PropertyVerifierVisitor(void)
@@ -182267,16 +185133,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: SignatureBuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -182284,8 +185140,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[64] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -182293,6 +185148,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[64] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: SignatureBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -182345,7 +185211,7 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder(val_t p0){
   ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/mmbuilder.nit:423 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
   /* syntax/mmbuilder.nit:426 */
@@ -182429,7 +185295,7 @@ val_t NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[57] = {
+const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[58] = {
   {(bigint) 3063 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MethidAccumulator" /* 2: Class Name */},
@@ -182448,16 +185314,6 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: MethidAccumulator < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -182465,8 +185321,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -182474,6 +185329,17 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[57] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: MethidAccumulator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -182482,10 +185348,11 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[57] = {
   {(bigint) utils___Object___cmangle_table},
   {(bigint) 0 /* 50: MethidAccumulator < Visitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___MethidAccumulator___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 55: MethidAccumulator < MethidAccumulator: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Visitor___enter_visit},
+  {(bigint) parser___parser_nodes___Visitor___current_node},
+  {(bigint) parser___parser_nodes___Visitor___current_node__eq},
+  {(bigint) parser___parser_nodes___Visitor___init},
+  {(bigint) 2 /* 56: MethidAccumulator < MethidAccumulator: superclass init_table position */},
   {(bigint) syntax___mmbuilder___MethidAccumulator___name},
 };
 /* 0: Pointer to the classtable */
@@ -182506,9 +185373,9 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
+  /* parser/parser_nodes.nit:191 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   /* syntax/mmbuilder.nit:1254 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
   ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]) = fra.me.REG[1];
@@ -182544,22 +185411,22 @@ void CHECKNEW_syntax___mmbuilder___MethidAccumulator(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-static const char LOCATE_NEW_MethidAccumulator_parser___parser_prod___Visitor___init[] = "new MethidAccumulator parser_prod::Visitor::init";
-val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init(void){
+static const char LOCATE_NEW_MethidAccumulator_parser___parser_nodes___Visitor___init[] = "new MethidAccumulator parser_nodes::Visitor::init";
+val_t NEW_MethidAccumulator_parser___parser_nodes___Visitor___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   int init_table[3] = {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_MethidAccumulator_parser___parser_prod___Visitor___init;
+  fra.me.meth = LOCATE_NEW_MethidAccumulator_parser___parser_nodes___Visitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_syntax___mmbuilder___MethidAccumulator();
   INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(fra.me.REG[0]);
-  parser___parser_prod___Visitor___init(fra.me.REG[0], init_table);
+  parser___parser_nodes___Visitor___init(fra.me.REG[0], init_table);
   CHECKNEW_syntax___mmbuilder___MethidAccumulator(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -182583,16 +185450,6 @@ const classtable_elt_t VFT_syntax___extern_inline___ExternCode[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ExternCode < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -182600,8 +185457,7 @@ const classtable_elt_t VFT_syntax___extern_inline___ExternCode[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -182609,6 +185465,17 @@ const classtable_elt_t VFT_syntax___extern_inline___ExternCode[88] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ExternCode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -182755,16 +185622,6 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: SrcModuleLoader < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -182772,8 +185629,7 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -182781,6 +185637,17 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: SrcModuleLoader < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -182877,16 +185744,6 @@ const classtable_elt_t VFT_program___Program[105] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Program < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -182894,8 +185751,7 @@ const classtable_elt_t VFT_program___Program[105] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -182903,6 +185759,17 @@ const classtable_elt_t VFT_program___Program[105] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Program < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183014,7 +185881,7 @@ void INIT_ATTRIBUTES__program___Program(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("none");
     REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -183160,16 +186027,6 @@ const classtable_elt_t VFT_global___reachable_method_analysis___DefaultReachable
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183177,8 +186034,7 @@ const classtable_elt_t VFT_global___reachable_method_analysis___DefaultReachable
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183186,6 +186042,17 @@ const classtable_elt_t VFT_global___reachable_method_analysis___DefaultReachable
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183275,16 +186142,6 @@ const classtable_elt_t VFT_global___cha_analysis___ChaContext[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ChaContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183292,8 +186149,7 @@ const classtable_elt_t VFT_global___cha_analysis___ChaContext[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183301,6 +186157,17 @@ const classtable_elt_t VFT_global___cha_analysis___ChaContext[56] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ChaContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183405,16 +186272,6 @@ const classtable_elt_t VFT_global___cha_analysis___ChaBuilder[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ChaBuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183422,8 +186279,7 @@ const classtable_elt_t VFT_global___cha_analysis___ChaBuilder[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183431,6 +186287,17 @@ const classtable_elt_t VFT_global___cha_analysis___ChaBuilder[57] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ChaBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183551,16 +186418,6 @@ const classtable_elt_t VFT_global___cha_analysis___ChaVisitor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ChaVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183568,8 +186425,7 @@ const classtable_elt_t VFT_global___cha_analysis___ChaVisitor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183577,6 +186433,17 @@ const classtable_elt_t VFT_global___cha_analysis___ChaVisitor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ChaVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183691,16 +186558,6 @@ const classtable_elt_t VFT_global___instantiated_type_analysis___DefaultInstanti
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183708,8 +186565,7 @@ const classtable_elt_t VFT_global___instantiated_type_analysis___DefaultInstanti
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183717,6 +186573,17 @@ const classtable_elt_t VFT_global___instantiated_type_analysis___DefaultInstanti
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183808,16 +186675,6 @@ const classtable_elt_t VFT_global___rta_analysis___RtaContext[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: RtaContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183825,8 +186682,7 @@ const classtable_elt_t VFT_global___rta_analysis___RtaContext[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183834,6 +186690,17 @@ const classtable_elt_t VFT_global___rta_analysis___RtaContext[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: RtaContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -183951,16 +186818,6 @@ const classtable_elt_t VFT_global___rta_analysis___RtaBuilder[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: RtaBuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -183968,8 +186825,7 @@ const classtable_elt_t VFT_global___rta_analysis___RtaBuilder[64] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -183977,6 +186833,17 @@ const classtable_elt_t VFT_global___rta_analysis___RtaBuilder[64] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: RtaBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184122,16 +186989,6 @@ const classtable_elt_t VFT_global___rta_analysis___RtaVisitor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: RtaVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184139,8 +186996,7 @@ const classtable_elt_t VFT_global___rta_analysis___RtaVisitor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184148,6 +187004,17 @@ const classtable_elt_t VFT_global___rta_analysis___RtaVisitor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: RtaVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184262,16 +187129,6 @@ const classtable_elt_t VFT_global___reachable_as_init___DefaultReachableAsInitAn
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184279,8 +187136,7 @@ const classtable_elt_t VFT_global___reachable_as_init___DefaultReachableAsInitAn
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184288,6 +187144,17 @@ const classtable_elt_t VFT_global___reachable_as_init___DefaultReachableAsInitAn
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184376,16 +187243,6 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitBuil
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ReachableAsInitBuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184393,8 +187250,7 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitBuil
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184402,6 +187258,17 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitBuil
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ReachableAsInitBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184514,16 +187381,6 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitAnal
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184531,8 +187388,7 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitAnal
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184540,6 +187396,17 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitAnal
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184643,16 +187510,6 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___RAIVisitor[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: RAIVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184660,8 +187517,7 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___RAIVisitor[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184669,6 +187525,17 @@ const classtable_elt_t VFT_global___reachable_as_init_impl___RAIVisitor[62] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: RAIVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184783,16 +187650,6 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis___Defaul
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184800,8 +187657,7 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis___Defaul
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184809,6 +187665,17 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis___Defaul
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -184898,16 +187765,6 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: RFIMABuilder < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -184915,8 +187772,7 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -184924,6 +187780,17 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: RFIMABuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185036,16 +187903,6 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: RFIMAContext < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185053,8 +187910,7 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185062,6 +187918,17 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: RFIMAContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185166,16 +188033,6 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: RFIMAVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185183,8 +188040,7 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185192,6 +188048,17 @@ const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___R
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: RFIMAVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185316,16 +188183,6 @@ const classtable_elt_t VFT_global___inline_get_and_set___InlineGetSetVisitor[62]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: InlineGetSetVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185333,8 +188190,7 @@ const classtable_elt_t VFT_global___inline_get_and_set___InlineGetSetVisitor[62]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185342,6 +188198,17 @@ const classtable_elt_t VFT_global___inline_get_and_set___InlineGetSetVisitor[62]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: InlineGetSetVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185468,16 +188335,6 @@ const classtable_elt_t VFT_global___remove_out_of_init_get_test___IssetCounter[6
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: IssetCounter < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185485,8 +188342,7 @@ const classtable_elt_t VFT_global___remove_out_of_init_get_test___IssetCounter[6
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185494,6 +188350,17 @@ const classtable_elt_t VFT_global___remove_out_of_init_get_test___IssetCounter[6
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: IssetCounter < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185608,16 +188475,6 @@ const classtable_elt_t VFT_global___remove_out_of_init_get_test___GetterTestRemo
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: GetterTestRemover < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185625,8 +188482,7 @@ const classtable_elt_t VFT_global___remove_out_of_init_get_test___GetterTestRemo
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185634,6 +188490,17 @@ const classtable_elt_t VFT_global___remove_out_of_init_get_test___GetterTestRemo
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: GetterTestRemover < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185748,16 +188615,6 @@ const classtable_elt_t VFT_compiling_writer___Writer[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: Writer < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185765,8 +188622,7 @@ const classtable_elt_t VFT_compiling_writer___Writer[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185774,6 +188630,17 @@ const classtable_elt_t VFT_compiling_writer___Writer[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: Writer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -185905,16 +188772,6 @@ const classtable_elt_t VFT_compiling_writer___WriterCoreNode[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: WriterCoreNode < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -185922,8 +188779,7 @@ const classtable_elt_t VFT_compiling_writer___WriterCoreNode[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -185931,6 +188787,17 @@ const classtable_elt_t VFT_compiling_writer___WriterCoreNode[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: WriterCoreNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -186038,16 +188905,6 @@ const classtable_elt_t VFT_compiling_writer___WriterStrings[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: WriterStrings < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -186055,8 +188912,7 @@ const classtable_elt_t VFT_compiling_writer___WriterStrings[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -186064,6 +188920,17 @@ const classtable_elt_t VFT_compiling_writer___WriterStrings[55] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: WriterStrings < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -186175,16 +189042,6 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: CProgram < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -186192,8 +189049,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -186201,6 +189057,17 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: CProgram < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -186349,16 +189216,6 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: CompilerVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -186366,8 +189223,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -186375,6 +189231,17 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[75] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: CompilerVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -186560,16 +189427,6 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -186577,8 +189434,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -186586,6 +189442,17 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -186767,16 +189634,6 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[54] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: SlotGroup < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -186784,8 +189641,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[54] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -186793,6 +189649,17 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[54] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: SlotGroup < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -186905,16 +189772,6 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ICodeDumper < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -186922,8 +189779,7 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[64] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -186931,6 +189787,17 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[64] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ICodeDumper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -187106,16 +189973,6 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[61] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: InlineMethodVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -187123,8 +189980,7 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[61] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -187132,6 +189988,17 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[61] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: InlineMethodVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -187257,16 +190124,6 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[66] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: FileICodeDumper < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -187274,8 +190131,7 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[66] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -187283,6 +190139,17 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[66] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: FileICodeDumper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -187464,16 +190331,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[58]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: TableInformation < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -187481,8 +190338,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[58]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -187490,6 +190346,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[58]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: TableInformation < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -187606,16 +190473,6 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[66] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: CompiledClass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -187623,8 +190480,7 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[66] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -187632,6 +190488,17 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[66] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: CompiledClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -187805,16 +190672,6 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[6
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: ModuleTableEltGroup < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -187822,8 +190679,7 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[6
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -187831,6 +190687,17 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[6
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: ModuleTableEltGroup < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -187941,16 +190808,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TableEltMeth < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -187958,8 +190815,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -187967,6 +190823,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TableEltMeth < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188073,16 +190940,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TableEltVTClassColor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188090,8 +190947,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188099,6 +190955,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TableEltVTClassColor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188205,16 +191072,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[61]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TableEltVTClassId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188222,8 +191079,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[61]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188231,6 +191087,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[61]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TableEltVTClassId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188337,16 +191204,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TableEltSuper < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188354,8 +191211,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188363,6 +191219,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TableEltSuper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188469,16 +191336,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 19: TableEltAttr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188486,8 +191343,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188495,6 +191351,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 3 /* 33: TableEltAttr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188601,16 +191468,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltClassId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188618,8 +191475,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188627,6 +191483,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltClassId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188735,16 +191602,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: TableEltClassInitTable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188752,8 +191609,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188761,6 +191617,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: TableEltClassInitTable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -188871,16 +191738,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 19: TableEltClassColor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -188888,8 +191745,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -188897,6 +191753,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 4 /* 33: TableEltClassColor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189007,16 +191874,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltComposite < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189024,8 +191881,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189033,6 +191889,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltComposite < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189150,16 +192017,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltClassSelfId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189167,8 +192024,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189176,6 +192032,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltClassSelfId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189268,16 +192135,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltClassSelfName < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189285,8 +192142,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189294,6 +192150,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltClassSelfName < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189386,16 +192253,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltClassObjectSize < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189403,8 +192260,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189412,6 +192268,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltClassObjectSize < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189504,16 +192371,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[59]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltObjectId < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189521,8 +192378,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[59]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189530,6 +192386,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[59]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltObjectId < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189622,16 +192489,6 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[59
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 19: TableEltVftPointer < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189639,8 +192496,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[59
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189648,6 +192504,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[59
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 2 /* 33: TableEltVftPointer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -189740,16 +192607,6 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[80]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: I2CCompilerVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -189757,8 +192614,7 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[80]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -189766,6 +192622,17 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[80]
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: I2CCompilerVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190004,16 +192871,6 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[59] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: FunctionCompiler < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190021,8 +192878,7 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[59] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -190030,6 +192886,17 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[59] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: FunctionCompiler < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190154,16 +193021,6 @@ const classtable_elt_t VFT_native_interface___frontier___ReceiverVariable[63] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReceiverVariable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190171,8 +193028,7 @@ const classtable_elt_t VFT_native_interface___frontier___ReceiverVariable[63] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -190180,6 +193036,17 @@ const classtable_elt_t VFT_native_interface___frontier___ReceiverVariable[63] =
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReceiverVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190288,16 +193155,6 @@ const classtable_elt_t VFT_native_interface___frontier___ReturnVariable[63] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 19: ReturnVariable < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190305,8 +193162,7 @@ const classtable_elt_t VFT_native_interface___frontier___ReturnVariable[63] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -190314,6 +193170,17 @@ const classtable_elt_t VFT_native_interface___frontier___ReturnVariable[63] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 1 /* 33: ReturnVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190422,16 +193289,6 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: FrontierVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190439,8 +193296,7 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -190448,6 +193304,17 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: FrontierVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190627,16 +193494,6 @@ const classtable_elt_t VFT_c_tools___CCompilationUnit[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: CCompilationUnit < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190644,8 +193501,7 @@ const classtable_elt_t VFT_c_tools___CCompilationUnit[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -190653,6 +193509,17 @@ const classtable_elt_t VFT_c_tools___CCompilationUnit[70] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: CCompilationUnit < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190825,16 +193692,6 @@ const classtable_elt_t VFT_c_tools___CFunction[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: CFunction < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190842,8 +193699,7 @@ const classtable_elt_t VFT_c_tools___CFunction[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -190851,6 +193707,17 @@ const classtable_elt_t VFT_c_tools___CFunction[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: CFunction < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -190975,16 +193842,6 @@ const classtable_elt_t VFT_ffi___ffi_base___ExternImportSet[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: ExternImportSet < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -190992,8 +193849,7 @@ const classtable_elt_t VFT_ffi___ffi_base___ExternImportSet[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -191001,6 +193857,17 @@ const classtable_elt_t VFT_ffi___ffi_base___ExternImportSet[60] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: ExternImportSet < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
@@ -191136,16 +194003,6 @@ const classtable_elt_t VFT_ffi___ffi_base___FFIVisitor[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 19: FFIVisitor < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
   {(bigint) standard___file___Object___printn},
   {(bigint) standard___file___Object___print},
   {(bigint) standard___file___Object___getc},
@@ -191153,8 +194010,7 @@ const classtable_elt_t VFT_ffi___ffi_base___FFIVisitor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___stream___Object___poll},
-  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___time___Object___get_time},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -191162,6 +194018,17 @@ const classtable_elt_t VFT_ffi___ffi_base___FFIVisitor[59] = {
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
+  {(bigint) 0 /* 33: FFIVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
index 7bbc80e..23ebd5a 100644 (file)
@@ -381,7 +381,7 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("  ");
     REGB1 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -397,7 +397,7 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(", ");
     REGB1 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -408,7 +408,7 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("  ");
     REGB1 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -421,7 +421,7 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ../lib/opts.nit:75 */
   REGB0 = TAG_Int(0);
@@ -430,14 +430,14 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
   /* ../lib/opts.nit:75 */
   if (UNTAG_Bool(REGB0)) {
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString(" ");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -497,7 +497,7 @@ val_t opts___Option___pretty_default(val_t p0){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString(" (");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -508,7 +508,7 @@ val_t opts___Option___pretty_default(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString(")");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -521,7 +521,7 @@ val_t opts___Option___pretty_default(val_t p0){
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
@@ -738,7 +738,7 @@ void opts___OptionCount___read_param(val_t p0, val_t p1){
   /* ../lib/opts.nit:126 */
   fra.me.REG[1] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(fra.me.REG[1])+UNTAG_Int(REGB0));
   /* ../lib/opts.nit:126 */
   CALL_opts___Option___value__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
@@ -850,7 +850,7 @@ void opts___OptionParameter___read_param(val_t p0, val_t p1){
         REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB0 = TAG_Bool((fra.me.REG[1])==(REGB0));
         /* ../lib/opts.nit:141 */
         REGB1 = REGB0;
@@ -889,7 +889,7 @@ void opts___OptionParameter___read_param(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[0] = BOX_NativeString("Parameter expected for option ");
         REGB1 = TAG_Int(30);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
         once_value_1 = fra.me.REG[0];
         register_static_object(&once_value_1);
       } else fra.me.REG[0] = once_value_1;
@@ -901,7 +901,7 @@ void opts___OptionParameter___read_param(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[2] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
         once_value_2 = fra.me.REG[2];
         register_static_object(&once_value_2);
       } else fra.me.REG[2] = once_value_2;
@@ -1055,7 +1055,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* ../lib/opts.nit:174 */
   if (UNTAG_Bool(REGB2)) {
@@ -1071,7 +1071,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB2 = TAG_Int(0);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
@@ -1081,7 +1081,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" <");
     REGB2 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
     once_value_2 = fra.me.REG[2];
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
@@ -1090,7 +1090,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString(", ");
     REGB2 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -1100,7 +1100,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(">");
     REGB2 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -1149,13 +1149,13 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
   REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   /* ../lib/opts.nit:182 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
   /* ../lib/opts.nit:182 */
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ../lib/opts.nit:182 */
     REGB2 = REGB1;
@@ -1167,7 +1167,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("Unrecognized value for option ");
       REGB2 = TAG_Int(30);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -1182,7 +1182,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(", ");
       REGB2 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -1192,7 +1192,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString(".\n");
       REGB2 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -1205,7 +1205,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("Expected values are: ");
       REGB2 = TAG_Int(21);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_4 = fra.me.REG[2];
       register_static_object(&once_value_4);
     } else fra.me.REG[2] = once_value_4;
@@ -1220,7 +1220,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(", ");
       REGB2 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -1230,7 +1230,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -1279,23 +1279,23 @@ val_t opts___OptionEnum___value_name(val_t p0){
   }
   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:278 */
+  /* ../lib/standard/collection/array.nit:279 */
   REGB0 = fra.me.REG[0];
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1303,26 +1303,26 @@ val_t opts___OptionEnum___value_name(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* ../lib/opts.nit:190 */
@@ -1365,7 +1365,7 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
       REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
       /* ../lib/opts.nit:194 */
       REGB0 = REGB1;
@@ -1379,7 +1379,7 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString(" (");
       REGB0 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -1397,23 +1397,23 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_opts, 195);
     }
-    /* ../lib/standard/collection/array.nit:278 */
+    /* ../lib/standard/collection/array.nit:279 */
     REGB0 = fra.me.REG[1];
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1421,26 +1421,26 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label2;
     label2: while(0);
     /* ../lib/opts.nit:195 */
@@ -1448,7 +1448,7 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString(")");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -1461,7 +1461,7 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
     if (!once_value_5) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
     } else fra.me.REG[3] = once_value_5;
@@ -1716,18 +1716,18 @@ void opts___OptionContext___usage(val_t p0){
     nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 239);
   }
   fra.me.REG[1] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1741,33 +1741,33 @@ void opts___OptionContext___usage(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
       /* ../lib/opts.nit:240 */
       REGB2 = TAG_Int(3);
       /* ../lib/opts.nit:241 */
       fra.me.REG[3] = CALL_opts___Option___names(fra.me.REG[3])(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB3 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB3 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1781,16 +1781,16 @@ void opts___OptionContext___usage(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB4)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
           /* ../lib/standard/collection/array.nit:24 */
           REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -1801,19 +1801,19 @@ void opts___OptionContext___usage(val_t p0){
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
           /* ../lib/opts.nit:242 */
           REGB5 = TAG_Int(2);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
           REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
           /* ../lib/opts.nit:242 */
           REGB2 = REGB5;
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB5 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB3 = REGB5;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label1;
         }
       }
@@ -1823,20 +1823,20 @@ void opts___OptionContext___usage(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       /* ../lib/opts.nit:244 */
       if (UNTAG_Bool(REGB3)) {
         REGB0 = REGB2;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1848,18 +1848,18 @@ void opts___OptionContext___usage(val_t p0){
     nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 247);
   }
   fra.me.REG[2] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -1873,28 +1873,28 @@ void opts___OptionContext___usage(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
       /* ../lib/opts.nit:248 */
       fra.me.REG[4] = CALL_opts___Option___pretty(fra.me.REG[4])(fra.me.REG[4], REGB0);
       CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -1981,7 +1981,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[4] = BOX_NativeString("--");
         REGB1 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_1 = fra.me.REG[4];
         register_static_object(&once_value_1);
       } else fra.me.REG[4] = once_value_1;
@@ -2009,7 +2009,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
           /* ../lib/opts.nit:273 */
           REGB3 = REGB2;
@@ -2029,7 +2029,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:237 */
+          /* ../lib/standard/kernel.nit:244 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
         } else {
           /* ../lib/opts.nit:273 */
@@ -2048,16 +2048,16 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
             nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-          /* ../lib/standard/kernel.nit:344 */
+          /* ../lib/standard/kernel.nit:393 */
           while(1) {
             REGB4 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB4)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:234 */
+            /* ../lib/standard/kernel.nit:241 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1));
-            /* ../lib/standard/kernel.nit:344 */
+            /* ../lib/standard/kernel.nit:393 */
             if (UNTAG_Bool(REGB4)) {
               /* ../lib/opts.nit:275 */
               REGB4 = REGB3;
@@ -2065,7 +2065,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
               if (!once_value_2) {
                fra.me.REG[4] = BOX_NativeString("-");
                REGB5 = TAG_Int(1);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB5);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB5);
                once_value_2 = fra.me.REG[4];
                register_static_object(&once_value_2);
               } else fra.me.REG[4] = once_value_2;
@@ -2102,14 +2102,14 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
                /* ../lib/opts.nit:283 */
                CALL_opts___Option___read_param(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
               }
-              /* ../lib/standard/kernel.nit:346 */
+              /* ../lib/standard/kernel.nit:395 */
               REGB4 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-              /* ../lib/standard/kernel.nit:346 */
+              /* ../lib/standard/kernel.nit:395 */
               REGB3 = REGB4;
             } else {
-              /* ../lib/standard/kernel.nit:344 */
+              /* ../lib/standard/kernel.nit:393 */
               goto label3;
             }
           }
@@ -2163,18 +2163,18 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 300);
   }
   fra.me.REG[1] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -2188,16 +2188,16 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* ../lib/opts.nit:301 */
       REGB2 = CALL_opts___Option___mandatory(fra.me.REG[3])(fra.me.REG[3]);
@@ -2221,7 +2221,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[6] = BOX_NativeString("Mandatory option ");
           REGB2 = TAG_Int(17);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_5 = fra.me.REG[6];
           register_static_object(&once_value_5);
         } else fra.me.REG[6] = once_value_5;
@@ -2231,7 +2231,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
         if (!once_value_6) {
           fra.me.REG[6] = BOX_NativeString(", ");
           REGB2 = TAG_Int(2);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_6 = fra.me.REG[6];
           register_static_object(&once_value_6);
         } else fra.me.REG[6] = once_value_6;
@@ -2241,7 +2241,7 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
         if (!once_value_7) {
           fra.me.REG[6] = BOX_NativeString(" not found.");
           REGB2 = TAG_Int(11);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_7 = fra.me.REG[6];
           register_static_object(&once_value_7);
         } else fra.me.REG[6] = once_value_7;
@@ -2250,14 +2250,14 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
         fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label8;
     }
   }
@@ -2293,18 +2293,18 @@ void opts___OptionContext___add_option(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_opts, 307);
   }
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -2318,16 +2318,16 @@ void opts___OptionContext___add_option(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
       /* ../lib/opts.nit:310 */
       REGB1 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[2])!=NIT_NULL);
@@ -2337,14 +2337,14 @@ void opts___OptionContext___add_option(val_t p0, val_t p1){
       }
       fra.me.REG[4] = ATTR_opts___OptionContext____options(fra.me.REG[2]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -2415,18 +2415,18 @@ void opts___OptionContext___build(val_t p0){
     nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 324);
   }
   fra.me.REG[1] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -2440,31 +2440,31 @@ void opts___OptionContext___build(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* ../lib/opts.nit:325 */
       fra.me.REG[4] = CALL_opts___Option___names(fra.me.REG[3])(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB1 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB1 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -2478,16 +2478,16 @@ void opts___OptionContext___build(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
           /* ../lib/opts.nit:326 */
           REGB2 = TAG_Bool(ATTR_opts___OptionContext____optmap(fra.me.REG[0])!=NIT_NULL);
@@ -2497,26 +2497,26 @@ void opts___OptionContext___build(val_t p0){
           }
           fra.me.REG[7] = ATTR_opts___OptionContext____optmap(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6], fra.me.REG[3]);
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = REGB2;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -2563,18 +2563,18 @@ val_t opts___OptionContext___get_errors(val_t p0){
     nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 337);
   }
   fra.me.REG[0] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -2588,31 +2588,31 @@ val_t opts___OptionContext___get_errors(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* ../lib/opts.nit:338 */
       fra.me.REG[3] = CALL_opts___Option___errors(fra.me.REG[3])(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB1 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB1 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -2626,39 +2626,39 @@ val_t opts___OptionContext___get_errors(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
           /* ../lib/opts.nit:339 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = REGB2;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
index 77ad566..aeee6ea 100644 (file)
@@ -134,7 +134,7 @@ void parser___Parser___init(val_t p0, val_t p1, int* init_table){
   ATTR_parser___Parser____stack(fra.me.REG[0]) = fra.me.REG[1];
   /* parser/parser.nit:39 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* parser/parser.nit:39 */
   ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB0;
@@ -174,7 +174,7 @@ val_t parser___Parser___go_to(val_t p0, val_t p1){
   REGB3 = TAG_Int(0);
   REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
   REGB4 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
   /* parser/parser.nit:50 */
   while(1) {
@@ -183,23 +183,23 @@ val_t parser___Parser___go_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB4));
     /* parser/parser.nit:50 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
       /* parser/parser.nit:51 */
       REGB5 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:242 */
+      /* ../lib/standard/kernel.nit:249 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB5));
       /* parser/parser.nit:52 */
       REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:241 */
+      /* ../lib/standard/kernel.nit:248 */
       REGB3 = TAG_Int(UNTAG_Int(REGB5)*UNTAG_Int(REGB3));
       /* parser/parser.nit:52 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB6 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB6));
       /* parser/parser.nit:54 */
       REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB6);
@@ -208,13 +208,13 @@ val_t parser___Parser___go_to(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB7 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
       /* parser/parser.nit:55 */
       if (UNTAG_Bool(REGB7)) {
         /* parser/parser.nit:56 */
         REGB7 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB7 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB7));
         /* parser/parser.nit:56 */
         REGB4 = REGB7;
@@ -224,20 +224,20 @@ val_t parser___Parser___go_to(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
         /* parser/parser.nit:57 */
         if (UNTAG_Bool(REGB3)) {
           /* parser/parser.nit:58 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB3 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB3));
           /* parser/parser.nit:58 */
           REGB2 = REGB3;
         } else {
           /* parser/parser.nit:60 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB3 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB3));
           /* parser/parser.nit:60 */
           REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
@@ -288,7 +288,7 @@ void parser___Parser___push(val_t p0, val_t p1, val_t p2){
   }
   REGB1 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* parser/parser.nit:71 */
   ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB2;
@@ -311,7 +311,7 @@ void parser___Parser___push(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
   /* parser/parser.nit:72 */
   if (UNTAG_Bool(REGB1)) {
@@ -322,21 +322,21 @@ void parser___Parser___push(val_t p0, val_t p1, val_t p2){
       nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 73);
     }
     fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
       REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -344,26 +344,26 @@ void parser___Parser___push(val_t p0, val_t p1, val_t p2){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Bool(0);
       REGB1 = REGB3;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label1;
     label1: while(0);
     /* parser/parser.nit:74 */
@@ -414,21 +414,21 @@ val_t parser___Parser___state(val_t p0){
     nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 84);
   }
   REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -436,26 +436,26 @@ val_t parser___Parser___state(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* parser/parser.nit:84 */
@@ -499,21 +499,21 @@ val_t parser___Parser___pop(val_t p0){
     nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 90);
   }
   REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -521,26 +521,26 @@ val_t parser___Parser___pop(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* parser/parser.nit:90 */
@@ -557,7 +557,7 @@ val_t parser___Parser___pop(val_t p0){
   }
   REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* parser/parser.nit:91 */
   ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB1;
@@ -634,7 +634,7 @@ val_t parser___Parser___parse(val_t p0){
     REGB5 = TAG_Int(0);
     REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
     REGB6 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB6 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB6));
     /* parser/parser.nit:115 */
     while(1) {
@@ -643,23 +643,23 @@ val_t parser___Parser___parse(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:234 */
+      /* ../lib/standard/kernel.nit:241 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB6));
       /* parser/parser.nit:115 */
       if (UNTAG_Bool(REGB5)) {
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
         /* parser/parser.nit:116 */
         REGB7 = TAG_Int(2);
-        /* ../lib/standard/kernel.nit:242 */
+        /* ../lib/standard/kernel.nit:249 */
         REGB7 = TAG_Int(UNTAG_Int(REGB5)/UNTAG_Int(REGB7));
         /* parser/parser.nit:117 */
         REGB5 = TAG_Int(3);
-        /* ../lib/standard/kernel.nit:241 */
+        /* ../lib/standard/kernel.nit:248 */
         REGB5 = TAG_Int(UNTAG_Int(REGB7)*UNTAG_Int(REGB5));
         /* parser/parser.nit:117 */
         REGB8 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
         /* parser/parser.nit:119 */
         REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB8);
@@ -668,13 +668,13 @@ val_t parser___Parser___parse(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB9 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB5));
         /* parser/parser.nit:120 */
         if (UNTAG_Bool(REGB9)) {
           /* parser/parser.nit:121 */
           REGB9 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB9 = TAG_Int(UNTAG_Int(REGB7)-UNTAG_Int(REGB9));
           /* parser/parser.nit:121 */
           REGB6 = REGB9;
@@ -684,27 +684,27 @@ val_t parser___Parser___parse(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:237 */
+          /* ../lib/standard/kernel.nit:244 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB5));
           /* parser/parser.nit:122 */
           if (UNTAG_Bool(REGB5)) {
             /* parser/parser.nit:123 */
             REGB5 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB5));
             /* parser/parser.nit:123 */
             REGB4 = REGB5;
           } else {
             /* parser/parser.nit:125 */
             REGB5 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB5));
             /* parser/parser.nit:125 */
             REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
             REGB2 = REGB5;
             /* parser/parser.nit:126 */
             REGB5 = TAG_Int(2);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB5));
             /* parser/parser.nit:126 */
             REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
@@ -724,7 +724,7 @@ val_t parser___Parser___parse(val_t p0){
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
     if (UNTAG_Bool(REGB4)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB0 = TAG_Bool((REGB2)==(REGB0));
       /* parser/parser.nit:131 */
       REGB4 = REGB0;
@@ -739,7 +739,7 @@ val_t parser___Parser___parse(val_t p0){
       REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB4 = TAG_Bool((REGB2)==(REGB4));
         /* parser/parser.nit:133 */
         REGB0 = REGB4;
@@ -752,21 +752,21 @@ val_t parser___Parser___parse(val_t p0){
           nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_parser, 134);
         }
         fra.me.REG[4] = ATTR_parser___Parser____reduce_table(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB0 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB0));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB0)) {
           REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
           REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -774,26 +774,26 @@ val_t parser___Parser___parse(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Bool(0);
           REGB0 = REGB4;
         }
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
         REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label3;
         label3: while(0);
         /* parser/parser.nit:134 */
@@ -808,7 +808,7 @@ val_t parser___Parser___parse(val_t p0){
         REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
         if (UNTAG_Bool(REGB0)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB3 = TAG_Bool((REGB2)==(REGB3));
           /* parser/parser.nit:135 */
           REGB0 = REGB3;
@@ -834,7 +834,7 @@ val_t parser___Parser___parse(val_t p0){
           fra.me.REG[4] = NEW_Start_parser___parser_nodes___Start___init(fra.me.REG[5], fra.me.REG[4]);
           /* parser/parser.nit:141 */
           fra.me.REG[5] = NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init();
-          CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+          CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
           /* parser/parser.nit:142 */
           fra.me.REG[3] = fra.me.REG[4];
           goto label1;
@@ -844,7 +844,7 @@ val_t parser___Parser___parse(val_t p0){
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ../lib/standard/kernel.nit:230 */
+            /* ../lib/standard/kernel.nit:237 */
             REGB0 = TAG_Bool((REGB2)==(REGB0));
             /* parser/parser.nit:143 */
             REGB3 = REGB0;
@@ -856,7 +856,7 @@ val_t parser___Parser___parse(val_t p0){
             if (!once_value_4) {
               fra.me.REG[5] = BOX_NativeString("Syntax error: unexpected ");
               REGB3 = TAG_Int(25);
-              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+              fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
               once_value_4 = fra.me.REG[5];
               register_static_object(&once_value_4);
             } else fra.me.REG[5] = once_value_4;
@@ -867,7 +867,7 @@ val_t parser___Parser___parse(val_t p0){
             if (!once_value_5) {
               fra.me.REG[5] = BOX_NativeString(".");
               REGB3 = TAG_Int(1);
-              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+              fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
               once_value_5 = fra.me.REG[5];
               register_static_object(&once_value_5);
             } else fra.me.REG[5] = once_value_5;
@@ -7374,7 +7374,7 @@ void parser___Parser___build_reduce_table(val_t p0){
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___ComputeProdLocationVisitor___visit[] = "parser::ComputeProdLocationVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_parser___ComputeProdLocationVisitor___visit[] = "parser::ComputeProdLocationVisitor::(parser_nodes::Visitor::visit)";
 void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
@@ -7402,231 +7402,241 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* parser/parser.nit:1479 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
   if (UNTAG_Bool(REGB0)) {
     /* parser/parser.nit:1480 */
-    goto label1;
-  } else {
+    fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
     /* parser/parser.nit:1481 */
-    REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
+    ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+    /* parser/parser.nit:1484 */
+    REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser.nit:1482 */
-      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser, 1482);
-      }
-      fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
-      /* parser/parser.nit:1483 */
-      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
-      /* parser/parser.nit:1486 */
+    } else {
+      nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1484);
+    }
+    fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+    REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:1485 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1486);
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1485);
       }
       fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
-      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
-      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-      if (UNTAG_Bool(REGB0)) {
-        /* parser/parser.nit:1487 */
-        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1487);
-        }
-        fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB0 = TAG_Int(0);
-        /* ../lib/standard/collection/array.nit:270 */
+      /* ../lib/standard/collection/array.nit:270 */
+      REGB0 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
+      }
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+      /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+      /* ../lib/standard/collection/array.nit:273 */
+      while(1) {
+        /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-        /* ../lib/standard/collection/array.nit:272 */
-        while(1) {
-          /* ../lib/standard/collection/array.nit:24 */
-          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-          }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-          if (UNTAG_Bool(REGB2)) {
-          } else {
-            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-          }
-          /* ../lib/standard/kernel.nit:235 */
-          REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:272 */
+        REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:242 */
+        REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+        /* ../lib/standard/collection/array.nit:273 */
+        if (UNTAG_Bool(REGB1)) {
+          /* ../lib/standard/collection/array.nit:274 */
+          REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            /* ../lib/standard/collection/array.nit:273 */
-            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-            if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
-            }
-            /* ../lib/standard/collection/array.nit:724 */
-            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-            /* parser/parser.nit:1488 */
-            ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
-            /* ../lib/standard/collection/array.nit:274 */
-            REGB1 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
-            REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:274 */
-            REGB0 = REGB1;
-          } else {
-            /* ../lib/standard/collection/array.nit:272 */
-            goto label2;
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-        }
-        label2: while(0);
-        /* parser/parser.nit:1490 */
-        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
+          /* ../lib/standard/collection/array.nit:725 */
+          fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
+          /* parser/parser.nit:1486 */
+          ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
+          /* ../lib/standard/collection/array.nit:275 */
+          REGB1 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:245 */
+          REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+          /* ../lib/standard/collection/array.nit:275 */
+          REGB0 = REGB1;
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1490);
+          /* ../lib/standard/collection/array.nit:273 */
+          goto label1;
         }
-        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
-        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
       }
-      /* parser/parser.nit:1494 */
+      label1: while(0);
+      /* parser/parser.nit:1488 */
+      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1488);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+    }
+    /* parser/parser.nit:1492 */
+    REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1492);
+    }
+    fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+    REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:1493 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1494);
+        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1493);
       }
       fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
-      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-      if (UNTAG_Bool(REGB0)) {
-        /* parser/parser.nit:1495 */
-        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1495);
-        }
-        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB0 = TAG_Int(0);
-        /* ../lib/standard/collection/array.nit:270 */
+      /* ../lib/standard/collection/array.nit:270 */
+      REGB0 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
+      }
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+      /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+      /* ../lib/standard/collection/array.nit:273 */
+      while(1) {
+        /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-        /* ../lib/standard/collection/array.nit:272 */
-        while(1) {
-          /* ../lib/standard/collection/array.nit:24 */
-          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:242 */
+        REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+        /* ../lib/standard/collection/array.nit:273 */
+        if (UNTAG_Bool(REGB1)) {
+          /* ../lib/standard/collection/array.nit:274 */
+          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-          if (UNTAG_Bool(REGB2)) {
-          } else {
-            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-          }
-          /* ../lib/standard/kernel.nit:235 */
-          REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:725 */
+          fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+          /* parser/parser.nit:1496 */
+          fra.me.REG[6] = fra.me.REG[2];
+          /* parser/parser.nit:1497 */
+          fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
+          /* parser/parser.nit:1498 */
+          fra.me.REG[8] = CALL_location___Location___file(fra.me.REG[6])(fra.me.REG[6]);
+          REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            /* ../lib/standard/collection/array.nit:273 */
-            REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-            if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
-            }
-            /* ../lib/standard/collection/array.nit:724 */
-            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-            /* parser/parser.nit:1498 */
-            fra.me.REG[6] = fra.me.REG[2];
-            /* parser/parser.nit:1499 */
-            fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
-            /* parser/parser.nit:1500 */
-            fra.me.REG[8] = CALL_location___Location___file(fra.me.REG[6])(fra.me.REG[6]);
-            REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
-            if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 1500);
-            }
-            REGB1 = CALL_location___Location___line_end(fra.me.REG[7])(fra.me.REG[7]);
-            REGB2 = CALL_location___Location___line_start(fra.me.REG[6])(fra.me.REG[6]);
-            REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
-            if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 1500);
-            }
-            REGB3 = CALL_location___Location___column_end(fra.me.REG[7])(fra.me.REG[7]);
-            REGB4 = CALL_location___Location___column_start(fra.me.REG[6])(fra.me.REG[6]);
-            fra.me.REG[8] = NEW_Location_location___Location___init(fra.me.REG[8], REGB1, REGB2, REGB3, REGB4);
-            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
-            /* ../lib/standard/collection/array.nit:274 */
-            REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
-            REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:274 */
-            REGB0 = REGB4;
-          } else {
-            /* ../lib/standard/collection/array.nit:272 */
-            goto label3;
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1498);
           }
-        }
-        label3: while(0);
-        /* parser/parser.nit:1502 */
-        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
+          REGB1 = CALL_location___Location___line_end(fra.me.REG[7])(fra.me.REG[7]);
+          REGB2 = CALL_location___Location___line_start(fra.me.REG[6])(fra.me.REG[6]);
+          REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1498);
+          }
+          REGB3 = CALL_location___Location___column_end(fra.me.REG[7])(fra.me.REG[7]);
+          REGB4 = CALL_location___Location___column_start(fra.me.REG[6])(fra.me.REG[6]);
+          fra.me.REG[8] = NEW_Location_location___Location___init(fra.me.REG[8], REGB1, REGB2, REGB3, REGB4);
+          CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+          /* ../lib/standard/collection/array.nit:275 */
+          REGB4 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:245 */
+          REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+          /* ../lib/standard/collection/array.nit:275 */
+          REGB0 = REGB4;
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1502);
+          /* ../lib/standard/collection/array.nit:273 */
+          goto label2;
         }
-        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
       }
-    } else {
-      /* parser/parser.nit:1505 */
-      REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Prod, ID_parser___parser_nodes___Prod)) /*cast Prod*/;
+      label2: while(0);
+      /* parser/parser.nit:1500 */
+      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser, 1505);
+        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1500);
       }
-      /* parser/parser.nit:1506 */
-      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+      CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
+    }
+  } else {
+    /* parser/parser.nit:1503 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Prod, ID_parser___parser_nodes___Prod)) /*cast Prod*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Assert failed", NULL, LOCATE_parser, 1503);
+    }
+    /* parser/parser.nit:1504 */
+    REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1504);
+    }
+    fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    /* parser/parser.nit:1506 */
+    fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+    /* parser/parser.nit:1507 */
+    ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
+    /* parser/parser.nit:1508 */
+    CALL_parser___parser_nodes___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* parser/parser.nit:1509 */
+    fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+    /* parser/parser.nit:1510 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB4)) {
+        REGB4 = TAG_Bool(0);
+        REGB0 = REGB4;
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1506);
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+        REGB0 = REGB4;
       }
-      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-      /* parser/parser.nit:1508 */
-      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
-      /* parser/parser.nit:1509 */
-      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
-      /* parser/parser.nit:1510 */
-      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser, 1510);
+    }
+    if (UNTAG_Bool(REGB0)) {
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+    }
+    /* parser/parser.nit:1512 */
+    ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
+    /* parser/parser.nit:1513 */
+    fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
+    /* parser/parser.nit:1514 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB4)) {
+        REGB4 = TAG_Bool(0);
+        REGB0 = REGB4;
+      } else {
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB4;
       }
-      CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-      /* parser/parser.nit:1511 */
-      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
-      /* parser/parser.nit:1512 */
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:1516 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -7639,321 +7649,280 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           REGB0 = REGB4;
         }
       }
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser, 1516);
       }
-      /* parser/parser.nit:1514 */
-      ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
-      /* parser/parser.nit:1515 */
-      fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
-      /* parser/parser.nit:1516 */
+      /* parser/parser.nit:1518 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1518);
+      }
+      fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1518);
+      }
+      REGB0 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+      REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB4)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1518);
+      }
+      REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
+      REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1518);
+      }
+      REGB3 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1518);
+      }
+      REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+      fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
+      CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+      /* parser/parser.nit:1520 */
+      REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
       } else {
+        nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1520);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+      REGB2 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+      REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+      if (UNTAG_Bool(REGB2)) {
+        /* parser/parser.nit:1521 */
+        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1521);
+        }
+        fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
+        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1521);
+        }
+        REGB2 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1521);
+        }
+        REGB3 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
         REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB0 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-          REGB0 = REGB4;
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1521);
         }
-      }
-      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-      if (UNTAG_Bool(REGB0)) {
-        /* parser/parser.nit:1518 */
-        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB4 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1521);
+        }
+        REGB0 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+        fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB2, REGB3, REGB4, REGB0);
+        /* parser/parser.nit:1522 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1522);
+        }
+        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
+        REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
+        }
+        REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+        /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+        /* ../lib/standard/collection/array.nit:273 */
+        while(1) {
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            REGB4 = TAG_Bool(0);
-            REGB0 = REGB4;
           } else {
-            REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+          REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:242 */
+          REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
+          /* ../lib/standard/collection/array.nit:273 */
+          if (UNTAG_Bool(REGB4)) {
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+            if (UNTAG_Bool(REGB4)) {
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
+            }
+            /* ../lib/standard/collection/array.nit:725 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB0)];
+            /* parser/parser.nit:1524 */
+            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+            /* ../lib/standard/collection/array.nit:275 */
+            REGB4 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:245 */
+            REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+            /* ../lib/standard/collection/array.nit:275 */
             REGB0 = REGB4;
+          } else {
+            /* ../lib/standard/collection/array.nit:273 */
+            goto label3;
           }
         }
-        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+        label3: while(0);
+        /* parser/parser.nit:1526 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_parser, 1518);
+          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1526);
         }
-        /* parser/parser.nit:1520 */
-        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+      }
+      /* parser/parser.nit:1529 */
+      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1529);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1530 */
+        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1520);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1530);
         }
-        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);
+        fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
+        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1520);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1530);
         }
-        REGB0 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+        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, 1520);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1530);
         }
         REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1520);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1530);
         }
-        REGB3 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+        REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
         REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1520);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1530);
         }
         REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
-        REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+        /* parser/parser.nit:1531 */
+        REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1520);
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1531);
         }
-        CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-        /* parser/parser.nit:1522 */
-        REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
+        fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB2 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
+        REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1522);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
-        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
-        REGB2 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
-        REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-        if (UNTAG_Bool(REGB2)) {
-          /* parser/parser.nit:1523 */
-          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
-          }
-          fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
-          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
-          }
-          REGB2 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
-          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
+        /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
+        /* ../lib/standard/collection/array.nit:273 */
+        while(1) {
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
-          }
-          REGB3 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
-          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-          if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
-          }
-          REGB4 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
-          REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-          if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1523);
-          }
-          REGB0 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
-          fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB2, REGB3, REGB4, REGB0);
-          /* parser/parser.nit:1524 */
-          REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1524);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
-          fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
-          /* ../lib/standard/collection/array.nit:269 */
-          REGB0 = TAG_Int(0);
-          /* ../lib/standard/collection/array.nit:270 */
-          REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
+          REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-          /* ../lib/standard/collection/array.nit:271 */
-          fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-          /* ../lib/standard/collection/array.nit:272 */
-          while(1) {
-            /* ../lib/standard/collection/array.nit:24 */
-            REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-            if (UNTAG_Bool(REGB4)) {
-            } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-            }
-            REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-            REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          /* ../lib/standard/kernel.nit:242 */
+          REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+          /* ../lib/standard/collection/array.nit:273 */
+          if (UNTAG_Bool(REGB3)) {
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/kernel.nit:235 */
-            REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:272 */
-            if (UNTAG_Bool(REGB4)) {
-              /* ../lib/standard/collection/array.nit:273 */
-              REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
-              if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
-              }
-              /* ../lib/standard/collection/array.nit:724 */
-              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB0)];
-              /* parser/parser.nit:1526 */
-              CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-              /* ../lib/standard/collection/array.nit:274 */
-              REGB4 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
-              REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:274 */
-              REGB0 = REGB4;
-            } else {
-              /* ../lib/standard/collection/array.nit:272 */
-              goto label4;
-            }
-          }
-          label4: while(0);
-          /* parser/parser.nit:1528 */
-          REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB0)) {
+            /* ../lib/standard/collection/array.nit:725 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+            /* parser/parser.nit:1533 */
+            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+            /* ../lib/standard/collection/array.nit:275 */
+            REGB3 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:245 */
+            REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+            /* ../lib/standard/collection/array.nit:275 */
+            REGB2 = REGB3;
           } else {
-            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1528);
+            /* ../lib/standard/collection/array.nit:273 */
+            goto label4;
           }
-          fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
         }
-        /* parser/parser.nit:1531 */
-        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
+        label4: while(0);
+        /* parser/parser.nit:1535 */
+        REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1531);
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1535);
         }
         fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-        REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
-        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-        if (UNTAG_Bool(REGB0)) {
-          /* parser/parser.nit:1532 */
-          REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
-          }
-          fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
-          REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
-          }
-          REGB0 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
-          REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
-          }
-          REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
-          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
-          }
-          REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
-          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 1532);
-          }
-          REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
-          fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
-          /* parser/parser.nit:1533 */
-          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1533);
-          }
-          fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-          /* ../lib/standard/collection/array.nit:269 */
-          REGB2 = TAG_Int(0);
-          /* ../lib/standard/collection/array.nit:270 */
-          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
-          if (UNTAG_Bool(REGB3)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
-          }
-          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-          /* ../lib/standard/collection/array.nit:271 */
-          fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
-          /* ../lib/standard/collection/array.nit:272 */
-          while(1) {
-            /* ../lib/standard/collection/array.nit:24 */
-            REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
-            if (UNTAG_Bool(REGB3)) {
-            } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-            }
-            REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-            REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB4)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:235 */
-            REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-            /* ../lib/standard/collection/array.nit:272 */
-            if (UNTAG_Bool(REGB3)) {
-              /* ../lib/standard/collection/array.nit:273 */
-              REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-              if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
-              }
-              /* ../lib/standard/collection/array.nit:724 */
-              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-              /* parser/parser.nit:1535 */
-              CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-              /* ../lib/standard/collection/array.nit:274 */
-              REGB3 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
-              REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-              /* ../lib/standard/collection/array.nit:274 */
-              REGB2 = REGB3;
-            } else {
-              /* ../lib/standard/collection/array.nit:272 */
-              goto label5;
-            }
-          }
-          label5: while(0);
-          /* parser/parser.nit:1537 */
-          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1537);
-          }
-          fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
-        }
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+      }
+    } else {
+      /* parser/parser.nit:1540 */
+      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
       } else {
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Bool(0);
+          REGB2 = REGB3;
+        } else {
+          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB2 = REGB3;
+        }
+      }
+      if (UNTAG_Bool(REGB2)) {
         /* parser/parser.nit:1542 */
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB3)) {
-            REGB3 = TAG_Bool(0);
-            REGB2 = REGB3;
-          } else {
-            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-            REGB2 = REGB3;
-          }
+          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1542);
         }
+        fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      } else {
+        /* parser/parser.nit:1545 */
+        REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          /* parser/parser.nit:1544 */
-          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1544);
-          }
-          fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
         } else {
-          /* parser/parser.nit:1547 */
-          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1547);
-          }
-          fra.me.REG[0] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1545);
         }
+        fra.me.REG[0] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
       }
     }
   }
-  label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -7965,15 +7934,15 @@ 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 = 1553;
+  fra.me.line = 1551;
   fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser.nit:1553 */
-  CALL_parser___parser_prod___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  /* parser/parser.nit:1551 */
+  CALL_parser___parser_nodes___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
   return;
@@ -7984,13 +7953,13 @@ 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 = 1558;
+  fra.me.line = 1556;
   fra.me.meth = LOCATE_parser___ReduceAction___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* parser/parser.nit:1558 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser, 1558);
+  /* parser/parser.nit:1556 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser, 1556);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -8001,7 +7970,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 = 1559;
+  fra.me.line = 1557;
   fra.me.meth = LOCATE_parser___ReduceAction___concat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -8012,15 +7981,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:1561 */
+  /* parser/parser.nit:1559 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[0] = fra.me.REG[2];
     goto label1;
   }
-  /* parser/parser.nit:1562 */
+  /* parser/parser.nit:1560 */
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser.nit:1563 */
+  /* parser/parser.nit:1561 */
   fra.me.REG[0] = fra.me.REG[1];
   goto label1;
   label1: while(0);
@@ -8036,7 +8005,7 @@ void parser___ReduceAction___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1566;
+  fra.me.line = 1564;
   fra.me.meth = LOCATE_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -8044,7 +8013,7 @@ void parser___ReduceAction___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* parser/parser.nit:1566 */
+  /* parser/parser.nit:1564 */
   ATTR_parser___ReduceAction____goto(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -8057,7 +8026,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 = 1571;
+  fra.me.line = 1569;
   fra.me.meth = LOCATE_parser___ReduceAction0___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -8070,23 +8039,23 @@ void parser___ReduceAction0___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:1573 */
+  /* parser/parser.nit:1571 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1574 */
+  /* parser/parser.nit:1572 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1575 */
+  /* parser/parser.nit:1573 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1576 */
+  /* parser/parser.nit:1574 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1577 */
+  /* parser/parser.nit:1575 */
   fra.me.REG[5] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
-  /* parser/parser.nit:1583 */
+  /* parser/parser.nit:1581 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:1584 */
+  /* parser/parser.nit:1582 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1584);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1582);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8101,7 +8070,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 = 1589;
+  fra.me.line = 1587;
   fra.me.meth = LOCATE_parser___ReduceAction1___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -8115,31 +8084,31 @@ void parser___ReduceAction1___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:1591 */
+  /* parser/parser.nit:1589 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1592 */
+  /* parser/parser.nit:1590 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1593 */
+  /* parser/parser.nit:1591 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1594 */
+  /* parser/parser.nit:1592 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1595 */
+  /* parser/parser.nit:1593 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1597 */
+  /* parser/parser.nit:1595 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1597);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1595);
   }
-  /* parser/parser.nit:1598 */
+  /* parser/parser.nit:1596 */
   fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:1604 */
+  /* parser/parser.nit:1602 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1605 */
+  /* parser/parser.nit:1603 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1605);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1603);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8154,7 +8123,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 = 1610;
+  fra.me.line = 1608;
   fra.me.meth = LOCATE_parser___ReduceAction2___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -8168,34 +8137,34 @@ void parser___ReduceAction2___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:1612 */
+  /* parser/parser.nit:1610 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1613 */
+  /* parser/parser.nit:1611 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1614 */
+  /* parser/parser.nit:1612 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1615 */
+  /* parser/parser.nit:1613 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1616 */
+  /* parser/parser.nit:1614 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1618 */
+  /* parser/parser.nit:1616 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1618);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1616);
   }
-  /* parser/parser.nit:1619 */
+  /* parser/parser.nit:1617 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:1620 */
+  /* parser/parser.nit:1618 */
   fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:1626 */
+  /* parser/parser.nit:1624 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1627 */
+  /* parser/parser.nit:1625 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1627);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1625);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8210,7 +8179,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 = 1632;
+  fra.me.line = 1630;
   fra.me.meth = LOCATE_parser___ReduceAction3___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8225,42 +8194,42 @@ void parser___ReduceAction3___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:1634 */
+  /* parser/parser.nit:1632 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1635 */
+  /* parser/parser.nit:1633 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1636 */
+  /* parser/parser.nit:1634 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1637 */
+  /* parser/parser.nit:1635 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1638 */
+  /* parser/parser.nit:1636 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1639 */
+  /* parser/parser.nit:1637 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1641 */
+  /* parser/parser.nit:1639 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1641);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1639);
   }
-  /* parser/parser.nit:1643 */
+  /* parser/parser.nit:1641 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1643);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1641);
   }
-  /* parser/parser.nit:1644 */
+  /* parser/parser.nit:1642 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:1645 */
+  /* parser/parser.nit:1643 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:1651 */
+  /* parser/parser.nit:1649 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1652 */
+  /* parser/parser.nit:1650 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1652);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1650);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8275,7 +8244,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 = 1657;
+  fra.me.line = 1655;
   fra.me.meth = LOCATE_parser___ReduceAction4___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -8289,34 +8258,34 @@ void parser___ReduceAction4___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:1659 */
+  /* parser/parser.nit:1657 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1660 */
+  /* parser/parser.nit:1658 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1661 */
+  /* parser/parser.nit:1659 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1662 */
+  /* parser/parser.nit:1660 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1663 */
+  /* parser/parser.nit:1661 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1665 */
+  /* parser/parser.nit:1663 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1665);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1663);
   }
-  /* parser/parser.nit:1666 */
+  /* parser/parser.nit:1664 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:1667 */
+  /* parser/parser.nit:1665 */
   fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:1673 */
+  /* parser/parser.nit:1671 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1674 */
+  /* parser/parser.nit:1672 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1674);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1672);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8331,7 +8300,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 = 1679;
+  fra.me.line = 1677;
   fra.me.meth = LOCATE_parser___ReduceAction5___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8346,42 +8315,42 @@ void parser___ReduceAction5___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:1681 */
+  /* parser/parser.nit:1679 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1682 */
+  /* parser/parser.nit:1680 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1683 */
+  /* parser/parser.nit:1681 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1684 */
+  /* parser/parser.nit:1682 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1685 */
+  /* parser/parser.nit:1683 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1686 */
+  /* parser/parser.nit:1684 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1688 */
+  /* parser/parser.nit:1686 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1688);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1686);
   }
-  /* parser/parser.nit:1690 */
+  /* parser/parser.nit:1688 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1690);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1688);
   }
-  /* parser/parser.nit:1691 */
+  /* parser/parser.nit:1689 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:1692 */
+  /* parser/parser.nit:1690 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:1698 */
+  /* parser/parser.nit:1696 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1699 */
+  /* parser/parser.nit:1697 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1699);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1697);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8396,7 +8365,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 = 1704;
+  fra.me.line = 1702;
   fra.me.meth = LOCATE_parser___ReduceAction6___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8411,45 +8380,45 @@ void parser___ReduceAction6___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:1706 */
+  /* parser/parser.nit:1704 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1707 */
+  /* parser/parser.nit:1705 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1708 */
+  /* parser/parser.nit:1706 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1709 */
+  /* parser/parser.nit:1707 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1710 */
+  /* parser/parser.nit:1708 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1711 */
+  /* parser/parser.nit:1709 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1713 */
+  /* parser/parser.nit:1711 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1713);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1711);
   }
-  /* parser/parser.nit:1714 */
+  /* parser/parser.nit:1712 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:1716 */
+  /* parser/parser.nit:1714 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1716);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1714);
   }
-  /* parser/parser.nit:1717 */
+  /* parser/parser.nit:1715 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:1718 */
+  /* parser/parser.nit:1716 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:1724 */
+  /* parser/parser.nit:1722 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1725 */
+  /* parser/parser.nit:1723 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1725);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1723);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8464,7 +8433,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 = 1730;
+  fra.me.line = 1728;
   fra.me.meth = LOCATE_parser___ReduceAction7___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -8480,53 +8449,53 @@ void parser___ReduceAction7___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:1732 */
+  /* parser/parser.nit:1730 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1733 */
+  /* parser/parser.nit:1731 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1734 */
+  /* parser/parser.nit:1732 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1735 */
+  /* parser/parser.nit:1733 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1736 */
+  /* parser/parser.nit:1734 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1737 */
+  /* parser/parser.nit:1735 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1738 */
+  /* parser/parser.nit:1736 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1740 */
+  /* parser/parser.nit:1738 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1740);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1738);
   }
-  /* parser/parser.nit:1742 */
+  /* parser/parser.nit:1740 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1742);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1740);
   }
-  /* parser/parser.nit:1743 */
+  /* parser/parser.nit:1741 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:1745 */
+  /* parser/parser.nit:1743 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1745);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1743);
   }
-  /* parser/parser.nit:1746 */
+  /* parser/parser.nit:1744 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:1747 */
+  /* parser/parser.nit:1745 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:1753 */
+  /* parser/parser.nit:1751 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1754 */
+  /* parser/parser.nit:1752 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1754);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1752);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8541,7 +8510,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 = 1759;
+  fra.me.line = 1757;
   fra.me.meth = LOCATE_parser___ReduceAction8___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -8555,34 +8524,34 @@ 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:1761 */
+  /* parser/parser.nit:1759 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1762 */
+  /* parser/parser.nit:1760 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1763 */
+  /* parser/parser.nit:1761 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1764 */
+  /* parser/parser.nit:1762 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1765 */
+  /* parser/parser.nit:1763 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1767 */
+  /* parser/parser.nit:1765 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1767);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1765);
   }
-  /* parser/parser.nit:1768 */
+  /* parser/parser.nit:1766 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:1769 */
+  /* parser/parser.nit:1767 */
   fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:1775 */
+  /* parser/parser.nit:1773 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1776 */
+  /* parser/parser.nit:1774 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1776);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1774);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8597,7 +8566,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 = 1781;
+  fra.me.line = 1779;
   fra.me.meth = LOCATE_parser___ReduceAction9___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8612,42 +8581,42 @@ 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:1783 */
+  /* parser/parser.nit:1781 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1784 */
+  /* parser/parser.nit:1782 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1785 */
+  /* parser/parser.nit:1783 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1786 */
+  /* parser/parser.nit:1784 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1787 */
+  /* parser/parser.nit:1785 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1788 */
+  /* parser/parser.nit:1786 */
   fra.me.REG[7] = NEW_Array_standard___collection___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_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1790);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1788);
   }
-  /* parser/parser.nit:1792 */
+  /* parser/parser.nit:1790 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1792);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1790);
   }
-  /* parser/parser.nit:1793 */
+  /* parser/parser.nit:1791 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:1794 */
+  /* parser/parser.nit:1792 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:1800 */
+  /* parser/parser.nit:1798 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1801 */
+  /* parser/parser.nit:1799 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1801);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1799);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8662,7 +8631,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 = 1806;
+  fra.me.line = 1804;
   fra.me.meth = LOCATE_parser___ReduceAction10___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8677,45 +8646,45 @@ void parser___ReduceAction10___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:1808 */
+  /* parser/parser.nit:1806 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1809 */
+  /* parser/parser.nit:1807 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1810 */
+  /* parser/parser.nit:1808 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1811 */
+  /* parser/parser.nit:1809 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1812 */
+  /* parser/parser.nit:1810 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1813 */
+  /* parser/parser.nit:1811 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1815 */
+  /* parser/parser.nit:1813 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1815);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1813);
   }
-  /* parser/parser.nit:1816 */
+  /* parser/parser.nit:1814 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:1818 */
+  /* parser/parser.nit:1816 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1818);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1816);
   }
-  /* parser/parser.nit:1819 */
+  /* parser/parser.nit:1817 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:1820 */
+  /* parser/parser.nit:1818 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:1826 */
+  /* parser/parser.nit:1824 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1827 */
+  /* parser/parser.nit:1825 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1827);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1825);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8730,7 +8699,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 = 1832;
+  fra.me.line = 1830;
   fra.me.meth = LOCATE_parser___ReduceAction11___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -8746,53 +8715,53 @@ void parser___ReduceAction11___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:1834 */
+  /* parser/parser.nit:1832 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1835 */
+  /* parser/parser.nit:1833 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1836 */
+  /* parser/parser.nit:1834 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1837 */
+  /* parser/parser.nit:1835 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1838 */
+  /* parser/parser.nit:1836 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1839 */
+  /* parser/parser.nit:1837 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1840 */
+  /* parser/parser.nit:1838 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1842 */
+  /* parser/parser.nit:1840 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1842);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1840);
   }
-  /* parser/parser.nit:1844 */
+  /* parser/parser.nit:1842 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1844);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1842);
   }
-  /* parser/parser.nit:1845 */
+  /* parser/parser.nit:1843 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:1847 */
+  /* parser/parser.nit:1845 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1847);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1845);
   }
-  /* parser/parser.nit:1848 */
+  /* parser/parser.nit:1846 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:1849 */
+  /* parser/parser.nit:1847 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:1855 */
+  /* parser/parser.nit:1853 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1856 */
+  /* parser/parser.nit:1854 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1856);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1854);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8807,7 +8776,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 = 1861;
+  fra.me.line = 1859;
   fra.me.meth = LOCATE_parser___ReduceAction12___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8822,45 +8791,45 @@ 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:1863 */
+  /* parser/parser.nit:1861 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1864 */
+  /* parser/parser.nit:1862 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1865 */
+  /* parser/parser.nit:1863 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1866 */
+  /* parser/parser.nit:1864 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1867 */
+  /* parser/parser.nit:1865 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1868 */
+  /* parser/parser.nit:1866 */
   fra.me.REG[7] = NEW_Array_standard___collection___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_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1870);
+    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[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:1873 */
+  /* parser/parser.nit:1871 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1873);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1871);
   }
-  /* parser/parser.nit:1874 */
+  /* parser/parser.nit:1872 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:1875 */
+  /* parser/parser.nit:1873 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:1881 */
+  /* parser/parser.nit:1879 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1882 */
+  /* parser/parser.nit:1880 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1882);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1880);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8875,7 +8844,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 = 1887;
+  fra.me.line = 1885;
   fra.me.meth = LOCATE_parser___ReduceAction13___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -8891,53 +8860,53 @@ 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:1889 */
+  /* parser/parser.nit:1887 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1890 */
+  /* parser/parser.nit:1888 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1891 */
+  /* parser/parser.nit:1889 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1892 */
+  /* parser/parser.nit:1890 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1893 */
+  /* parser/parser.nit:1891 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1894 */
+  /* parser/parser.nit:1892 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1895 */
+  /* parser/parser.nit:1893 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1897 */
+  /* parser/parser.nit:1895 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1897);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1895);
   }
-  /* parser/parser.nit:1899 */
+  /* parser/parser.nit:1897 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1899);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1897);
   }
-  /* parser/parser.nit:1900 */
+  /* parser/parser.nit:1898 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:1902 */
+  /* parser/parser.nit:1900 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1902);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1900);
   }
-  /* parser/parser.nit:1903 */
+  /* parser/parser.nit:1901 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:1904 */
+  /* parser/parser.nit:1902 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:1910 */
+  /* parser/parser.nit:1908 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1911 */
+  /* parser/parser.nit:1909 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1911);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1909);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8952,7 +8921,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 = 1916;
+  fra.me.line = 1914;
   fra.me.meth = LOCATE_parser___ReduceAction14___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -8968,56 +8937,56 @@ void parser___ReduceAction14___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:1918 */
+  /* parser/parser.nit:1916 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1919 */
+  /* parser/parser.nit:1917 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1920 */
+  /* parser/parser.nit:1918 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1921 */
+  /* parser/parser.nit:1919 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1922 */
+  /* parser/parser.nit:1920 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1923 */
+  /* parser/parser.nit:1921 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1924 */
+  /* parser/parser.nit:1922 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1926 */
+  /* parser/parser.nit:1924 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1926);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1924);
   }
-  /* parser/parser.nit:1927 */
+  /* parser/parser.nit:1925 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:1929 */
+  /* parser/parser.nit:1927 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1929);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1927);
   }
-  /* parser/parser.nit:1930 */
+  /* parser/parser.nit:1928 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:1932 */
+  /* parser/parser.nit:1930 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1932);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1930);
   }
-  /* parser/parser.nit:1933 */
+  /* parser/parser.nit:1931 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:1934 */
+  /* parser/parser.nit:1932 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:1940 */
+  /* parser/parser.nit:1938 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1941 */
+  /* parser/parser.nit:1939 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1941);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1939);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9032,7 +9001,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 = 1946;
+  fra.me.line = 1944;
   fra.me.meth = LOCATE_parser___ReduceAction15___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -9049,64 +9018,64 @@ void parser___ReduceAction15___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:1948 */
+  /* parser/parser.nit:1946 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1949 */
+  /* parser/parser.nit:1947 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1950 */
+  /* parser/parser.nit:1948 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1951 */
+  /* parser/parser.nit:1949 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1952 */
+  /* parser/parser.nit:1950 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1953 */
+  /* parser/parser.nit:1951 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1954 */
+  /* parser/parser.nit:1952 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1955 */
+  /* parser/parser.nit:1953 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1957 */
+  /* parser/parser.nit:1955 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1957);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1955);
   }
-  /* parser/parser.nit:1959 */
+  /* parser/parser.nit:1957 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1959);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1957);
   }
-  /* parser/parser.nit:1960 */
+  /* parser/parser.nit:1958 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:1962 */
+  /* parser/parser.nit:1960 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1962);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1960);
   }
-  /* parser/parser.nit:1963 */
+  /* parser/parser.nit:1961 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:1965 */
+  /* parser/parser.nit:1963 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1965);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1963);
   }
-  /* parser/parser.nit:1966 */
+  /* parser/parser.nit:1964 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
   fra.me.REG[9] = fra.me.REG[3];
-  /* parser/parser.nit:1967 */
+  /* parser/parser.nit:1965 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:1973 */
+  /* parser/parser.nit:1971 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:1974 */
+  /* parser/parser.nit:1972 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1974);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1972);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9122,7 +9091,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 = 1979;
+  fra.me.line = 1977;
   fra.me.meth = LOCATE_parser___ReduceAction16___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -9137,30 +9106,30 @@ void parser___ReduceAction16___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:1981 */
+  /* parser/parser.nit:1979 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1982 */
+  /* parser/parser.nit:1980 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1983 */
+  /* parser/parser.nit:1981 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1984 */
+  /* parser/parser.nit:1982 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1985 */
+  /* parser/parser.nit:1983 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1986 */
+  /* parser/parser.nit:1984 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1988 */
+  /* parser/parser.nit:1986 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1988);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1986);
   }
-  /* parser/parser.nit:1989 */
+  /* parser/parser.nit:1987 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:1990 */
+  /* parser/parser.nit:1988 */
   fra.me.REG[7] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
-  /* parser/parser.nit:1993 */
+  /* parser/parser.nit:1991 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9175,18 +9144,18 @@ void parser___ReduceAction16___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:1994 */
+    /* parser/parser.nit:1992 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
-  /* parser/parser.nit:1996 */
+  /* parser/parser.nit:1994 */
   fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:2002 */
+  /* parser/parser.nit:2000 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:2003 */
+  /* parser/parser.nit:2001 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2003);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2001);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9202,7 +9171,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 = 2008;
+  fra.me.line = 2006;
   fra.me.meth = LOCATE_parser___ReduceAction17___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -9218,38 +9187,38 @@ void parser___ReduceAction17___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:2010 */
+  /* parser/parser.nit:2008 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2011 */
+  /* parser/parser.nit:2009 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2012 */
+  /* parser/parser.nit:2010 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2013 */
+  /* parser/parser.nit:2011 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2014 */
+  /* parser/parser.nit:2012 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2015 */
+  /* parser/parser.nit:2013 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2017 */
+  /* parser/parser.nit:2015 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2017);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2015);
   }
-  /* parser/parser.nit:2018 */
+  /* parser/parser.nit:2016 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2020 */
+  /* parser/parser.nit:2018 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2020);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2018);
   }
-  /* parser/parser.nit:2021 */
+  /* parser/parser.nit:2019 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:2022 */
+  /* parser/parser.nit:2020 */
   fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* parser/parser.nit:2025 */
+  /* parser/parser.nit:2023 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9264,18 +9233,18 @@ void parser___ReduceAction17___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2026 */
+    /* parser/parser.nit:2024 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
-  /* parser/parser.nit:2028 */
+  /* parser/parser.nit:2026 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2034 */
+  /* parser/parser.nit:2032 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2035 */
+  /* parser/parser.nit:2033 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2035);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2033);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9291,7 +9260,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 = 2040;
+  fra.me.line = 2038;
   fra.me.meth = LOCATE_parser___ReduceAction18___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -9306,41 +9275,41 @@ void parser___ReduceAction18___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:2042 */
+  /* parser/parser.nit:2040 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2043 */
+  /* parser/parser.nit:2041 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2044 */
+  /* parser/parser.nit:2042 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2045 */
+  /* parser/parser.nit:2043 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2046 */
+  /* parser/parser.nit:2044 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2047 */
+  /* parser/parser.nit:2045 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2049 */
+  /* parser/parser.nit:2047 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2049);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2047);
   }
-  /* parser/parser.nit:2050 */
+  /* parser/parser.nit:2048 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:2051 */
+  /* parser/parser.nit:2049 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2053 */
+  /* parser/parser.nit:2051 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2053);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2051);
   }
-  /* parser/parser.nit:2054 */
+  /* parser/parser.nit:2052 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:2055 */
+  /* parser/parser.nit:2053 */
   fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2058 */
+  /* parser/parser.nit:2056 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9355,18 +9324,18 @@ void parser___ReduceAction18___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2059 */
+    /* parser/parser.nit:2057 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
   }
-  /* parser/parser.nit:2061 */
+  /* parser/parser.nit:2059 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2067 */
+  /* parser/parser.nit:2065 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2068 */
+  /* parser/parser.nit:2066 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2068);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2066);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9382,7 +9351,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 = 2073;
+  fra.me.line = 2071;
   fra.me.meth = LOCATE_parser___ReduceAction19___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -9398,49 +9367,49 @@ void parser___ReduceAction19___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:2075 */
+  /* parser/parser.nit:2073 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2076 */
+  /* parser/parser.nit:2074 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2077 */
+  /* parser/parser.nit:2075 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2078 */
+  /* parser/parser.nit:2076 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2079 */
+  /* parser/parser.nit:2077 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2080 */
+  /* parser/parser.nit:2078 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2081 */
+  /* parser/parser.nit:2079 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2083 */
+  /* parser/parser.nit:2081 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2083);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2081);
   }
-  /* parser/parser.nit:2085 */
+  /* parser/parser.nit:2083 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2085);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2083);
   }
-  /* parser/parser.nit:2086 */
+  /* parser/parser.nit:2084 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:2087 */
+  /* parser/parser.nit:2085 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2089 */
+  /* parser/parser.nit:2087 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2089);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2087);
   }
-  /* parser/parser.nit:2090 */
+  /* parser/parser.nit:2088 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:2091 */
+  /* parser/parser.nit:2089 */
   fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2094 */
+  /* parser/parser.nit:2092 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9455,18 +9424,18 @@ void parser___ReduceAction19___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2095 */
+    /* parser/parser.nit:2093 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
   }
-  /* parser/parser.nit:2097 */
+  /* parser/parser.nit:2095 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2103 */
+  /* parser/parser.nit:2101 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2104 */
+  /* parser/parser.nit:2102 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2104);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2102);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9482,7 +9451,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 = 2109;
+  fra.me.line = 2107;
   fra.me.meth = LOCATE_parser___ReduceAction20___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -9497,41 +9466,41 @@ void parser___ReduceAction20___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:2111 */
+  /* parser/parser.nit:2109 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2112 */
+  /* parser/parser.nit:2110 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2113 */
+  /* parser/parser.nit:2111 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2114 */
+  /* parser/parser.nit:2112 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2115 */
+  /* parser/parser.nit:2113 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2116 */
+  /* parser/parser.nit:2114 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2118 */
+  /* parser/parser.nit:2116 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2118);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2116);
   }
-  /* parser/parser.nit:2119 */
+  /* parser/parser.nit:2117 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:2120 */
+  /* parser/parser.nit:2118 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2122 */
+  /* parser/parser.nit:2120 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2122);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2120);
   }
-  /* parser/parser.nit:2123 */
+  /* parser/parser.nit:2121 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:2124 */
+  /* parser/parser.nit:2122 */
   fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2127 */
+  /* parser/parser.nit:2125 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9546,18 +9515,18 @@ void parser___ReduceAction20___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2128 */
+    /* parser/parser.nit:2126 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
   }
-  /* parser/parser.nit:2130 */
+  /* parser/parser.nit:2128 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2136 */
+  /* parser/parser.nit:2134 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2137 */
+  /* parser/parser.nit:2135 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2137);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2135);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9573,7 +9542,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 = 2142;
+  fra.me.line = 2140;
   fra.me.meth = LOCATE_parser___ReduceAction21___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -9589,49 +9558,49 @@ void parser___ReduceAction21___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:2144 */
+  /* parser/parser.nit:2142 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2145 */
+  /* parser/parser.nit:2143 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2146 */
+  /* parser/parser.nit:2144 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2147 */
+  /* parser/parser.nit:2145 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2148 */
+  /* parser/parser.nit:2146 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2149 */
+  /* parser/parser.nit:2147 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2150 */
+  /* parser/parser.nit:2148 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2152 */
+  /* parser/parser.nit:2150 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2152);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2150);
   }
-  /* parser/parser.nit:2154 */
+  /* parser/parser.nit:2152 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2154);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2152);
   }
-  /* parser/parser.nit:2155 */
+  /* parser/parser.nit:2153 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:2156 */
+  /* parser/parser.nit:2154 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2158 */
+  /* parser/parser.nit:2156 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2158);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2156);
   }
-  /* parser/parser.nit:2159 */
+  /* parser/parser.nit:2157 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:2160 */
+  /* parser/parser.nit:2158 */
   fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2163 */
+  /* parser/parser.nit:2161 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9646,18 +9615,18 @@ void parser___ReduceAction21___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2164 */
+    /* parser/parser.nit:2162 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
   }
-  /* parser/parser.nit:2166 */
+  /* parser/parser.nit:2164 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2172 */
+  /* parser/parser.nit:2170 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2173 */
+  /* parser/parser.nit:2171 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2173);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2171);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9673,7 +9642,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 = 2178;
+  fra.me.line = 2176;
   fra.me.meth = LOCATE_parser___ReduceAction22___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -9689,52 +9658,52 @@ void parser___ReduceAction22___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:2180 */
+  /* parser/parser.nit:2178 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2181 */
+  /* parser/parser.nit:2179 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2182 */
+  /* parser/parser.nit:2180 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2183 */
+  /* parser/parser.nit:2181 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2184 */
+  /* parser/parser.nit:2182 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2185 */
+  /* parser/parser.nit:2183 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2186 */
+  /* parser/parser.nit:2184 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2188 */
+  /* parser/parser.nit:2186 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2188);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2186);
   }
-  /* parser/parser.nit:2189 */
+  /* parser/parser.nit:2187 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:2191 */
+  /* parser/parser.nit:2189 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2191);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2189);
   }
-  /* parser/parser.nit:2192 */
+  /* parser/parser.nit:2190 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:2193 */
+  /* parser/parser.nit:2191 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2195 */
+  /* parser/parser.nit:2193 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2195);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2193);
   }
-  /* parser/parser.nit:2196 */
+  /* parser/parser.nit:2194 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:2197 */
+  /* parser/parser.nit:2195 */
   fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2200 */
+  /* parser/parser.nit:2198 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9749,18 +9718,18 @@ void parser___ReduceAction22___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2201 */
+    /* parser/parser.nit:2199 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
   }
-  /* parser/parser.nit:2203 */
+  /* parser/parser.nit:2201 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2209 */
+  /* parser/parser.nit:2207 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2210 */
+  /* parser/parser.nit:2208 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2210);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2208);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9776,7 +9745,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 = 2215;
+  fra.me.line = 2213;
   fra.me.meth = LOCATE_parser___ReduceAction23___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -9793,60 +9762,60 @@ void parser___ReduceAction23___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:2217 */
+  /* parser/parser.nit:2215 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2218 */
+  /* parser/parser.nit:2216 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2219 */
+  /* parser/parser.nit:2217 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2220 */
+  /* parser/parser.nit:2218 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2221 */
+  /* parser/parser.nit:2219 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2222 */
+  /* parser/parser.nit:2220 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2223 */
+  /* parser/parser.nit:2221 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2224 */
+  /* parser/parser.nit:2222 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2226 */
+  /* parser/parser.nit:2224 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2226);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2224);
   }
-  /* parser/parser.nit:2228 */
+  /* parser/parser.nit:2226 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2228);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2226);
   }
-  /* parser/parser.nit:2229 */
+  /* parser/parser.nit:2227 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:2231 */
+  /* parser/parser.nit:2229 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2231);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2229);
   }
-  /* parser/parser.nit:2232 */
+  /* parser/parser.nit:2230 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2233 */
+  /* parser/parser.nit:2231 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2235 */
+  /* parser/parser.nit:2233 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2235);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2233);
   }
-  /* parser/parser.nit:2236 */
+  /* parser/parser.nit:2234 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:2237 */
+  /* parser/parser.nit:2235 */
   fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2240 */
+  /* parser/parser.nit:2238 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9861,18 +9830,18 @@ void parser___ReduceAction23___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2241 */
+    /* parser/parser.nit:2239 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[4]);
   }
-  /* parser/parser.nit:2243 */
+  /* parser/parser.nit:2241 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2249 */
+  /* parser/parser.nit:2247 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2250 */
+  /* parser/parser.nit:2248 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2250);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2248);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9888,7 +9857,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 = 2255;
+  fra.me.line = 2253;
   fra.me.meth = LOCATE_parser___ReduceAction24___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -9904,41 +9873,41 @@ void parser___ReduceAction24___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:2257 */
+  /* parser/parser.nit:2255 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2258 */
+  /* parser/parser.nit:2256 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2259 */
+  /* parser/parser.nit:2257 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2260 */
+  /* parser/parser.nit:2258 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2261 */
+  /* parser/parser.nit:2259 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2262 */
+  /* parser/parser.nit:2260 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2264 */
+  /* parser/parser.nit:2262 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2264);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2262);
   }
-  /* parser/parser.nit:2265 */
+  /* parser/parser.nit:2263 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2267 */
+  /* parser/parser.nit:2265 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2267);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2265);
   }
-  /* parser/parser.nit:2268 */
+  /* parser/parser.nit:2266 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:2269 */
+  /* parser/parser.nit:2267 */
   fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* parser/parser.nit:2272 */
+  /* parser/parser.nit:2270 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:2273 */
+  /* parser/parser.nit:2271 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9953,18 +9922,18 @@ void parser___ReduceAction24___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2274 */
+    /* parser/parser.nit:2272 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
-  /* parser/parser.nit:2276 */
+  /* parser/parser.nit:2274 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2282 */
+  /* parser/parser.nit:2280 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2283 */
+  /* parser/parser.nit:2281 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2283);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2281);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9980,7 +9949,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 = 2288;
+  fra.me.line = 2286;
   fra.me.meth = LOCATE_parser___ReduceAction25___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -9997,49 +9966,49 @@ void parser___ReduceAction25___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:2290 */
+  /* parser/parser.nit:2288 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2291 */
+  /* parser/parser.nit:2289 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2292 */
+  /* parser/parser.nit:2290 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2293 */
+  /* parser/parser.nit:2291 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2294 */
+  /* parser/parser.nit:2292 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2295 */
+  /* parser/parser.nit:2293 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2296 */
+  /* parser/parser.nit:2294 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2298 */
+  /* parser/parser.nit:2296 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2298);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2296);
   }
-  /* parser/parser.nit:2300 */
+  /* parser/parser.nit:2298 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2300);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2298);
   }
-  /* parser/parser.nit:2301 */
+  /* parser/parser.nit:2299 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2303 */
+  /* parser/parser.nit:2301 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2303);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2301);
   }
-  /* parser/parser.nit:2304 */
+  /* parser/parser.nit:2302 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
   fra.me.REG[9] = fra.me.REG[3];
-  /* parser/parser.nit:2305 */
+  /* parser/parser.nit:2303 */
   fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* parser/parser.nit:2308 */
+  /* parser/parser.nit:2306 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2309 */
+  /* parser/parser.nit:2307 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10054,18 +10023,18 @@ void parser___ReduceAction25___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2310 */
+    /* parser/parser.nit:2308 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
-  /* parser/parser.nit:2312 */
+  /* parser/parser.nit:2310 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2318 */
+  /* parser/parser.nit:2316 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2319 */
+  /* parser/parser.nit:2317 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2319);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2317);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10081,7 +10050,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 = 2324;
+  fra.me.line = 2322;
   fra.me.meth = LOCATE_parser___ReduceAction26___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -10097,52 +10066,52 @@ void parser___ReduceAction26___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:2326 */
+  /* parser/parser.nit:2324 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2327 */
+  /* parser/parser.nit:2325 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2328 */
+  /* parser/parser.nit:2326 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2329 */
+  /* parser/parser.nit:2327 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2330 */
+  /* parser/parser.nit:2328 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2331 */
+  /* parser/parser.nit:2329 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2332 */
+  /* parser/parser.nit:2330 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2334 */
+  /* parser/parser.nit:2332 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2334);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2332);
   }
-  /* parser/parser.nit:2335 */
+  /* parser/parser.nit:2333 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:2337 */
+  /* parser/parser.nit:2335 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2337);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2335);
   }
-  /* parser/parser.nit:2338 */
+  /* parser/parser.nit:2336 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2340 */
+  /* parser/parser.nit:2338 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2340);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2338);
   }
-  /* parser/parser.nit:2341 */
+  /* parser/parser.nit:2339 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:2342 */
+  /* parser/parser.nit:2340 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2345 */
+  /* parser/parser.nit:2343 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2346 */
+  /* parser/parser.nit:2344 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10157,18 +10126,18 @@ void parser___ReduceAction26___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2347 */
+    /* parser/parser.nit:2345 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
   }
-  /* parser/parser.nit:2349 */
+  /* parser/parser.nit:2347 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2355 */
+  /* parser/parser.nit:2353 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2356 */
+  /* parser/parser.nit:2354 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2356);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2354);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10184,7 +10153,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 = 2361;
+  fra.me.line = 2359;
   fra.me.meth = LOCATE_parser___ReduceAction27___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -10201,60 +10170,60 @@ void parser___ReduceAction27___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:2363 */
+  /* parser/parser.nit:2361 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2364 */
+  /* parser/parser.nit:2362 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2365 */
+  /* parser/parser.nit:2363 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2366 */
+  /* parser/parser.nit:2364 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2367 */
+  /* parser/parser.nit:2365 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2368 */
+  /* parser/parser.nit:2366 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2369 */
+  /* parser/parser.nit:2367 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2370 */
+  /* parser/parser.nit:2368 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2372 */
+  /* parser/parser.nit:2370 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2372);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2370);
   }
-  /* parser/parser.nit:2374 */
+  /* parser/parser.nit:2372 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2374);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2372);
   }
-  /* parser/parser.nit:2375 */
+  /* parser/parser.nit:2373 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:2377 */
+  /* parser/parser.nit:2375 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2377);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2375);
   }
-  /* parser/parser.nit:2378 */
+  /* parser/parser.nit:2376 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2380 */
+  /* parser/parser.nit:2378 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2380);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2378);
   }
-  /* parser/parser.nit:2381 */
+  /* parser/parser.nit:2379 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:2382 */
+  /* parser/parser.nit:2380 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2385 */
+  /* parser/parser.nit:2383 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:2386 */
+  /* parser/parser.nit:2384 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10269,18 +10238,18 @@ void parser___ReduceAction27___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2387 */
+    /* parser/parser.nit:2385 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* parser/parser.nit:2389 */
+  /* parser/parser.nit:2387 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2395 */
+  /* parser/parser.nit:2393 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2396 */
+  /* parser/parser.nit:2394 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2396);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2394);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10296,7 +10265,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 = 2401;
+  fra.me.line = 2399;
   fra.me.meth = LOCATE_parser___ReduceAction28___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -10312,52 +10281,52 @@ 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:2403 */
+  /* parser/parser.nit:2401 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2404 */
+  /* parser/parser.nit:2402 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2405 */
+  /* parser/parser.nit:2403 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2406 */
+  /* parser/parser.nit:2404 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2407 */
+  /* parser/parser.nit:2405 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2408 */
+  /* parser/parser.nit:2406 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2409 */
+  /* parser/parser.nit:2407 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2411 */
+  /* parser/parser.nit:2409 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2411);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2409);
   }
-  /* parser/parser.nit:2412 */
+  /* parser/parser.nit:2410 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:2414 */
+  /* parser/parser.nit:2412 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2414);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2412);
   }
-  /* parser/parser.nit:2415 */
+  /* parser/parser.nit:2413 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2417 */
+  /* parser/parser.nit:2415 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2417);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2415);
   }
-  /* parser/parser.nit:2418 */
+  /* parser/parser.nit:2416 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:2419 */
+  /* parser/parser.nit:2417 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2422 */
+  /* parser/parser.nit:2420 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2423 */
+  /* parser/parser.nit:2421 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10372,18 +10341,18 @@ void parser___ReduceAction28___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2424 */
+    /* parser/parser.nit:2422 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
   }
-  /* parser/parser.nit:2426 */
+  /* parser/parser.nit:2424 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2432 */
+  /* parser/parser.nit:2430 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2433 */
+  /* parser/parser.nit:2431 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2433);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2431);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10399,7 +10368,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 = 2438;
+  fra.me.line = 2436;
   fra.me.meth = LOCATE_parser___ReduceAction29___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -10416,60 +10385,60 @@ 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:2440 */
+  /* parser/parser.nit:2438 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2441 */
+  /* parser/parser.nit:2439 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2442 */
+  /* parser/parser.nit:2440 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2443 */
+  /* parser/parser.nit:2441 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2444 */
+  /* parser/parser.nit:2442 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2445 */
+  /* parser/parser.nit:2443 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2446 */
+  /* parser/parser.nit:2444 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2447 */
+  /* parser/parser.nit:2445 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2449 */
+  /* parser/parser.nit:2447 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2449);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2447);
   }
-  /* parser/parser.nit:2451 */
+  /* parser/parser.nit:2449 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2451);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2449);
   }
-  /* parser/parser.nit:2452 */
+  /* parser/parser.nit:2450 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:2454 */
+  /* parser/parser.nit:2452 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2454);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2452);
   }
-  /* parser/parser.nit:2455 */
+  /* parser/parser.nit:2453 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2457 */
+  /* parser/parser.nit:2455 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 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[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:2459 */
+  /* parser/parser.nit:2457 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2462 */
+  /* parser/parser.nit:2460 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:2463 */
+  /* parser/parser.nit:2461 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10484,18 +10453,18 @@ void parser___ReduceAction29___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2464 */
+    /* parser/parser.nit:2462 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* parser/parser.nit:2466 */
+  /* parser/parser.nit:2464 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2472 */
+  /* parser/parser.nit:2470 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2473 */
+  /* parser/parser.nit:2471 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2473);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2471);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10511,7 +10480,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 = 2478;
+  fra.me.line = 2476;
   fra.me.meth = LOCATE_parser___ReduceAction30___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -10528,63 +10497,63 @@ void parser___ReduceAction30___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:2480 */
+  /* parser/parser.nit:2478 */
   fra.me.REG[2] = NIT_NULL;
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2483 */
+  /* parser/parser.nit:2481 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2484 */
+  /* parser/parser.nit:2482 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2485 */
+  /* parser/parser.nit:2483 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2486 */
+  /* parser/parser.nit:2484 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2487 */
+  /* parser/parser.nit:2485 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2489 */
+  /* parser/parser.nit:2487 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2487);
   }
-  /* parser/parser.nit:2490 */
+  /* parser/parser.nit:2488 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:2492 */
+  /* parser/parser.nit:2490 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2492);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2490);
   }
-  /* parser/parser.nit:2493 */
+  /* parser/parser.nit:2491 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:2495 */
+  /* parser/parser.nit:2493 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2495);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2493);
   }
-  /* parser/parser.nit:2496 */
+  /* parser/parser.nit:2494 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2498 */
+  /* parser/parser.nit:2496 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2498);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2496);
   }
-  /* parser/parser.nit:2499 */
+  /* parser/parser.nit:2497 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:2500 */
+  /* parser/parser.nit:2498 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2503 */
+  /* parser/parser.nit:2501 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:2504 */
+  /* parser/parser.nit:2502 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10599,18 +10568,18 @@ void parser___ReduceAction30___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2505 */
+    /* parser/parser.nit:2503 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* parser/parser.nit:2507 */
+  /* parser/parser.nit:2505 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2513 */
+  /* parser/parser.nit:2511 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2514 */
+  /* parser/parser.nit:2512 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2514);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2512);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10626,7 +10595,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 = 2519;
+  fra.me.line = 2517;
   fra.me.meth = LOCATE_parser___ReduceAction31___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -10644,71 +10613,71 @@ void parser___ReduceAction31___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:2521 */
+  /* parser/parser.nit:2519 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2522 */
+  /* parser/parser.nit:2520 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2523 */
+  /* parser/parser.nit:2521 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2524 */
+  /* parser/parser.nit:2522 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2525 */
+  /* parser/parser.nit:2523 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2526 */
+  /* parser/parser.nit:2524 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2527 */
+  /* parser/parser.nit:2525 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2528 */
+  /* parser/parser.nit:2526 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2529 */
+  /* parser/parser.nit:2527 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2531 */
+  /* parser/parser.nit:2529 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2531);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2529);
   }
-  /* parser/parser.nit:2533 */
+  /* parser/parser.nit:2531 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2533);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2531);
   }
-  /* parser/parser.nit:2534 */
+  /* parser/parser.nit:2532 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:2536 */
+  /* parser/parser.nit:2534 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2536);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2534);
   }
-  /* parser/parser.nit:2537 */
+  /* parser/parser.nit:2535 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* parser/parser.nit:2539 */
+  /* parser/parser.nit:2537 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2539);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2537);
   }
-  /* parser/parser.nit:2540 */
+  /* parser/parser.nit:2538 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2542 */
+  /* parser/parser.nit:2540 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2542);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2540);
   }
-  /* parser/parser.nit:2543 */
+  /* parser/parser.nit:2541 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:2544 */
+  /* parser/parser.nit:2542 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2547 */
+  /* parser/parser.nit:2545 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* parser/parser.nit:2548 */
+  /* parser/parser.nit:2546 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10723,18 +10692,18 @@ void parser___ReduceAction31___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2549 */
+    /* parser/parser.nit:2547 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
   }
-  /* parser/parser.nit:2551 */
+  /* parser/parser.nit:2549 */
   fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* parser/parser.nit:2557 */
+  /* parser/parser.nit:2555 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:2558 */
+  /* parser/parser.nit:2556 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2558);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2556);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10750,7 +10719,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 = 2563;
+  fra.me.line = 2561;
   fra.me.meth = LOCATE_parser___ReduceAction32___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -10764,23 +10733,23 @@ void parser___ReduceAction32___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:2565 */
+  /* parser/parser.nit:2563 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2566 */
+  /* parser/parser.nit:2564 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2567 */
+  /* parser/parser.nit:2565 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2568 */
+  /* parser/parser.nit:2566 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2569 */
+  /* parser/parser.nit:2567 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2571 */
+  /* parser/parser.nit:2569 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2571);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2569);
   }
-  /* parser/parser.nit:2572 */
+  /* parser/parser.nit:2570 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10795,18 +10764,18 @@ void parser___ReduceAction32___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2573 */
+    /* parser/parser.nit:2571 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2575 */
+  /* parser/parser.nit:2573 */
   fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:2581 */
+  /* parser/parser.nit:2579 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:2582 */
+  /* parser/parser.nit:2580 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2582);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2580);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10822,7 +10791,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 = 2587;
+  fra.me.line = 2585;
   fra.me.meth = LOCATE_parser___ReduceAction33___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -10837,31 +10806,31 @@ void parser___ReduceAction33___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:2589 */
+  /* parser/parser.nit:2587 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2590 */
+  /* parser/parser.nit:2588 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2591 */
+  /* parser/parser.nit:2589 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2592 */
+  /* parser/parser.nit:2590 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2593 */
+  /* parser/parser.nit:2591 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2594 */
+  /* parser/parser.nit:2592 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2596 */
+  /* parser/parser.nit:2594 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2596);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2594);
   }
-  /* parser/parser.nit:2598 */
+  /* parser/parser.nit:2596 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2598);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2596);
   }
-  /* parser/parser.nit:2599 */
+  /* parser/parser.nit:2597 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10876,18 +10845,18 @@ void parser___ReduceAction33___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2600 */
+    /* parser/parser.nit:2598 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2602 */
+  /* parser/parser.nit:2600 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2608 */
+  /* parser/parser.nit:2606 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2609 */
+  /* parser/parser.nit:2607 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2609);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2607);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10903,7 +10872,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 = 2614;
+  fra.me.line = 2612;
   fra.me.meth = LOCATE_parser___ReduceAction34___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -10918,34 +10887,34 @@ void parser___ReduceAction34___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:2616 */
+  /* parser/parser.nit:2614 */
   fra.me.REG[2] = NIT_NULL;
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2619 */
+  /* parser/parser.nit:2617 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2620 */
+  /* parser/parser.nit:2618 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2621 */
+  /* parser/parser.nit:2619 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2623 */
+  /* parser/parser.nit:2621 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2623);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2621);
   }
-  /* parser/parser.nit:2624 */
+  /* parser/parser.nit:2622 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:2626 */
+  /* parser/parser.nit:2624 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2626);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2624);
   }
-  /* parser/parser.nit:2627 */
+  /* parser/parser.nit:2625 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10960,18 +10929,18 @@ void parser___ReduceAction34___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2628 */
+    /* parser/parser.nit:2626 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2630 */
+  /* parser/parser.nit:2628 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2636 */
+  /* parser/parser.nit:2634 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2637 */
+  /* parser/parser.nit:2635 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2637);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2635);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10987,7 +10956,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 = 2642;
+  fra.me.line = 2640;
   fra.me.meth = LOCATE_parser___ReduceAction35___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11003,42 +10972,42 @@ void parser___ReduceAction35___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:2644 */
+  /* parser/parser.nit:2642 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2645 */
+  /* parser/parser.nit:2643 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2646 */
+  /* parser/parser.nit:2644 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2647 */
+  /* parser/parser.nit:2645 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2648 */
+  /* parser/parser.nit:2646 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2649 */
+  /* parser/parser.nit:2647 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2650 */
+  /* parser/parser.nit:2648 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2652 */
+  /* parser/parser.nit:2650 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2652);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2650);
   }
-  /* parser/parser.nit:2654 */
+  /* parser/parser.nit:2652 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2654);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2652);
   }
-  /* parser/parser.nit:2655 */
+  /* parser/parser.nit:2653 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:2657 */
+  /* parser/parser.nit:2655 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2657);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2655);
   }
-  /* parser/parser.nit:2658 */
+  /* parser/parser.nit:2656 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11053,18 +11022,18 @@ void parser___ReduceAction35___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2659 */
+    /* parser/parser.nit:2657 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2661 */
+  /* parser/parser.nit:2659 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2667 */
+  /* parser/parser.nit:2665 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2668 */
+  /* parser/parser.nit:2666 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2668);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2666);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11080,7 +11049,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 = 2673;
+  fra.me.line = 2671;
   fra.me.meth = LOCATE_parser___ReduceAction36___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -11095,34 +11064,34 @@ void parser___ReduceAction36___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:2675 */
+  /* parser/parser.nit:2673 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2676 */
+  /* parser/parser.nit:2674 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2677 */
+  /* parser/parser.nit:2675 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2678 */
+  /* parser/parser.nit:2676 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2679 */
+  /* parser/parser.nit:2677 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2680 */
+  /* parser/parser.nit:2678 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2682 */
+  /* parser/parser.nit:2680 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2682);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2680);
   }
-  /* parser/parser.nit:2683 */
+  /* parser/parser.nit:2681 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:2685 */
+  /* parser/parser.nit:2683 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2685);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2683);
   }
-  /* parser/parser.nit:2686 */
+  /* parser/parser.nit:2684 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11137,18 +11106,18 @@ void parser___ReduceAction36___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2687 */
+    /* parser/parser.nit:2685 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2689 */
+  /* parser/parser.nit:2687 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2695 */
+  /* parser/parser.nit:2693 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2696 */
+  /* parser/parser.nit:2694 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2696);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2694);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11164,7 +11133,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 = 2701;
+  fra.me.line = 2699;
   fra.me.meth = LOCATE_parser___ReduceAction37___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11180,42 +11149,42 @@ void parser___ReduceAction37___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:2703 */
+  /* parser/parser.nit:2701 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2704 */
+  /* parser/parser.nit:2702 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2705 */
+  /* parser/parser.nit:2703 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2706 */
+  /* parser/parser.nit:2704 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2707 */
+  /* parser/parser.nit:2705 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2708 */
+  /* parser/parser.nit:2706 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2709 */
+  /* parser/parser.nit:2707 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2711 */
+  /* parser/parser.nit:2709 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2711);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2709);
   }
-  /* parser/parser.nit:2713 */
+  /* parser/parser.nit:2711 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2713);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2711);
   }
-  /* parser/parser.nit:2714 */
+  /* parser/parser.nit:2712 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:2716 */
+  /* parser/parser.nit:2714 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2716);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2714);
   }
-  /* parser/parser.nit:2717 */
+  /* parser/parser.nit:2715 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11230,18 +11199,18 @@ void parser___ReduceAction37___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2718 */
+    /* parser/parser.nit:2716 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2720 */
+  /* parser/parser.nit:2718 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2726 */
+  /* parser/parser.nit:2724 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2727 */
+  /* parser/parser.nit:2725 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2727);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2725);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11257,7 +11226,7 @@ void parser___ReduceAction38___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2732;
+  fra.me.line = 2730;
   fra.me.meth = LOCATE_parser___ReduceAction38___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11273,45 +11242,45 @@ void parser___ReduceAction38___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:2734 */
+  /* parser/parser.nit:2732 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2735 */
+  /* parser/parser.nit:2733 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2736 */
+  /* parser/parser.nit:2734 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2737 */
+  /* parser/parser.nit:2735 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2738 */
+  /* parser/parser.nit:2736 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2739 */
+  /* parser/parser.nit:2737 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2740 */
+  /* parser/parser.nit:2738 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2742 */
+  /* parser/parser.nit:2740 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2742);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2740);
   }
-  /* parser/parser.nit:2743 */
+  /* parser/parser.nit:2741 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:2745 */
+  /* parser/parser.nit:2743 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2745);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2743);
   }
-  /* parser/parser.nit:2746 */
+  /* parser/parser.nit:2744 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:2748 */
+  /* parser/parser.nit:2746 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2748);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2746);
   }
-  /* parser/parser.nit:2749 */
+  /* parser/parser.nit:2747 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11326,18 +11295,18 @@ void parser___ReduceAction38___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2750 */
+    /* parser/parser.nit:2748 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2752 */
+  /* parser/parser.nit:2750 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2758 */
+  /* parser/parser.nit:2756 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2759 */
+  /* parser/parser.nit:2757 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2759);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2757);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11353,7 +11322,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 = 2764;
+  fra.me.line = 2762;
   fra.me.meth = LOCATE_parser___ReduceAction39___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -11370,53 +11339,53 @@ 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:2766 */
+  /* parser/parser.nit:2764 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2767 */
+  /* parser/parser.nit:2765 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2768 */
+  /* parser/parser.nit:2766 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2769 */
+  /* parser/parser.nit:2767 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2770 */
+  /* parser/parser.nit:2768 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2771 */
+  /* parser/parser.nit:2769 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2772 */
+  /* parser/parser.nit:2770 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2773 */
+  /* parser/parser.nit:2771 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2775 */
+  /* parser/parser.nit:2773 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2775);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2773);
   }
-  /* parser/parser.nit:2777 */
+  /* parser/parser.nit:2775 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2777);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2775);
   }
-  /* parser/parser.nit:2778 */
+  /* parser/parser.nit:2776 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:2780 */
+  /* parser/parser.nit:2778 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2780);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2778);
   }
-  /* parser/parser.nit:2781 */
+  /* parser/parser.nit:2779 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2783 */
+  /* parser/parser.nit:2781 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2783);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2781);
   }
-  /* parser/parser.nit:2784 */
+  /* parser/parser.nit:2782 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11431,18 +11400,18 @@ void parser___ReduceAction39___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2785 */
+    /* parser/parser.nit:2783 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2787 */
+  /* parser/parser.nit:2785 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2793 */
+  /* parser/parser.nit:2791 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2794 */
+  /* parser/parser.nit:2792 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2794);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2792);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11458,7 +11427,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 = 2799;
+  fra.me.line = 2797;
   fra.me.meth = LOCATE_parser___ReduceAction40___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -11473,34 +11442,34 @@ void parser___ReduceAction40___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:2801 */
+  /* parser/parser.nit:2799 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2802 */
+  /* parser/parser.nit:2800 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2803 */
+  /* parser/parser.nit:2801 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2804 */
+  /* parser/parser.nit:2802 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2805 */
+  /* parser/parser.nit:2803 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2806 */
+  /* parser/parser.nit:2804 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2808 */
+  /* parser/parser.nit:2806 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2808);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2806);
   }
-  /* parser/parser.nit:2810 */
+  /* parser/parser.nit:2808 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2810);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2808);
   }
-  /* parser/parser.nit:2811 */
+  /* parser/parser.nit:2809 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:2812 */
+  /* parser/parser.nit:2810 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11515,18 +11484,18 @@ void parser___ReduceAction40___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2813 */
+    /* parser/parser.nit:2811 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2815 */
+  /* parser/parser.nit:2813 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:2821 */
+  /* parser/parser.nit:2819 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2822 */
+  /* parser/parser.nit:2820 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2822);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2820);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11542,7 +11511,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 = 2827;
+  fra.me.line = 2825;
   fra.me.meth = LOCATE_parser___ReduceAction41___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11558,42 +11527,42 @@ void parser___ReduceAction41___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:2829 */
+  /* parser/parser.nit:2827 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2830 */
+  /* parser/parser.nit:2828 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2831 */
+  /* parser/parser.nit:2829 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2832 */
+  /* parser/parser.nit:2830 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2833 */
+  /* parser/parser.nit:2831 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2834 */
+  /* parser/parser.nit:2832 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2835 */
+  /* parser/parser.nit:2833 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2837 */
+  /* parser/parser.nit:2835 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2837);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2835);
   }
-  /* parser/parser.nit:2839 */
+  /* parser/parser.nit:2837 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2839);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2837);
   }
-  /* parser/parser.nit:2841 */
+  /* parser/parser.nit:2839 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2841);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2839);
   }
-  /* parser/parser.nit:2842 */
+  /* parser/parser.nit:2840 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2843 */
+  /* parser/parser.nit:2841 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11608,18 +11577,18 @@ void parser___ReduceAction41___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2844 */
+    /* parser/parser.nit:2842 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2846 */
+  /* parser/parser.nit:2844 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2852 */
+  /* parser/parser.nit:2850 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2853 */
+  /* parser/parser.nit:2851 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2853);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2851);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11635,7 +11604,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 = 2858;
+  fra.me.line = 2856;
   fra.me.meth = LOCATE_parser___ReduceAction42___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11651,45 +11620,45 @@ void parser___ReduceAction42___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:2860 */
+  /* parser/parser.nit:2858 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2861 */
+  /* parser/parser.nit:2859 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2862 */
+  /* parser/parser.nit:2860 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2863 */
+  /* parser/parser.nit:2861 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2864 */
+  /* parser/parser.nit:2862 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2865 */
+  /* parser/parser.nit:2863 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2866 */
+  /* parser/parser.nit:2864 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2868 */
+  /* parser/parser.nit:2866 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2868);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2866);
   }
-  /* parser/parser.nit:2869 */
+  /* parser/parser.nit:2867 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:2871 */
+  /* parser/parser.nit:2869 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2871);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2869);
   }
-  /* parser/parser.nit:2873 */
+  /* parser/parser.nit:2871 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2873);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2871);
   }
-  /* parser/parser.nit:2874 */
+  /* parser/parser.nit:2872 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2875 */
+  /* parser/parser.nit:2873 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11704,18 +11673,18 @@ void parser___ReduceAction42___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2876 */
+    /* parser/parser.nit:2874 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2878 */
+  /* parser/parser.nit:2876 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2884 */
+  /* parser/parser.nit:2882 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2885 */
+  /* parser/parser.nit:2883 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2885);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2883);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11731,7 +11700,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 = 2890;
+  fra.me.line = 2888;
   fra.me.meth = LOCATE_parser___ReduceAction43___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -11748,53 +11717,53 @@ void parser___ReduceAction43___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:2892 */
+  /* parser/parser.nit:2890 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2893 */
+  /* parser/parser.nit:2891 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2894 */
+  /* parser/parser.nit:2892 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2895 */
+  /* parser/parser.nit:2893 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2896 */
+  /* parser/parser.nit:2894 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2897 */
+  /* parser/parser.nit:2895 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2898 */
+  /* parser/parser.nit:2896 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2899 */
+  /* parser/parser.nit:2897 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2901 */
+  /* parser/parser.nit:2899 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2901);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2899);
   }
-  /* parser/parser.nit:2903 */
+  /* parser/parser.nit:2901 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2903);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2901);
   }
-  /* parser/parser.nit:2904 */
+  /* parser/parser.nit:2902 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:2906 */
+  /* parser/parser.nit:2904 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2906);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2904);
   }
-  /* parser/parser.nit:2908 */
+  /* parser/parser.nit:2906 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2908);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2906);
   }
-  /* parser/parser.nit:2909 */
+  /* parser/parser.nit:2907 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:2910 */
+  /* parser/parser.nit:2908 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11809,18 +11778,18 @@ void parser___ReduceAction43___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2911 */
+    /* parser/parser.nit:2909 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2913 */
+  /* parser/parser.nit:2911 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2919 */
+  /* parser/parser.nit:2917 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2920 */
+  /* parser/parser.nit:2918 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2920);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2918);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11836,7 +11805,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 = 2925;
+  fra.me.line = 2923;
   fra.me.meth = LOCATE_parser___ReduceAction44___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11852,45 +11821,45 @@ void parser___ReduceAction44___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:2927 */
+  /* parser/parser.nit:2925 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2928 */
+  /* parser/parser.nit:2926 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2929 */
+  /* parser/parser.nit:2927 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2930 */
+  /* parser/parser.nit:2928 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2931 */
+  /* parser/parser.nit:2929 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2932 */
+  /* parser/parser.nit:2930 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2933 */
+  /* parser/parser.nit:2931 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2935 */
+  /* parser/parser.nit:2933 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2935);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2933);
   }
-  /* parser/parser.nit:2936 */
+  /* parser/parser.nit:2934 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:2938 */
+  /* parser/parser.nit:2936 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2938);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2936);
   }
-  /* parser/parser.nit:2940 */
+  /* parser/parser.nit:2938 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2940);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2938);
   }
-  /* parser/parser.nit:2941 */
+  /* parser/parser.nit:2939 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:2942 */
+  /* parser/parser.nit:2940 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11905,18 +11874,18 @@ void parser___ReduceAction44___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2943 */
+    /* parser/parser.nit:2941 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2945 */
+  /* parser/parser.nit:2943 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:2951 */
+  /* parser/parser.nit:2949 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2952 */
+  /* parser/parser.nit:2950 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2952);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2950);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11932,7 +11901,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 = 2957;
+  fra.me.line = 2955;
   fra.me.meth = LOCATE_parser___ReduceAction45___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -11949,53 +11918,53 @@ void parser___ReduceAction45___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:2959 */
+  /* parser/parser.nit:2957 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2960 */
+  /* parser/parser.nit:2958 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2961 */
+  /* parser/parser.nit:2959 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2962 */
+  /* parser/parser.nit:2960 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2963 */
+  /* parser/parser.nit:2961 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2964 */
+  /* parser/parser.nit:2962 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2965 */
+  /* parser/parser.nit:2963 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2966 */
+  /* parser/parser.nit:2964 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2968 */
+  /* parser/parser.nit:2966 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2968);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2966);
   }
-  /* parser/parser.nit:2970 */
+  /* parser/parser.nit:2968 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2970);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2968);
   }
-  /* parser/parser.nit:2971 */
+  /* parser/parser.nit:2969 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:2973 */
+  /* parser/parser.nit:2971 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2973);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2971);
   }
-  /* parser/parser.nit:2975 */
+  /* parser/parser.nit:2973 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2973);
   }
-  /* parser/parser.nit:2976 */
+  /* parser/parser.nit:2974 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:2977 */
+  /* parser/parser.nit:2975 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12010,18 +11979,18 @@ void parser___ReduceAction45___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:2978 */
+    /* parser/parser.nit:2976 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:2980 */
+  /* parser/parser.nit:2978 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:2986 */
+  /* parser/parser.nit:2984 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2987 */
+  /* parser/parser.nit:2985 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2987);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2985);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12037,7 +12006,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 = 2992;
+  fra.me.line = 2990;
   fra.me.meth = LOCATE_parser___ReduceAction46___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12054,56 +12023,56 @@ void parser___ReduceAction46___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:2994 */
+  /* parser/parser.nit:2992 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2995 */
+  /* parser/parser.nit:2993 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2996 */
+  /* parser/parser.nit:2994 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2997 */
+  /* parser/parser.nit:2995 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2998 */
+  /* parser/parser.nit:2996 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2999 */
+  /* parser/parser.nit:2997 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3000 */
+  /* parser/parser.nit:2998 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3001 */
+  /* parser/parser.nit:2999 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3003 */
+  /* parser/parser.nit:3001 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3003);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3001);
   }
-  /* parser/parser.nit:3004 */
+  /* parser/parser.nit:3002 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:3006 */
+  /* parser/parser.nit:3004 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3006);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3004);
   }
-  /* parser/parser.nit:3007 */
+  /* parser/parser.nit:3005 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:3009 */
+  /* parser/parser.nit:3007 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3009);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3007);
   }
-  /* parser/parser.nit:3011 */
+  /* parser/parser.nit:3009 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3011);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3009);
   }
-  /* parser/parser.nit:3012 */
+  /* parser/parser.nit:3010 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:3013 */
+  /* parser/parser.nit:3011 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12118,18 +12087,18 @@ void parser___ReduceAction46___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3014 */
+    /* parser/parser.nit:3012 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3016 */
+  /* parser/parser.nit:3014 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3022 */
+  /* parser/parser.nit:3020 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3023 */
+  /* parser/parser.nit:3021 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3023);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3021);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12145,7 +12114,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 = 3028;
+  fra.me.line = 3026;
   fra.me.meth = LOCATE_parser___ReduceAction47___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -12163,64 +12132,64 @@ 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:3030 */
+  /* parser/parser.nit:3028 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3031 */
+  /* parser/parser.nit:3029 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3032 */
+  /* parser/parser.nit:3030 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3033 */
+  /* parser/parser.nit:3031 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3034 */
+  /* parser/parser.nit:3032 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3035 */
+  /* parser/parser.nit:3033 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3036 */
+  /* parser/parser.nit:3034 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3037 */
+  /* parser/parser.nit:3035 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3038 */
+  /* parser/parser.nit:3036 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3040 */
+  /* parser/parser.nit:3038 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3040);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3038);
   }
-  /* parser/parser.nit:3042 */
+  /* parser/parser.nit:3040 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3042);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3040);
   }
-  /* parser/parser.nit:3043 */
+  /* parser/parser.nit:3041 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:3045 */
+  /* parser/parser.nit:3043 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3045);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3043);
   }
-  /* parser/parser.nit:3046 */
+  /* parser/parser.nit:3044 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* parser/parser.nit:3048 */
+  /* parser/parser.nit:3046 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3048);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3046);
   }
-  /* parser/parser.nit:3050 */
+  /* parser/parser.nit:3048 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3050);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3048);
   }
-  /* parser/parser.nit:3051 */
+  /* parser/parser.nit:3049 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* parser/parser.nit:3052 */
+  /* parser/parser.nit:3050 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12235,18 +12204,18 @@ void parser___ReduceAction47___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3053 */
+    /* parser/parser.nit:3051 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3055 */
+  /* parser/parser.nit:3053 */
   fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* parser/parser.nit:3061 */
+  /* parser/parser.nit:3059 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3062 */
+  /* parser/parser.nit:3060 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3062);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3060);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12262,7 +12231,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 = 3067;
+  fra.me.line = 3065;
   fra.me.meth = LOCATE_parser___ReduceAction48___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12278,38 +12247,38 @@ void parser___ReduceAction48___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:3069 */
+  /* parser/parser.nit:3067 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3070 */
+  /* parser/parser.nit:3068 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3071 */
+  /* parser/parser.nit:3069 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3072 */
+  /* parser/parser.nit:3070 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3073 */
+  /* parser/parser.nit:3071 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3074 */
+  /* parser/parser.nit:3072 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3075 */
+  /* parser/parser.nit:3073 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3077 */
+  /* parser/parser.nit:3075 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3077);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3075);
   }
-  /* parser/parser.nit:3078 */
+  /* parser/parser.nit:3076 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* parser/parser.nit:3079 */
+  /* parser/parser.nit:3077 */
   fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* parser/parser.nit:3083 */
+  /* parser/parser.nit:3081 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3083);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3081);
   }
-  /* parser/parser.nit:3084 */
+  /* parser/parser.nit:3082 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12324,10 +12293,10 @@ void parser___ReduceAction48___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3085 */
+    /* parser/parser.nit:3083 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
-  /* parser/parser.nit:3087 */
+  /* parser/parser.nit:3085 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12342,18 +12311,18 @@ void parser___ReduceAction48___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3088 */
+    /* parser/parser.nit:3086 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3090 */
+  /* parser/parser.nit:3088 */
   fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* parser/parser.nit:3096 */
+  /* parser/parser.nit:3094 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:3097 */
+  /* parser/parser.nit:3095 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3097);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3095);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12369,7 +12338,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 = 3102;
+  fra.me.line = 3100;
   fra.me.meth = LOCATE_parser___ReduceAction49___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12386,46 +12355,46 @@ void parser___ReduceAction49___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:3104 */
+  /* parser/parser.nit:3102 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3105 */
+  /* parser/parser.nit:3103 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3106 */
+  /* parser/parser.nit:3104 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3107 */
+  /* parser/parser.nit:3105 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3108 */
+  /* parser/parser.nit:3106 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3109 */
+  /* parser/parser.nit:3107 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3110 */
+  /* parser/parser.nit:3108 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3112 */
+  /* parser/parser.nit:3110 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3112);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3110);
   }
-  /* parser/parser.nit:3113 */
+  /* parser/parser.nit:3111 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3115 */
+  /* parser/parser.nit:3113 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3115);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3113);
   }
-  /* parser/parser.nit:3116 */
+  /* parser/parser.nit:3114 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:3117 */
+  /* parser/parser.nit:3115 */
   fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* parser/parser.nit:3121 */
+  /* parser/parser.nit:3119 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3121);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3119);
   }
-  /* parser/parser.nit:3122 */
+  /* parser/parser.nit:3120 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12440,10 +12409,10 @@ void parser___ReduceAction49___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3123 */
+    /* parser/parser.nit:3121 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
-  /* parser/parser.nit:3125 */
+  /* parser/parser.nit:3123 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12458,18 +12427,18 @@ void parser___ReduceAction49___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3126 */
+    /* parser/parser.nit:3124 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3128 */
+  /* parser/parser.nit:3126 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:3134 */
+  /* parser/parser.nit:3132 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3135 */
+  /* parser/parser.nit:3133 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3135);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3133);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12485,7 +12454,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 = 3140;
+  fra.me.line = 3138;
   fra.me.meth = LOCATE_parser___ReduceAction50___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12501,49 +12470,49 @@ void parser___ReduceAction50___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:3142 */
+  /* parser/parser.nit:3140 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3143 */
+  /* parser/parser.nit:3141 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3144 */
+  /* parser/parser.nit:3142 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3145 */
+  /* parser/parser.nit:3143 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3146 */
+  /* parser/parser.nit:3144 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3147 */
+  /* parser/parser.nit:3145 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3148 */
+  /* parser/parser.nit:3146 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3150 */
+  /* parser/parser.nit:3148 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3150);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3148);
   }
-  /* parser/parser.nit:3151 */
+  /* parser/parser.nit:3149 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:3152 */
+  /* parser/parser.nit:3150 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3154 */
+  /* parser/parser.nit:3152 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3154);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3152);
   }
-  /* parser/parser.nit:3155 */
+  /* parser/parser.nit:3153 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3156 */
+  /* parser/parser.nit:3154 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3160 */
+  /* parser/parser.nit:3158 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3160);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3158);
   }
-  /* parser/parser.nit:3161 */
+  /* parser/parser.nit:3159 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12558,10 +12527,10 @@ void parser___ReduceAction50___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3162 */
+    /* parser/parser.nit:3160 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
   }
-  /* parser/parser.nit:3164 */
+  /* parser/parser.nit:3162 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12576,18 +12545,18 @@ void parser___ReduceAction50___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3165 */
+    /* parser/parser.nit:3163 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3167 */
+  /* parser/parser.nit:3165 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:3173 */
+  /* parser/parser.nit:3171 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3174 */
+  /* parser/parser.nit:3172 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3174);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3172);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12603,7 +12572,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 = 3179;
+  fra.me.line = 3177;
   fra.me.meth = LOCATE_parser___ReduceAction51___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12620,57 +12589,57 @@ void parser___ReduceAction51___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:3181 */
+  /* parser/parser.nit:3179 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3182 */
+  /* parser/parser.nit:3180 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3183 */
+  /* parser/parser.nit:3181 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3184 */
+  /* parser/parser.nit:3182 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3185 */
+  /* parser/parser.nit:3183 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3186 */
+  /* parser/parser.nit:3184 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3187 */
+  /* parser/parser.nit:3185 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3188 */
+  /* parser/parser.nit:3186 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3190 */
+  /* parser/parser.nit:3188 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3190);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3188);
   }
-  /* parser/parser.nit:3192 */
+  /* parser/parser.nit:3190 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3192);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3190);
   }
-  /* parser/parser.nit:3193 */
+  /* parser/parser.nit:3191 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:3194 */
+  /* parser/parser.nit:3192 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3196 */
+  /* parser/parser.nit:3194 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3196);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3194);
   }
-  /* parser/parser.nit:3197 */
+  /* parser/parser.nit:3195 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3198 */
+  /* parser/parser.nit:3196 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3202 */
+  /* parser/parser.nit:3200 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3202);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3200);
   }
-  /* parser/parser.nit:3203 */
+  /* parser/parser.nit:3201 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12685,10 +12654,10 @@ void parser___ReduceAction51___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3204 */
+    /* parser/parser.nit:3202 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* parser/parser.nit:3206 */
+  /* parser/parser.nit:3204 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12703,18 +12672,18 @@ void parser___ReduceAction51___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3207 */
+    /* parser/parser.nit:3205 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3209 */
+  /* parser/parser.nit:3207 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3215 */
+  /* parser/parser.nit:3213 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3216 */
+  /* parser/parser.nit:3214 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3216);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3214);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12730,7 +12699,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 = 3221;
+  fra.me.line = 3219;
   fra.me.meth = LOCATE_parser___ReduceAction52___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12746,49 +12715,49 @@ void parser___ReduceAction52___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:3223 */
+  /* parser/parser.nit:3221 */
   fra.me.REG[2] = NIT_NULL;
-  /* 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3227 */
+  /* parser/parser.nit:3225 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3228 */
+  /* parser/parser.nit:3226 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3229 */
+  /* parser/parser.nit:3227 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3231 */
+  /* parser/parser.nit:3229 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3231);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3229);
   }
-  /* parser/parser.nit:3232 */
+  /* parser/parser.nit:3230 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:3233 */
+  /* parser/parser.nit:3231 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3235 */
+  /* parser/parser.nit:3233 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3235);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3233);
   }
-  /* parser/parser.nit:3236 */
+  /* parser/parser.nit:3234 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3237 */
+  /* parser/parser.nit:3235 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3241 */
+  /* parser/parser.nit:3239 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3241);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3239);
   }
-  /* parser/parser.nit:3242 */
+  /* parser/parser.nit:3240 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12803,10 +12772,10 @@ void parser___ReduceAction52___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3243 */
+    /* parser/parser.nit:3241 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
   }
-  /* parser/parser.nit:3245 */
+  /* parser/parser.nit:3243 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12821,18 +12790,18 @@ void parser___ReduceAction52___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3246 */
+    /* parser/parser.nit:3244 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3248 */
+  /* parser/parser.nit:3246 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:3254 */
+  /* parser/parser.nit:3252 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3255 */
+  /* parser/parser.nit:3253 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3255);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3253);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12848,7 +12817,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 = 3260;
+  fra.me.line = 3258;
   fra.me.meth = LOCATE_parser___ReduceAction53___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12865,57 +12834,57 @@ void parser___ReduceAction53___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:3262 */
+  /* parser/parser.nit:3260 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3263 */
+  /* parser/parser.nit:3261 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3264 */
+  /* parser/parser.nit:3262 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3265 */
+  /* parser/parser.nit:3263 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3266 */
+  /* parser/parser.nit:3264 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3267 */
+  /* parser/parser.nit:3265 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3268 */
+  /* parser/parser.nit:3266 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3269 */
+  /* parser/parser.nit:3267 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3271 */
+  /* parser/parser.nit:3269 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3271);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3269);
   }
-  /* parser/parser.nit:3273 */
+  /* parser/parser.nit:3271 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3273);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3271);
   }
-  /* parser/parser.nit:3274 */
+  /* parser/parser.nit:3272 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:3275 */
+  /* parser/parser.nit:3273 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3277 */
+  /* parser/parser.nit:3275 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3277);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3275);
   }
-  /* parser/parser.nit:3278 */
+  /* parser/parser.nit:3276 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3279 */
+  /* parser/parser.nit:3277 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3283 */
+  /* parser/parser.nit:3281 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3283);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3281);
   }
-  /* parser/parser.nit:3284 */
+  /* parser/parser.nit:3282 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12930,10 +12899,10 @@ void parser___ReduceAction53___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3285 */
+    /* parser/parser.nit:3283 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* parser/parser.nit:3287 */
+  /* parser/parser.nit:3285 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12948,18 +12917,18 @@ void parser___ReduceAction53___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3288 */
+    /* parser/parser.nit:3286 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3290 */
+  /* parser/parser.nit:3288 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3296 */
+  /* parser/parser.nit:3294 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3297 */
+  /* parser/parser.nit:3295 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3297);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3295);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12975,7 +12944,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 = 3302;
+  fra.me.line = 3300;
   fra.me.meth = LOCATE_parser___ReduceAction54___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12992,60 +12961,60 @@ void parser___ReduceAction54___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:3304 */
+  /* parser/parser.nit:3302 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3305 */
+  /* parser/parser.nit:3303 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3306 */
+  /* parser/parser.nit:3304 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3307 */
+  /* parser/parser.nit:3305 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3308 */
+  /* parser/parser.nit:3306 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3309 */
+  /* parser/parser.nit:3307 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3310 */
+  /* parser/parser.nit:3308 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3311 */
+  /* parser/parser.nit:3309 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3313 */
+  /* parser/parser.nit:3311 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3313);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3311);
   }
-  /* parser/parser.nit:3314 */
+  /* parser/parser.nit:3312 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:3316 */
+  /* parser/parser.nit:3314 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3316);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3314);
   }
-  /* parser/parser.nit:3317 */
+  /* parser/parser.nit:3315 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:3318 */
+  /* parser/parser.nit:3316 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3320 */
+  /* parser/parser.nit:3318 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3320);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3318);
   }
-  /* parser/parser.nit:3321 */
+  /* parser/parser.nit:3319 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3322 */
+  /* parser/parser.nit:3320 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3326 */
+  /* parser/parser.nit:3324 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3326);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3324);
   }
-  /* parser/parser.nit:3327 */
+  /* parser/parser.nit:3325 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13060,10 +13029,10 @@ void parser___ReduceAction54___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3328 */
+    /* parser/parser.nit:3326 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* parser/parser.nit:3330 */
+  /* parser/parser.nit:3328 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13078,18 +13047,18 @@ void parser___ReduceAction54___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3331 */
+    /* parser/parser.nit:3329 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3333 */
+  /* parser/parser.nit:3331 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3339 */
+  /* parser/parser.nit:3337 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3340 */
+  /* parser/parser.nit:3338 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3340);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3338);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13105,7 +13074,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 = 3345;
+  fra.me.line = 3343;
   fra.me.meth = LOCATE_parser___ReduceAction55___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -13123,68 +13092,68 @@ void parser___ReduceAction55___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:3347 */
+  /* parser/parser.nit:3345 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3348 */
+  /* parser/parser.nit:3346 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3349 */
+  /* parser/parser.nit:3347 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3350 */
+  /* parser/parser.nit:3348 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3351 */
+  /* parser/parser.nit:3349 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3352 */
+  /* parser/parser.nit:3350 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3353 */
+  /* parser/parser.nit:3351 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3354 */
+  /* parser/parser.nit:3352 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3355 */
+  /* parser/parser.nit:3353 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3357 */
+  /* parser/parser.nit:3355 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 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_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3359);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3357);
   }
-  /* parser/parser.nit:3360 */
+  /* parser/parser.nit:3358 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:3362 */
+  /* parser/parser.nit:3360 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3362);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3360);
   }
-  /* parser/parser.nit:3363 */
+  /* parser/parser.nit:3361 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* parser/parser.nit:3364 */
+  /* parser/parser.nit:3362 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3366 */
+  /* parser/parser.nit:3364 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3366);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3364);
   }
-  /* parser/parser.nit:3367 */
+  /* parser/parser.nit:3365 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3368 */
+  /* parser/parser.nit:3366 */
   fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3372 */
+  /* parser/parser.nit:3370 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3372);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3370);
   }
-  /* parser/parser.nit:3373 */
+  /* parser/parser.nit:3371 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13199,10 +13168,10 @@ void parser___ReduceAction55___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3374 */
+    /* parser/parser.nit:3372 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
   }
-  /* parser/parser.nit:3376 */
+  /* parser/parser.nit:3374 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13217,18 +13186,18 @@ void parser___ReduceAction55___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3377 */
+    /* parser/parser.nit:3375 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3379 */
+  /* parser/parser.nit:3377 */
   fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* parser/parser.nit:3385 */
+  /* parser/parser.nit:3383 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3386 */
+  /* parser/parser.nit:3384 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3386);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3384);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13244,7 +13213,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 = 3391;
+  fra.me.line = 3389;
   fra.me.meth = LOCATE_parser___ReduceAction56___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -13261,49 +13230,49 @@ void parser___ReduceAction56___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:3393 */
+  /* parser/parser.nit:3391 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3394 */
+  /* parser/parser.nit:3392 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3395 */
+  /* parser/parser.nit:3393 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3396 */
+  /* parser/parser.nit:3394 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3397 */
+  /* parser/parser.nit:3395 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3398 */
+  /* parser/parser.nit:3396 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3399 */
+  /* parser/parser.nit:3397 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3401 */
+  /* parser/parser.nit:3399 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3401);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3399);
   }
-  /* parser/parser.nit:3402 */
+  /* parser/parser.nit:3400 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3404 */
+  /* parser/parser.nit:3402 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3402);
   }
-  /* parser/parser.nit:3405 */
+  /* parser/parser.nit:3403 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:3406 */
+  /* parser/parser.nit:3404 */
   fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* parser/parser.nit:3410 */
+  /* parser/parser.nit:3408 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3410);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3408);
   }
-  /* parser/parser.nit:3411 */
+  /* parser/parser.nit:3409 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:3412 */
+  /* parser/parser.nit:3410 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13318,10 +13287,10 @@ void parser___ReduceAction56___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3413 */
+    /* parser/parser.nit:3411 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
-  /* parser/parser.nit:3415 */
+  /* parser/parser.nit:3413 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13336,18 +13305,18 @@ void parser___ReduceAction56___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3416 */
+    /* parser/parser.nit:3414 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3418 */
+  /* parser/parser.nit:3416 */
   fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* parser/parser.nit:3424 */
+  /* parser/parser.nit:3422 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3425 */
+  /* parser/parser.nit:3423 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3425);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3423);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13363,7 +13332,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 = 3430;
+  fra.me.line = 3428;
   fra.me.meth = LOCATE_parser___ReduceAction57___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -13381,57 +13350,57 @@ void parser___ReduceAction57___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:3432 */
+  /* parser/parser.nit:3430 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3433 */
+  /* parser/parser.nit:3431 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3434 */
+  /* parser/parser.nit:3432 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3435 */
+  /* parser/parser.nit:3433 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3436 */
+  /* parser/parser.nit:3434 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3437 */
+  /* parser/parser.nit:3435 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3438 */
+  /* parser/parser.nit:3436 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3439 */
+  /* parser/parser.nit:3437 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3441 */
+  /* parser/parser.nit:3439 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3441);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3439);
   }
-  /* parser/parser.nit:3443 */
+  /* parser/parser.nit:3441 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3443);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3441);
   }
-  /* parser/parser.nit:3444 */
+  /* parser/parser.nit:3442 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3446 */
+  /* parser/parser.nit:3444 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3446);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3444);
   }
-  /* parser/parser.nit:3447 */
+  /* parser/parser.nit:3445 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* parser/parser.nit:3448 */
+  /* parser/parser.nit:3446 */
   fra.me.REG[10] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[10]);
-  /* parser/parser.nit:3452 */
+  /* parser/parser.nit:3450 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3452);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3450);
   }
-  /* parser/parser.nit:3453 */
+  /* parser/parser.nit:3451 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* parser/parser.nit:3454 */
+  /* parser/parser.nit:3452 */
   REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13446,10 +13415,10 @@ void parser___ReduceAction57___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3455 */
+    /* parser/parser.nit:3453 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
   }
-  /* parser/parser.nit:3457 */
+  /* parser/parser.nit:3455 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13464,18 +13433,18 @@ void parser___ReduceAction57___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3458 */
+    /* parser/parser.nit:3456 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3460 */
+  /* parser/parser.nit:3458 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3466 */
+  /* parser/parser.nit:3464 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3467 */
+  /* parser/parser.nit:3465 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3467);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3465);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13491,7 +13460,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 = 3472;
+  fra.me.line = 3470;
   fra.me.meth = LOCATE_parser___ReduceAction58___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -13508,60 +13477,60 @@ void parser___ReduceAction58___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:3474 */
+  /* parser/parser.nit:3472 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3475 */
+  /* parser/parser.nit:3473 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3476 */
+  /* parser/parser.nit:3474 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3477 */
+  /* parser/parser.nit:3475 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3478 */
+  /* parser/parser.nit:3476 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3479 */
+  /* parser/parser.nit:3477 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3480 */
+  /* parser/parser.nit:3478 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3481 */
+  /* parser/parser.nit:3479 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3483 */
+  /* parser/parser.nit:3481 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3483);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3481);
   }
-  /* parser/parser.nit:3484 */
+  /* parser/parser.nit:3482 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:3486 */
+  /* parser/parser.nit:3484 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3486);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3484);
   }
-  /* parser/parser.nit:3487 */
+  /* parser/parser.nit:3485 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3489 */
+  /* parser/parser.nit:3487 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3487);
   }
-  /* parser/parser.nit:3490 */
+  /* parser/parser.nit:3488 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:3491 */
+  /* parser/parser.nit:3489 */
   fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3495 */
+  /* parser/parser.nit:3493 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3495);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3493);
   }
-  /* parser/parser.nit:3496 */
+  /* parser/parser.nit:3494 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* parser/parser.nit:3497 */
+  /* parser/parser.nit:3495 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13576,10 +13545,10 @@ void parser___ReduceAction58___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3498 */
+    /* parser/parser.nit:3496 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
   }
-  /* parser/parser.nit:3500 */
+  /* parser/parser.nit:3498 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13594,18 +13563,18 @@ void parser___ReduceAction58___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3501 */
+    /* parser/parser.nit:3499 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3503 */
+  /* parser/parser.nit:3501 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3509 */
+  /* parser/parser.nit:3507 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3510 */
+  /* parser/parser.nit:3508 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3510);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3508);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13621,7 +13590,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 = 3515;
+  fra.me.line = 3513;
   fra.me.meth = LOCATE_parser___ReduceAction59___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -13639,68 +13608,68 @@ void parser___ReduceAction59___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:3517 */
+  /* parser/parser.nit:3515 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3518 */
+  /* parser/parser.nit:3516 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3519 */
+  /* parser/parser.nit:3517 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3520 */
+  /* parser/parser.nit:3518 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3521 */
+  /* parser/parser.nit:3519 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3522 */
+  /* parser/parser.nit:3520 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3523 */
+  /* parser/parser.nit:3521 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3524 */
+  /* parser/parser.nit:3522 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3525 */
+  /* parser/parser.nit:3523 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3527 */
+  /* parser/parser.nit:3525 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3527);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3525);
   }
-  /* parser/parser.nit:3529 */
+  /* parser/parser.nit:3527 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3529);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3527);
   }
-  /* parser/parser.nit:3530 */
+  /* parser/parser.nit:3528 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:3532 */
+  /* parser/parser.nit:3530 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3532);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3530);
   }
-  /* parser/parser.nit:3533 */
+  /* parser/parser.nit:3531 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3535 */
+  /* parser/parser.nit:3533 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3535);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3533);
   }
-  /* parser/parser.nit:3536 */
+  /* parser/parser.nit:3534 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:3537 */
+  /* parser/parser.nit:3535 */
   fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3541 */
+  /* parser/parser.nit:3539 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3541);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3539);
   }
-  /* parser/parser.nit:3542 */
+  /* parser/parser.nit:3540 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:3543 */
+  /* parser/parser.nit:3541 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13715,10 +13684,10 @@ void parser___ReduceAction59___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3544 */
+    /* parser/parser.nit:3542 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
   }
-  /* parser/parser.nit:3546 */
+  /* parser/parser.nit:3544 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13733,18 +13702,18 @@ void parser___ReduceAction59___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3547 */
+    /* parser/parser.nit:3545 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3549 */
+  /* parser/parser.nit:3547 */
   fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* parser/parser.nit:3555 */
+  /* parser/parser.nit:3553 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3556 */
+  /* parser/parser.nit:3554 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3556);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3554);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13760,7 +13729,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 = 3561;
+  fra.me.line = 3559;
   fra.me.meth = LOCATE_parser___ReduceAction60___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -13777,60 +13746,60 @@ void parser___ReduceAction60___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:3563 */
+  /* parser/parser.nit:3561 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3564 */
+  /* parser/parser.nit:3562 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3565 */
+  /* parser/parser.nit:3563 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3566 */
+  /* parser/parser.nit:3564 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3567 */
+  /* parser/parser.nit:3565 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3568 */
+  /* parser/parser.nit:3566 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3569 */
+  /* parser/parser.nit:3567 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3570 */
+  /* parser/parser.nit:3568 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3572 */
+  /* parser/parser.nit:3570 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3572);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3570);
   }
-  /* parser/parser.nit:3573 */
+  /* parser/parser.nit:3571 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:3575 */
+  /* parser/parser.nit:3573 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3575);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3573);
   }
-  /* parser/parser.nit:3576 */
+  /* parser/parser.nit:3574 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3578 */
+  /* parser/parser.nit:3576 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3578);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3576);
   }
-  /* parser/parser.nit:3579 */
+  /* parser/parser.nit:3577 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:3580 */
+  /* parser/parser.nit:3578 */
   fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3584 */
+  /* parser/parser.nit:3582 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3584);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3582);
   }
-  /* parser/parser.nit:3585 */
+  /* parser/parser.nit:3583 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* parser/parser.nit:3586 */
+  /* parser/parser.nit:3584 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13845,10 +13814,10 @@ void parser___ReduceAction60___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3587 */
+    /* parser/parser.nit:3585 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
   }
-  /* parser/parser.nit:3589 */
+  /* parser/parser.nit:3587 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13863,18 +13832,18 @@ void parser___ReduceAction60___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3590 */
+    /* parser/parser.nit:3588 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3592 */
+  /* parser/parser.nit:3590 */
   fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* parser/parser.nit:3598 */
+  /* parser/parser.nit:3596 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3599 */
+  /* parser/parser.nit:3597 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3599);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3597);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13890,7 +13859,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 = 3604;
+  fra.me.line = 3602;
   fra.me.meth = LOCATE_parser___ReduceAction61___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -13908,68 +13877,68 @@ void parser___ReduceAction61___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:3606 */
+  /* parser/parser.nit:3604 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3607 */
+  /* parser/parser.nit:3605 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3608 */
+  /* parser/parser.nit:3606 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3609 */
+  /* parser/parser.nit:3607 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3610 */
+  /* parser/parser.nit:3608 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3611 */
+  /* parser/parser.nit:3609 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3612 */
+  /* parser/parser.nit:3610 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3613 */
+  /* parser/parser.nit:3611 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3614 */
+  /* parser/parser.nit:3612 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3616 */
+  /* parser/parser.nit:3614 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3616);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3614);
   }
-  /* parser/parser.nit:3618 */
+  /* parser/parser.nit:3616 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3618);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3616);
   }
-  /* parser/parser.nit:3619 */
+  /* parser/parser.nit:3617 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
   fra.me.REG[9] = fra.me.REG[6];
-  /* parser/parser.nit:3621 */
+  /* parser/parser.nit:3619 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3621);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3619);
   }
-  /* parser/parser.nit:3622 */
+  /* parser/parser.nit:3620 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3624 */
+  /* parser/parser.nit:3622 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3624);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3622);
   }
-  /* parser/parser.nit:3625 */
+  /* parser/parser.nit:3623 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:3626 */
+  /* parser/parser.nit:3624 */
   fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3630 */
+  /* parser/parser.nit:3628 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3630);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3628);
   }
-  /* parser/parser.nit:3631 */
+  /* parser/parser.nit:3629 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:3632 */
+  /* parser/parser.nit:3630 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13984,10 +13953,10 @@ void parser___ReduceAction61___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3633 */
+    /* parser/parser.nit:3631 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
   }
-  /* parser/parser.nit:3635 */
+  /* parser/parser.nit:3633 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -14002,18 +13971,18 @@ void parser___ReduceAction61___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3636 */
+    /* parser/parser.nit:3634 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3638 */
+  /* parser/parser.nit:3636 */
   fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* parser/parser.nit:3644 */
+  /* parser/parser.nit:3642 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3645 */
+  /* parser/parser.nit:3643 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3645);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3643);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14029,7 +13998,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 = 3650;
+  fra.me.line = 3648;
   fra.me.meth = LOCATE_parser___ReduceAction62___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -14047,71 +14016,71 @@ void parser___ReduceAction62___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:3652 */
+  /* parser/parser.nit:3650 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3653 */
+  /* parser/parser.nit:3651 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3654 */
+  /* parser/parser.nit:3652 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3655 */
+  /* parser/parser.nit:3653 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3656 */
+  /* parser/parser.nit:3654 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3657 */
+  /* parser/parser.nit:3655 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3658 */
+  /* parser/parser.nit:3656 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3659 */
+  /* parser/parser.nit:3657 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3660 */
+  /* parser/parser.nit:3658 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3662 */
+  /* parser/parser.nit:3660 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3662);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3660);
   }
-  /* parser/parser.nit:3663 */
+  /* parser/parser.nit:3661 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
   fra.me.REG[8] = fra.me.REG[7];
-  /* parser/parser.nit:3665 */
+  /* parser/parser.nit:3663 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3665);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3663);
   }
-  /* parser/parser.nit:3666 */
+  /* parser/parser.nit:3664 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
   fra.me.REG[9] = fra.me.REG[6];
-  /* parser/parser.nit:3668 */
+  /* parser/parser.nit:3666 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3668);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3666);
   }
-  /* parser/parser.nit:3669 */
+  /* parser/parser.nit:3667 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3671 */
+  /* parser/parser.nit:3669 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3671);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3669);
   }
-  /* parser/parser.nit:3672 */
+  /* parser/parser.nit:3670 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:3673 */
+  /* parser/parser.nit:3671 */
   fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3677 */
+  /* parser/parser.nit:3675 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3677);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3675);
   }
-  /* parser/parser.nit:3678 */
+  /* parser/parser.nit:3676 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:3679 */
+  /* parser/parser.nit:3677 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -14126,10 +14095,10 @@ void parser___ReduceAction62___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3680 */
+    /* parser/parser.nit:3678 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
   }
-  /* parser/parser.nit:3682 */
+  /* parser/parser.nit:3680 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -14144,18 +14113,18 @@ void parser___ReduceAction62___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3683 */
+    /* parser/parser.nit:3681 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3685 */
+  /* parser/parser.nit:3683 */
   fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* parser/parser.nit:3691 */
+  /* parser/parser.nit:3689 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3692 */
+  /* parser/parser.nit:3690 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3692);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3690);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14171,7 +14140,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 = 3697;
+  fra.me.line = 3695;
   fra.me.meth = LOCATE_parser___ReduceAction63___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -14190,79 +14159,79 @@ void parser___ReduceAction63___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:3699 */
+  /* parser/parser.nit:3697 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3700 */
+  /* parser/parser.nit:3698 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3701 */
+  /* parser/parser.nit:3699 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3702 */
+  /* parser/parser.nit:3700 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3703 */
+  /* parser/parser.nit:3701 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3704 */
+  /* parser/parser.nit:3702 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3705 */
+  /* parser/parser.nit:3703 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3706 */
+  /* parser/parser.nit:3704 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3707 */
+  /* parser/parser.nit:3705 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3708 */
+  /* parser/parser.nit:3706 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3710 */
+  /* parser/parser.nit:3708 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3710);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3708);
   }
-  /* parser/parser.nit:3712 */
+  /* parser/parser.nit:3710 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3712);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3710);
   }
-  /* parser/parser.nit:3713 */
+  /* parser/parser.nit:3711 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
   fra.me.REG[9] = fra.me.REG[7];
-  /* parser/parser.nit:3715 */
+  /* parser/parser.nit:3713 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3715);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3713);
   }
-  /* parser/parser.nit:3716 */
+  /* parser/parser.nit:3714 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[6]);
   fra.me.REG[10] = fra.me.REG[6];
-  /* parser/parser.nit:3718 */
+  /* parser/parser.nit:3716 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3718);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3716);
   }
-  /* parser/parser.nit:3719 */
+  /* parser/parser.nit:3717 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3721 */
+  /* parser/parser.nit:3719 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3721);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3719);
   }
-  /* parser/parser.nit:3722 */
+  /* parser/parser.nit:3720 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:3723 */
+  /* parser/parser.nit:3721 */
   fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3727 */
+  /* parser/parser.nit:3725 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3727);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3725);
   }
-  /* parser/parser.nit:3728 */
+  /* parser/parser.nit:3726 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* parser/parser.nit:3729 */
+  /* parser/parser.nit:3727 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -14277,10 +14246,10 @@ void parser___ReduceAction63___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3730 */
+    /* parser/parser.nit:3728 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[6]);
   }
-  /* parser/parser.nit:3732 */
+  /* parser/parser.nit:3730 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -14295,18 +14264,18 @@ void parser___ReduceAction63___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3733 */
+    /* parser/parser.nit:3731 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3735 */
+  /* parser/parser.nit:3733 */
   fra.me.REG[11] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[8], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* parser/parser.nit:3741 */
+  /* parser/parser.nit:3739 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* parser/parser.nit:3742 */
+  /* parser/parser.nit:3740 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3742);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3740);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14321,7 +14290,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 = 3747;
+  fra.me.line = 3745;
   fra.me.meth = LOCATE_parser___ReduceAction64___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -14334,45 +14303,45 @@ 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:3749 */
+  /* parser/parser.nit:3747 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3750 */
+  /* parser/parser.nit:3748 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3751 */
+  /* parser/parser.nit:3749 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3752 */
+  /* parser/parser.nit:3750 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3753 */
+  /* parser/parser.nit:3751 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3754 */
+  /* parser/parser.nit:3752 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3756 */
+  /* parser/parser.nit:3754 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3756);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3754);
   }
-  /* parser/parser.nit:3758 */
+  /* parser/parser.nit:3756 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwmodule, ID_parser___parser_nodes___TKwmodule)) /*cast nullable TKwmodule*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3758);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3756);
   }
-  /* parser/parser.nit:3760 */
+  /* parser/parser.nit:3758 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3760);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3758);
   }
-  /* parser/parser.nit:3761 */
+  /* parser/parser.nit:3759 */
   fra.me.REG[3] = NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:3767 */
+  /* parser/parser.nit:3765 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3768 */
+  /* parser/parser.nit:3766 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3768);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3766);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14387,7 +14356,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 = 3773;
+  fra.me.line = 3771;
   fra.me.meth = LOCATE_parser___ReduceAction65___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -14401,53 +14370,53 @@ void parser___ReduceAction65___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:3775 */
+  /* parser/parser.nit:3773 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3776 */
+  /* parser/parser.nit:3774 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3777 */
+  /* parser/parser.nit:3775 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3778 */
+  /* parser/parser.nit:3776 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3779 */
+  /* parser/parser.nit:3777 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3780 */
+  /* parser/parser.nit:3778 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3781 */
+  /* parser/parser.nit:3779 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3783 */
+  /* parser/parser.nit:3781 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3783);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3781);
   }
-  /* parser/parser.nit:3785 */
+  /* parser/parser.nit:3783 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmodule, ID_parser___parser_nodes___TKwmodule)) /*cast nullable TKwmodule*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3785);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3783);
   }
-  /* parser/parser.nit:3787 */
+  /* parser/parser.nit:3785 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3787);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3785);
   }
-  /* parser/parser.nit:3789 */
+  /* parser/parser.nit:3787 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3789);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3787);
   }
-  /* parser/parser.nit:3790 */
+  /* parser/parser.nit:3788 */
   fra.me.REG[3] = NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:3796 */
+  /* parser/parser.nit:3794 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3797 */
+  /* parser/parser.nit:3795 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3797);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3795);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14462,7 +14431,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 = 3802;
+  fra.me.line = 3800;
   fra.me.meth = LOCATE_parser___ReduceAction66___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -14476,47 +14445,47 @@ void parser___ReduceAction66___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:3804 */
+  /* parser/parser.nit:3802 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3805 */
+  /* parser/parser.nit:3803 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3806 */
+  /* parser/parser.nit:3804 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3807 */
+  /* parser/parser.nit:3805 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3808 */
+  /* parser/parser.nit:3806 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3809 */
+  /* parser/parser.nit:3807 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3810 */
+  /* parser/parser.nit:3808 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3812 */
+  /* parser/parser.nit:3810 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3810);
   }
-  /* parser/parser.nit:3814 */
+  /* parser/parser.nit:3812 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3814);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3812);
   }
-  /* parser/parser.nit:3816 */
+  /* parser/parser.nit:3814 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3816);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3814);
   }
-  /* parser/parser.nit:3817 */
+  /* parser/parser.nit:3815 */
   fra.me.REG[3] = NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:3823 */
+  /* parser/parser.nit:3821 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3824 */
+  /* parser/parser.nit:3822 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3824);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3822);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14531,7 +14500,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 = 3829;
+  fra.me.line = 3827;
   fra.me.meth = LOCATE_parser___ReduceAction67___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -14546,55 +14515,55 @@ void parser___ReduceAction67___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:3831 */
+  /* parser/parser.nit:3829 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3832 */
+  /* parser/parser.nit:3830 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3833 */
+  /* parser/parser.nit:3831 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3834 */
+  /* parser/parser.nit:3832 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3835 */
+  /* parser/parser.nit:3833 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3836 */
+  /* parser/parser.nit:3834 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3837 */
+  /* parser/parser.nit:3835 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3838 */
+  /* parser/parser.nit:3836 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3840 */
+  /* parser/parser.nit:3838 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3840);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3838);
   }
-  /* parser/parser.nit:3842 */
+  /* parser/parser.nit:3840 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3842);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3840);
   }
-  /* parser/parser.nit:3844 */
+  /* parser/parser.nit:3842 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3844);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3842);
   }
-  /* parser/parser.nit:3846 */
+  /* parser/parser.nit:3844 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3846);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3844);
   }
-  /* parser/parser.nit:3847 */
+  /* parser/parser.nit:3845 */
   fra.me.REG[3] = NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:3853 */
+  /* parser/parser.nit:3851 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3854 */
+  /* parser/parser.nit:3852 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3854);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3852);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14609,7 +14578,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 = 3859;
+  fra.me.line = 3857;
   fra.me.meth = LOCATE_parser___ReduceAction68___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -14623,47 +14592,47 @@ void parser___ReduceAction68___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:3861 */
+  /* parser/parser.nit:3859 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3862 */
+  /* parser/parser.nit:3860 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3863 */
+  /* parser/parser.nit:3861 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3864 */
+  /* parser/parser.nit:3862 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3865 */
+  /* parser/parser.nit:3863 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3866 */
+  /* parser/parser.nit:3864 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3867 */
+  /* parser/parser.nit:3865 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3869 */
+  /* parser/parser.nit:3867 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3869);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3867);
   }
-  /* parser/parser.nit:3871 */
+  /* parser/parser.nit:3869 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3871);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3869);
   }
-  /* parser/parser.nit:3873 */
+  /* parser/parser.nit:3871 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3873);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3871);
   }
-  /* parser/parser.nit:3874 */
+  /* parser/parser.nit:3872 */
   fra.me.REG[3] = NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit: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___ReduceAction____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___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14679,7 +14648,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 = 3885;
+  fra.me.line = 3883;
   fra.me.meth = LOCATE_parser___ReduceAction69___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -14691,19 +14660,19 @@ void parser___ReduceAction69___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:3887 */
+  /* parser/parser.nit:3885 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3888 */
+  /* parser/parser.nit:3886 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3889 */
+  /* parser/parser.nit:3887 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3891 */
+  /* parser/parser.nit:3889 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast nullable APropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3891);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3889);
   }
-  /* parser/parser.nit:3892 */
+  /* parser/parser.nit:3890 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -14718,18 +14687,18 @@ void parser___ReduceAction69___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:3893 */
+    /* parser/parser.nit:3891 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:3895 */
+  /* parser/parser.nit:3893 */
   fra.me.REG[4] = NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:3898 */
+  /* parser/parser.nit:3896 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:3899 */
+  /* parser/parser.nit:3897 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3899);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3897);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14744,7 +14713,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 = 3904;
+  fra.me.line = 3902;
   fra.me.meth = LOCATE_parser___ReduceAction70___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14755,17 +14724,17 @@ void parser___ReduceAction70___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:3906 */
+  /* parser/parser.nit:3904 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3907 */
+  /* parser/parser.nit:3905 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3908 */
+  /* parser/parser.nit:3906 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3909 */
+  /* parser/parser.nit:3907 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3909);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3907);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14780,7 +14749,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 = 3914;
+  fra.me.line = 3912;
   fra.me.meth = LOCATE_parser___ReduceAction71___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -14792,27 +14761,27 @@ void parser___ReduceAction71___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:3916 */
+  /* parser/parser.nit:3914 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3917 */
+  /* parser/parser.nit:3915 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3918 */
+  /* parser/parser.nit:3916 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3920 */
+  /* parser/parser.nit:3918 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3920);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3918);
   }
-  /* parser/parser.nit:3921 */
+  /* parser/parser.nit:3919 */
   fra.me.REG[3] = NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:3925 */
+  /* parser/parser.nit:3923 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3926 */
+  /* parser/parser.nit:3924 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3926);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3924);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14827,7 +14796,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 = 3931;
+  fra.me.line = 3929;
   fra.me.meth = LOCATE_parser___ReduceAction73___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -14845,67 +14814,67 @@ void parser___ReduceAction73___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:3933 */
+  /* parser/parser.nit:3931 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3934 */
+  /* parser/parser.nit:3932 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3935 */
+  /* parser/parser.nit:3933 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3936 */
+  /* parser/parser.nit:3934 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3937 */
+  /* parser/parser.nit:3935 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3938 */
+  /* parser/parser.nit:3936 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3939 */
+  /* parser/parser.nit:3937 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3940 */
+  /* parser/parser.nit:3938 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3941 */
+  /* parser/parser.nit:3939 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3942 */
+  /* parser/parser.nit:3940 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3943 */
+  /* parser/parser.nit:3941 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3945 */
+  /* parser/parser.nit:3943 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3945);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3943);
   }
-  /* parser/parser.nit:3947 */
+  /* parser/parser.nit:3945 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3947);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3945);
   }
-  /* parser/parser.nit:3949 */
+  /* parser/parser.nit:3947 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3949);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3947);
   }
-  /* parser/parser.nit:3951 */
+  /* parser/parser.nit:3949 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3951);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3949);
   }
-  /* parser/parser.nit:3953 */
+  /* parser/parser.nit:3951 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3953);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3951);
   }
-  /* parser/parser.nit:3954 */
+  /* parser/parser.nit:3952 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[9], fra.me.REG[10], fra.me.REG[3]);
-  /* parser/parser.nit:3967 */
+  /* parser/parser.nit:3965 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3968 */
+  /* parser/parser.nit:3966 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3968);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3966);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14920,7 +14889,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 = 3973;
+  fra.me.line = 3971;
   fra.me.meth = LOCATE_parser___ReduceAction74___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -14939,75 +14908,75 @@ void parser___ReduceAction74___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:3975 */
+  /* parser/parser.nit:3973 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3976 */
+  /* parser/parser.nit:3974 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3977 */
+  /* parser/parser.nit:3975 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3978 */
+  /* parser/parser.nit:3976 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3979 */
+  /* parser/parser.nit:3977 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3980 */
+  /* parser/parser.nit:3978 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3981 */
+  /* parser/parser.nit:3979 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3982 */
+  /* parser/parser.nit:3980 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3983 */
+  /* parser/parser.nit:3981 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3984 */
+  /* parser/parser.nit:3982 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3985 */
+  /* parser/parser.nit:3983 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3986 */
+  /* parser/parser.nit:3984 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3988 */
+  /* parser/parser.nit:3986 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3986);
+  }
+  /* parser/parser.nit:3988 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3988);
   }
   /* parser/parser.nit:3990 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3990);
   }
   /* parser/parser.nit:3992 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3992);
   }
   /* parser/parser.nit:3994 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3994);
   }
   /* parser/parser.nit:3996 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3996);
-  }
-  /* parser/parser.nit:3998 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3998);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3996);
   }
-  /* parser/parser.nit:3999 */
+  /* parser/parser.nit:3997 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
-  /* parser/parser.nit:4012 */
+  /* parser/parser.nit:4010 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4013 */
+  /* parser/parser.nit:4011 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4013);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4011);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15022,7 +14991,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 = 4018;
+  fra.me.line = 4016;
   fra.me.meth = LOCATE_parser___ReduceAction75___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -15041,78 +15010,78 @@ void parser___ReduceAction75___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:4020 */
+  /* parser/parser.nit:4018 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4021 */
+  /* parser/parser.nit:4019 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4022 */
+  /* parser/parser.nit:4020 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4023 */
+  /* parser/parser.nit:4021 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4024 */
+  /* parser/parser.nit:4022 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4025 */
+  /* parser/parser.nit:4023 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4026 */
+  /* parser/parser.nit:4024 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4027 */
+  /* parser/parser.nit:4025 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4028 */
+  /* parser/parser.nit:4026 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4029 */
+  /* parser/parser.nit:4027 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4030 */
+  /* parser/parser.nit:4028 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4031 */
+  /* parser/parser.nit:4029 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4033 */
+  /* parser/parser.nit:4031 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4033);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4031);
   }
-  /* parser/parser.nit:4035 */
+  /* parser/parser.nit:4033 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4035);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4033);
   }
-  /* parser/parser.nit:4037 */
+  /* parser/parser.nit:4035 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4037);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4035);
   }
-  /* parser/parser.nit:4039 */
+  /* parser/parser.nit:4037 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4039);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4037);
   }
-  /* parser/parser.nit:4041 */
+  /* parser/parser.nit:4039 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4041);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4039);
   }
-  /* parser/parser.nit:4042 */
+  /* parser/parser.nit:4040 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* parser/parser.nit:4044 */
+  /* parser/parser.nit:4042 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4044);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4042);
   }
-  /* parser/parser.nit:4045 */
+  /* parser/parser.nit:4043 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
-  /* parser/parser.nit:4058 */
+  /* parser/parser.nit:4056 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4059 */
+  /* parser/parser.nit:4057 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4059);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4057);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15127,7 +15096,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 = 4064;
+  fra.me.line = 4062;
   fra.me.meth = LOCATE_parser___ReduceAction76___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -15147,86 +15116,86 @@ void parser___ReduceAction76___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:4066 */
+  /* parser/parser.nit:4064 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4067 */
+  /* parser/parser.nit:4065 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4068 */
+  /* parser/parser.nit:4066 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4069 */
+  /* parser/parser.nit:4067 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4070 */
+  /* parser/parser.nit:4068 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4071 */
+  /* parser/parser.nit:4069 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4072 */
+  /* parser/parser.nit:4070 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4073 */
+  /* parser/parser.nit:4071 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4074 */
+  /* parser/parser.nit:4072 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4075 */
+  /* parser/parser.nit:4073 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4076 */
+  /* parser/parser.nit:4074 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4077 */
+  /* parser/parser.nit:4075 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4078 */
+  /* parser/parser.nit:4076 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4080 */
+  /* parser/parser.nit:4078 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4078);
+  }
+  /* parser/parser.nit:4080 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4080);
   }
   /* parser/parser.nit:4082 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4082);
   }
   /* parser/parser.nit:4084 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4084);
   }
   /* parser/parser.nit:4086 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4086);
   }
   /* parser/parser.nit:4088 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4088);
-  }
-  /* parser/parser.nit:4090 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4090);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4088);
   }
-  /* parser/parser.nit:4091 */
+  /* parser/parser.nit:4089 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* parser/parser.nit:4093 */
+  /* parser/parser.nit:4091 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4093);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4091);
   }
-  /* parser/parser.nit:4094 */
+  /* parser/parser.nit:4092 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4107 */
+  /* parser/parser.nit:4105 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4108 */
+  /* parser/parser.nit:4106 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4108);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4106);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15241,7 +15210,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 = 4113;
+  fra.me.line = 4111;
   fra.me.meth = LOCATE_parser___ReduceAction77___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -15261,82 +15230,82 @@ void parser___ReduceAction77___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:4115 */
+  /* parser/parser.nit:4113 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4116 */
+  /* parser/parser.nit:4114 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4117 */
+  /* parser/parser.nit:4115 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4118 */
+  /* parser/parser.nit:4116 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4119 */
+  /* parser/parser.nit:4117 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4120 */
+  /* parser/parser.nit:4118 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4121 */
+  /* parser/parser.nit:4119 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4122 */
+  /* parser/parser.nit:4120 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4123 */
+  /* parser/parser.nit:4121 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4124 */
+  /* parser/parser.nit:4122 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4125 */
+  /* parser/parser.nit:4123 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4126 */
+  /* parser/parser.nit:4124 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4128 */
+  /* parser/parser.nit:4126 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4128);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4126);
   }
-  /* parser/parser.nit:4130 */
+  /* parser/parser.nit:4128 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4130);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4128);
   }
-  /* parser/parser.nit:4132 */
+  /* parser/parser.nit:4130 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4130);
   }
-  /* parser/parser.nit:4134 */
+  /* parser/parser.nit:4132 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4132);
   }
-  /* parser/parser.nit:4135 */
+  /* parser/parser.nit:4133 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4137 */
+  /* parser/parser.nit:4135 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4137);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4135);
   }
-  /* parser/parser.nit:4138 */
+  /* parser/parser.nit:4136 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:4139 */
+  /* parser/parser.nit:4137 */
   fra.me.REG[12] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[12], NIT_NULL);
-  /* parser/parser.nit:4146 */
+  /* parser/parser.nit:4144 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4146);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4144);
   }
-  /* parser/parser.nit:4147 */
+  /* parser/parser.nit:4145 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], fra.me.REG[12], NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
-  /* parser/parser.nit:4160 */
+  /* parser/parser.nit:4158 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4161 */
+  /* parser/parser.nit:4159 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4161);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4159);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15351,7 +15320,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 = 4166;
+  fra.me.line = 4164;
   fra.me.meth = LOCATE_parser___ReduceAction78___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -15372,90 +15341,90 @@ void parser___ReduceAction78___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:4168 */
+  /* parser/parser.nit:4166 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4169 */
+  /* parser/parser.nit:4167 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4170 */
+  /* parser/parser.nit:4168 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4171 */
+  /* parser/parser.nit:4169 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4172 */
+  /* parser/parser.nit:4170 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4173 */
+  /* parser/parser.nit:4171 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4174 */
+  /* parser/parser.nit:4172 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4175 */
+  /* parser/parser.nit:4173 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4176 */
+  /* parser/parser.nit:4174 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4177 */
+  /* parser/parser.nit:4175 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4178 */
+  /* parser/parser.nit:4176 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4179 */
+  /* parser/parser.nit:4177 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4180 */
+  /* parser/parser.nit:4178 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4182 */
+  /* parser/parser.nit:4180 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4182);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4180);
   }
-  /* parser/parser.nit:4184 */
+  /* parser/parser.nit:4182 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4184);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4182);
   }
-  /* parser/parser.nit:4186 */
+  /* parser/parser.nit:4184 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4186);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4184);
   }
-  /* parser/parser.nit:4188 */
+  /* parser/parser.nit:4186 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4188);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4186);
   }
-  /* parser/parser.nit:4190 */
+  /* parser/parser.nit:4188 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4190);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4188);
   }
-  /* parser/parser.nit:4191 */
+  /* parser/parser.nit:4189 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4193 */
+  /* parser/parser.nit:4191 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4193);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4191);
   }
-  /* parser/parser.nit:4194 */
+  /* parser/parser.nit:4192 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:4195 */
+  /* parser/parser.nit:4193 */
   fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
-  /* parser/parser.nit:4202 */
+  /* parser/parser.nit:4200 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4202);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4200);
   }
-  /* parser/parser.nit:4203 */
+  /* parser/parser.nit:4201 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], fra.me.REG[13], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4216 */
+  /* parser/parser.nit:4214 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4217 */
+  /* parser/parser.nit:4215 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4217);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4215);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15470,7 +15439,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 = 4222;
+  fra.me.line = 4220;
   fra.me.meth = LOCATE_parser___ReduceAction79___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -15490,93 +15459,93 @@ void parser___ReduceAction79___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:4224 */
+  /* parser/parser.nit:4222 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4225 */
+  /* parser/parser.nit:4223 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4226 */
+  /* parser/parser.nit:4224 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4227 */
+  /* parser/parser.nit:4225 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4228 */
+  /* parser/parser.nit:4226 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4229 */
+  /* parser/parser.nit:4227 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4230 */
+  /* parser/parser.nit:4228 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4231 */
+  /* parser/parser.nit:4229 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4232 */
+  /* parser/parser.nit:4230 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4233 */
+  /* parser/parser.nit:4231 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4234 */
+  /* parser/parser.nit:4232 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4235 */
+  /* parser/parser.nit:4233 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4236 */
+  /* parser/parser.nit:4234 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4238 */
+  /* parser/parser.nit:4236 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4238);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4236);
   }
-  /* parser/parser.nit:4240 */
+  /* parser/parser.nit:4238 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4240);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4238);
   }
-  /* parser/parser.nit:4242 */
+  /* parser/parser.nit:4240 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4242);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4240);
   }
-  /* parser/parser.nit:4244 */
+  /* parser/parser.nit:4242 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4244);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4242);
   }
-  /* parser/parser.nit:4246 */
+  /* parser/parser.nit:4244 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4246);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4244);
   }
-  /* parser/parser.nit:4247 */
+  /* parser/parser.nit:4245 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:4248 */
+  /* parser/parser.nit:4246 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4250 */
+  /* parser/parser.nit:4248 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4250);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4248);
   }
-  /* parser/parser.nit:4251 */
+  /* parser/parser.nit:4249 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:4252 */
+  /* parser/parser.nit:4250 */
   fra.me.REG[5] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:4259 */
+  /* parser/parser.nit:4257 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4259);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4257);
   }
-  /* parser/parser.nit:4260 */
+  /* parser/parser.nit:4258 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[5], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4273 */
+  /* parser/parser.nit:4271 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4274 */
+  /* parser/parser.nit:4272 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4274);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4272);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15591,7 +15560,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 = 4279;
+  fra.me.line = 4277;
   fra.me.meth = LOCATE_parser___ReduceAction80___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -15612,101 +15581,101 @@ void parser___ReduceAction80___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:4281 */
+  /* parser/parser.nit:4279 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4282 */
+  /* parser/parser.nit:4280 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4283 */
+  /* parser/parser.nit:4281 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4284 */
+  /* parser/parser.nit:4282 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4285 */
+  /* parser/parser.nit:4283 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4286 */
+  /* parser/parser.nit:4284 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4287 */
+  /* parser/parser.nit:4285 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4288 */
+  /* parser/parser.nit:4286 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4289 */
+  /* parser/parser.nit:4287 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4290 */
+  /* parser/parser.nit:4288 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4291 */
+  /* parser/parser.nit:4289 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4292 */
+  /* parser/parser.nit:4290 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4293 */
+  /* parser/parser.nit:4291 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4294 */
+  /* parser/parser.nit:4292 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4296 */
+  /* parser/parser.nit:4294 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4294);
+  }
+  /* parser/parser.nit:4296 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4296);
   }
   /* parser/parser.nit:4298 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4298);
   }
   /* parser/parser.nit:4300 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4300);
   }
   /* parser/parser.nit:4302 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4302);
   }
   /* parser/parser.nit:4304 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4304);
-  }
-  /* parser/parser.nit:4306 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4306);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4304);
   }
-  /* parser/parser.nit:4307 */
+  /* parser/parser.nit:4305 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* parser/parser.nit:4308 */
+  /* parser/parser.nit:4306 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4310 */
+  /* parser/parser.nit:4308 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4310);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4308);
   }
-  /* parser/parser.nit:4311 */
+  /* parser/parser.nit:4309 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:4312 */
+  /* parser/parser.nit:4310 */
   fra.me.REG[5] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:4319 */
+  /* parser/parser.nit:4317 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4319);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4317);
   }
-  /* parser/parser.nit:4320 */
+  /* parser/parser.nit:4318 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[5], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:4333 */
+  /* parser/parser.nit:4331 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4334 */
+  /* parser/parser.nit:4332 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4334);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4332);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15721,7 +15690,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 = 4339;
+  fra.me.line = 4337;
   fra.me.meth = LOCATE_parser___ReduceAction81___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -15740,75 +15709,75 @@ void parser___ReduceAction81___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:4341 */
+  /* parser/parser.nit:4339 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4342 */
+  /* parser/parser.nit:4340 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4343 */
+  /* parser/parser.nit:4341 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4344 */
+  /* parser/parser.nit:4342 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4345 */
+  /* parser/parser.nit:4343 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4346 */
+  /* parser/parser.nit:4344 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4347 */
+  /* parser/parser.nit:4345 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4348 */
+  /* parser/parser.nit:4346 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4349 */
+  /* parser/parser.nit:4347 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4350 */
+  /* parser/parser.nit:4348 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4351 */
+  /* parser/parser.nit:4349 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4352 */
+  /* parser/parser.nit:4350 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4354 */
+  /* parser/parser.nit:4352 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4352);
+  }
+  /* parser/parser.nit:4354 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4354);
   }
   /* parser/parser.nit:4356 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4356);
   }
   /* parser/parser.nit:4358 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4358);
   }
   /* parser/parser.nit:4360 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4360);
   }
   /* parser/parser.nit:4362 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4362);
-  }
-  /* parser/parser.nit:4364 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4364);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4362);
   }
-  /* parser/parser.nit:4365 */
+  /* parser/parser.nit:4363 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
-  /* parser/parser.nit:4378 */
+  /* parser/parser.nit:4376 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4379 */
+  /* parser/parser.nit:4377 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4379);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4377);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15823,7 +15792,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 = 4384;
+  fra.me.line = 4382;
   fra.me.meth = LOCATE_parser___ReduceAction82___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -15843,83 +15812,83 @@ void parser___ReduceAction82___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:4386 */
+  /* parser/parser.nit:4384 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4387 */
+  /* parser/parser.nit:4385 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4388 */
+  /* parser/parser.nit:4386 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4389 */
+  /* parser/parser.nit:4387 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4390 */
+  /* parser/parser.nit:4388 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4391 */
+  /* parser/parser.nit:4389 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4392 */
+  /* parser/parser.nit:4390 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4393 */
+  /* parser/parser.nit:4391 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4394 */
+  /* parser/parser.nit:4392 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4395 */
+  /* parser/parser.nit:4393 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4396 */
+  /* parser/parser.nit:4394 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4397 */
+  /* parser/parser.nit:4395 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4398 */
+  /* parser/parser.nit:4396 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4400 */
+  /* parser/parser.nit:4398 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4398);
+  }
+  /* parser/parser.nit:4400 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4400);
   }
   /* parser/parser.nit:4402 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4402);
   }
   /* parser/parser.nit:4404 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4404);
   }
   /* parser/parser.nit:4406 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4406);
   }
   /* parser/parser.nit:4408 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4408);
   }
   /* parser/parser.nit:4410 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4410);
-  }
-  /* parser/parser.nit:4412 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4412);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4410);
   }
-  /* parser/parser.nit:4413 */
+  /* parser/parser.nit:4411 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4426 */
+  /* parser/parser.nit:4424 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4427 */
+  /* parser/parser.nit:4425 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4427);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4425);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15934,7 +15903,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 = 4432;
+  fra.me.line = 4430;
   fra.me.meth = LOCATE_parser___ReduceAction83___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -15954,86 +15923,86 @@ void parser___ReduceAction83___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:4434 */
+  /* parser/parser.nit:4432 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4435 */
+  /* parser/parser.nit:4433 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4436 */
+  /* parser/parser.nit:4434 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4437 */
+  /* parser/parser.nit:4435 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4438 */
+  /* parser/parser.nit:4436 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4439 */
+  /* parser/parser.nit:4437 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4440 */
+  /* parser/parser.nit:4438 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4441 */
+  /* parser/parser.nit:4439 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4442 */
+  /* parser/parser.nit:4440 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4443 */
+  /* parser/parser.nit:4441 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4444 */
+  /* parser/parser.nit:4442 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4445 */
+  /* parser/parser.nit:4443 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4446 */
+  /* parser/parser.nit:4444 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4448 */
+  /* parser/parser.nit:4446 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4448);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4446);
   }
-  /* parser/parser.nit:4450 */
+  /* parser/parser.nit:4448 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4450);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4448);
   }
-  /* parser/parser.nit:4452 */
+  /* parser/parser.nit:4450 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4452);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4450);
   }
-  /* parser/parser.nit:4454 */
+  /* parser/parser.nit:4452 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4454);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4452);
   }
-  /* parser/parser.nit:4456 */
+  /* parser/parser.nit:4454 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4456);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4454);
   }
-  /* parser/parser.nit:4457 */
+  /* parser/parser.nit:4455 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:4459 */
+  /* parser/parser.nit:4457 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4459);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4457);
   }
-  /* parser/parser.nit:4461 */
+  /* parser/parser.nit:4459 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4461);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4459);
   }
-  /* parser/parser.nit:4462 */
+  /* parser/parser.nit:4460 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4475 */
+  /* parser/parser.nit:4473 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4476 */
+  /* parser/parser.nit:4474 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4476);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4474);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16048,7 +16017,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 = 4481;
+  fra.me.line = 4479;
   fra.me.meth = LOCATE_parser___ReduceAction84___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -16069,94 +16038,94 @@ void parser___ReduceAction84___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:4483 */
+  /* parser/parser.nit:4481 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4484 */
+  /* parser/parser.nit:4482 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4485 */
+  /* parser/parser.nit:4483 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4486 */
+  /* parser/parser.nit:4484 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4487 */
+  /* parser/parser.nit:4485 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4488 */
+  /* parser/parser.nit:4486 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4489 */
+  /* parser/parser.nit:4487 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4490 */
+  /* parser/parser.nit:4488 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4491 */
+  /* parser/parser.nit:4489 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4492 */
+  /* parser/parser.nit:4490 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4493 */
+  /* parser/parser.nit:4491 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4494 */
+  /* parser/parser.nit:4492 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4495 */
+  /* parser/parser.nit:4493 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4496 */
+  /* parser/parser.nit:4494 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4498 */
+  /* parser/parser.nit:4496 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4496);
+  }
+  /* parser/parser.nit:4498 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4498);
   }
   /* parser/parser.nit:4500 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4500);
   }
   /* parser/parser.nit:4502 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4502);
   }
   /* parser/parser.nit:4504 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4504);
   }
   /* parser/parser.nit:4506 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4506);
-  }
-  /* parser/parser.nit:4508 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4508);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4506);
   }
-  /* parser/parser.nit:4509 */
+  /* parser/parser.nit:4507 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* parser/parser.nit:4511 */
+  /* parser/parser.nit:4509 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4511);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4509);
   }
-  /* parser/parser.nit:4513 */
+  /* parser/parser.nit:4511 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4513);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4511);
   }
-  /* parser/parser.nit:4514 */
+  /* parser/parser.nit:4512 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:4527 */
+  /* parser/parser.nit:4525 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4528 */
+  /* parser/parser.nit:4526 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4528);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4526);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16171,7 +16140,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 = 4533;
+  fra.me.line = 4531;
   fra.me.meth = LOCATE_parser___ReduceAction85___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -16192,90 +16161,90 @@ void parser___ReduceAction85___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:4535 */
+  /* parser/parser.nit:4533 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4536 */
+  /* parser/parser.nit:4534 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4537 */
+  /* parser/parser.nit:4535 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4538 */
+  /* parser/parser.nit:4536 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4539 */
+  /* parser/parser.nit:4537 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4540 */
+  /* parser/parser.nit:4538 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4541 */
+  /* parser/parser.nit:4539 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4542 */
+  /* parser/parser.nit:4540 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4543 */
+  /* parser/parser.nit:4541 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4544 */
+  /* parser/parser.nit:4542 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4545 */
+  /* parser/parser.nit:4543 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4546 */
+  /* parser/parser.nit:4544 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4547 */
+  /* parser/parser.nit:4545 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4549 */
+  /* parser/parser.nit:4547 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4549);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4547);
   }
-  /* parser/parser.nit:4551 */
+  /* parser/parser.nit:4549 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4551);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4549);
   }
-  /* parser/parser.nit:4553 */
+  /* parser/parser.nit:4551 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4553);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4551);
   }
-  /* parser/parser.nit:4555 */
+  /* parser/parser.nit:4553 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4555);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4553);
   }
-  /* parser/parser.nit:4556 */
+  /* parser/parser.nit:4554 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4558 */
+  /* parser/parser.nit:4556 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4558);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4556);
   }
-  /* parser/parser.nit:4559 */
+  /* parser/parser.nit:4557 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:4560 */
+  /* parser/parser.nit:4558 */
   fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
-  /* parser/parser.nit:4567 */
+  /* parser/parser.nit:4565 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4567);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4565);
   }
-  /* parser/parser.nit:4569 */
+  /* parser/parser.nit:4567 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4569);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4567);
   }
-  /* parser/parser.nit:4570 */
+  /* parser/parser.nit:4568 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[13], fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4583 */
+  /* parser/parser.nit:4581 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4584 */
+  /* parser/parser.nit:4582 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4584);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4582);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16290,7 +16259,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 = 4589;
+  fra.me.line = 4587;
   fra.me.meth = LOCATE_parser___ReduceAction86___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -16312,98 +16281,98 @@ void parser___ReduceAction86___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:4591 */
+  /* parser/parser.nit:4589 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4592 */
+  /* parser/parser.nit:4590 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4593 */
+  /* parser/parser.nit:4591 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4594 */
+  /* parser/parser.nit:4592 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4595 */
+  /* parser/parser.nit:4593 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4596 */
+  /* parser/parser.nit:4594 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4597 */
+  /* parser/parser.nit:4595 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4598 */
+  /* parser/parser.nit:4596 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4599 */
+  /* parser/parser.nit:4597 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4600 */
+  /* parser/parser.nit:4598 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4601 */
+  /* parser/parser.nit:4599 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4602 */
+  /* parser/parser.nit:4600 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4603 */
+  /* parser/parser.nit:4601 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4604 */
+  /* parser/parser.nit:4602 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4606 */
+  /* parser/parser.nit:4604 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4606);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4604);
   }
-  /* parser/parser.nit:4608 */
+  /* parser/parser.nit:4606 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4608);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4606);
   }
-  /* parser/parser.nit:4610 */
+  /* parser/parser.nit:4608 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4610);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4608);
   }
-  /* parser/parser.nit:4612 */
+  /* parser/parser.nit:4610 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4612);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4610);
   }
-  /* parser/parser.nit:4614 */
+  /* parser/parser.nit:4612 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4614);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4612);
   }
-  /* parser/parser.nit:4615 */
+  /* parser/parser.nit:4613 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4617 */
+  /* parser/parser.nit:4615 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4617);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4615);
   }
-  /* parser/parser.nit:4618 */
+  /* parser/parser.nit:4616 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:4619 */
+  /* parser/parser.nit:4617 */
   fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
-  /* parser/parser.nit:4626 */
+  /* parser/parser.nit:4624 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4626);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4624);
   }
-  /* parser/parser.nit:4628 */
+  /* parser/parser.nit:4626 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4628);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4626);
   }
-  /* parser/parser.nit:4629 */
+  /* parser/parser.nit:4627 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[14], fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:4642 */
+  /* parser/parser.nit:4640 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4643 */
+  /* parser/parser.nit:4641 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4643);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4641);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16418,7 +16387,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 = 4648;
+  fra.me.line = 4646;
   fra.me.meth = LOCATE_parser___ReduceAction87___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -16439,101 +16408,101 @@ void parser___ReduceAction87___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:4650 */
+  /* parser/parser.nit:4648 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4651 */
+  /* parser/parser.nit:4649 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4652 */
+  /* parser/parser.nit:4650 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4653 */
+  /* parser/parser.nit:4651 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4654 */
+  /* parser/parser.nit:4652 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4655 */
+  /* parser/parser.nit:4653 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4656 */
+  /* parser/parser.nit:4654 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4657 */
+  /* parser/parser.nit:4655 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4658 */
+  /* parser/parser.nit:4656 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4659 */
+  /* parser/parser.nit:4657 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4660 */
+  /* parser/parser.nit:4658 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4661 */
+  /* parser/parser.nit:4659 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4662 */
+  /* parser/parser.nit:4660 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4663 */
+  /* parser/parser.nit:4661 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4665 */
+  /* parser/parser.nit:4663 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4665);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4663);
   }
-  /* parser/parser.nit:4667 */
+  /* parser/parser.nit:4665 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4667);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4665);
   }
-  /* parser/parser.nit:4669 */
+  /* parser/parser.nit:4667 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4669);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4667);
   }
-  /* parser/parser.nit:4671 */
+  /* parser/parser.nit:4669 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4671);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4669);
   }
-  /* parser/parser.nit:4673 */
+  /* parser/parser.nit:4671 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4673);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4671);
   }
-  /* parser/parser.nit:4674 */
+  /* parser/parser.nit:4672 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
   fra.me.REG[11] = fra.me.REG[6];
-  /* parser/parser.nit:4675 */
+  /* parser/parser.nit:4673 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4677 */
+  /* parser/parser.nit:4675 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4677);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4675);
   }
-  /* parser/parser.nit:4678 */
+  /* parser/parser.nit:4676 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:4679 */
+  /* parser/parser.nit:4677 */
   fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:4686 */
+  /* parser/parser.nit:4684 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4686);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4684);
   }
-  /* parser/parser.nit:4688 */
+  /* parser/parser.nit:4686 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4688);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4686);
   }
-  /* parser/parser.nit:4689 */
+  /* parser/parser.nit:4687 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:4702 */
+  /* parser/parser.nit:4700 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4703 */
+  /* parser/parser.nit:4701 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4703);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4701);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16548,7 +16517,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 = 4708;
+  fra.me.line = 4706;
   fra.me.meth = LOCATE_parser___ReduceAction88___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -16570,109 +16539,109 @@ void parser___ReduceAction88___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:4710 */
+  /* parser/parser.nit:4708 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4711 */
+  /* parser/parser.nit:4709 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4712 */
+  /* parser/parser.nit:4710 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4713 */
+  /* parser/parser.nit:4711 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4714 */
+  /* parser/parser.nit:4712 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4715 */
+  /* parser/parser.nit:4713 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4716 */
+  /* parser/parser.nit:4714 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4717 */
+  /* parser/parser.nit:4715 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4718 */
+  /* parser/parser.nit:4716 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4719 */
+  /* parser/parser.nit:4717 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4720 */
+  /* parser/parser.nit:4718 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4721 */
+  /* parser/parser.nit:4719 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4722 */
+  /* parser/parser.nit:4720 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4723 */
+  /* parser/parser.nit:4721 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4724 */
+  /* parser/parser.nit:4722 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4726 */
+  /* parser/parser.nit:4724 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4724);
+  }
+  /* parser/parser.nit:4726 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4726);
   }
   /* parser/parser.nit:4728 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4728);
   }
   /* parser/parser.nit:4730 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4730);
   }
   /* parser/parser.nit:4732 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4732);
   }
   /* parser/parser.nit:4734 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
-  }
-  /* parser/parser.nit:4736 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4736);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
   }
-  /* parser/parser.nit:4737 */
+  /* parser/parser.nit:4735 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
   fra.me.REG[12] = fra.me.REG[6];
-  /* parser/parser.nit:4738 */
+  /* parser/parser.nit:4736 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4740 */
+  /* parser/parser.nit:4738 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4740);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4738);
   }
-  /* parser/parser.nit:4741 */
+  /* parser/parser.nit:4739 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:4742 */
+  /* parser/parser.nit:4740 */
   fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:4749 */
+  /* parser/parser.nit:4747 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4749);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4747);
   }
-  /* parser/parser.nit:4751 */
+  /* parser/parser.nit:4749 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4751);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4749);
   }
-  /* parser/parser.nit:4752 */
+  /* parser/parser.nit:4750 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], fra.me.REG[4], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:4765 */
+  /* parser/parser.nit:4763 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4766 */
+  /* parser/parser.nit:4764 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4766);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4764);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16687,7 +16656,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 = 4771;
+  fra.me.line = 4769;
   fra.me.meth = LOCATE_parser___ReduceAction89___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -16706,78 +16675,78 @@ void parser___ReduceAction89___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:4773 */
+  /* parser/parser.nit:4771 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4774 */
+  /* parser/parser.nit:4772 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4775 */
+  /* parser/parser.nit:4773 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4776 */
+  /* parser/parser.nit:4774 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4777 */
+  /* parser/parser.nit:4775 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4778 */
+  /* parser/parser.nit:4776 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4779 */
+  /* parser/parser.nit:4777 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4780 */
+  /* parser/parser.nit:4778 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4781 */
+  /* parser/parser.nit:4779 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4782 */
+  /* parser/parser.nit:4780 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4783 */
+  /* parser/parser.nit:4781 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4784 */
+  /* parser/parser.nit:4782 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4786 */
+  /* parser/parser.nit:4784 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4786);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4784);
   }
-  /* parser/parser.nit:4788 */
+  /* parser/parser.nit:4786 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4788);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4786);
   }
-  /* parser/parser.nit:4790 */
+  /* parser/parser.nit:4788 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4790);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4788);
   }
-  /* parser/parser.nit:4792 */
+  /* parser/parser.nit:4790 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4792);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4790);
   }
-  /* parser/parser.nit:4794 */
+  /* parser/parser.nit:4792 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4794);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4792);
   }
-  /* parser/parser.nit:4795 */
+  /* parser/parser.nit:4793 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* parser/parser.nit:4797 */
+  /* parser/parser.nit:4795 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4797);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4795);
   }
-  /* parser/parser.nit:4798 */
+  /* parser/parser.nit:4796 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
-  /* parser/parser.nit:4811 */
+  /* parser/parser.nit:4809 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4812 */
+  /* parser/parser.nit:4810 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4812);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4810);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16792,7 +16761,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 = 4817;
+  fra.me.line = 4815;
   fra.me.meth = LOCATE_parser___ReduceAction90___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -16812,86 +16781,86 @@ void parser___ReduceAction90___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:4819 */
+  /* parser/parser.nit:4817 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4820 */
+  /* parser/parser.nit:4818 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4821 */
+  /* parser/parser.nit:4819 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4822 */
+  /* parser/parser.nit:4820 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4823 */
+  /* parser/parser.nit:4821 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4824 */
+  /* parser/parser.nit:4822 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4825 */
+  /* parser/parser.nit:4823 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4826 */
+  /* parser/parser.nit:4824 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4827 */
+  /* parser/parser.nit:4825 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4828 */
+  /* parser/parser.nit:4826 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4829 */
+  /* parser/parser.nit:4827 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4830 */
+  /* parser/parser.nit:4828 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4831 */
+  /* parser/parser.nit:4829 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4833 */
+  /* parser/parser.nit:4831 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4831);
+  }
+  /* parser/parser.nit:4833 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4833);
   }
   /* parser/parser.nit:4835 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4835);
   }
   /* parser/parser.nit:4837 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4837);
   }
   /* parser/parser.nit:4839 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4839);
   }
   /* parser/parser.nit:4841 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4841);
-  }
-  /* parser/parser.nit:4843 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4843);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4841);
   }
-  /* parser/parser.nit:4844 */
+  /* parser/parser.nit:4842 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* parser/parser.nit:4846 */
+  /* parser/parser.nit:4844 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4846);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4844);
   }
-  /* parser/parser.nit:4847 */
+  /* parser/parser.nit:4845 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4860 */
+  /* parser/parser.nit:4858 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4861 */
+  /* parser/parser.nit:4859 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4861);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4859);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16906,7 +16875,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 = 4866;
+  fra.me.line = 4864;
   fra.me.meth = LOCATE_parser___ReduceAction91___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -16926,89 +16895,89 @@ void parser___ReduceAction91___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:4868 */
+  /* parser/parser.nit:4866 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4869 */
+  /* parser/parser.nit:4867 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4870 */
+  /* parser/parser.nit:4868 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4871 */
+  /* parser/parser.nit:4869 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4872 */
+  /* parser/parser.nit:4870 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4873 */
+  /* parser/parser.nit:4871 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4874 */
+  /* parser/parser.nit:4872 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4875 */
+  /* parser/parser.nit:4873 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4876 */
+  /* parser/parser.nit:4874 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4877 */
+  /* parser/parser.nit:4875 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4878 */
+  /* parser/parser.nit:4876 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4879 */
+  /* parser/parser.nit:4877 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4880 */
+  /* parser/parser.nit:4878 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4882 */
+  /* parser/parser.nit:4880 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4882);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4880);
   }
-  /* parser/parser.nit:4884 */
+  /* parser/parser.nit:4882 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4884);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4882);
   }
-  /* parser/parser.nit:4886 */
+  /* parser/parser.nit:4884 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4886);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4884);
   }
-  /* parser/parser.nit:4888 */
+  /* parser/parser.nit:4886 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4888);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4886);
   }
-  /* parser/parser.nit:4890 */
+  /* parser/parser.nit:4888 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4890);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4888);
   }
-  /* parser/parser.nit:4891 */
+  /* parser/parser.nit:4889 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:4893 */
+  /* parser/parser.nit:4891 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4893);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4891);
   }
-  /* parser/parser.nit:4894 */
+  /* parser/parser.nit:4892 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* parser/parser.nit:4896 */
+  /* parser/parser.nit:4894 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4896);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4894);
   }
-  /* parser/parser.nit:4897 */
+  /* parser/parser.nit:4895 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:4910 */
+  /* parser/parser.nit:4908 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4911 */
+  /* parser/parser.nit:4909 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4911);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4909);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17023,7 +16992,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 = 4916;
+  fra.me.line = 4914;
   fra.me.meth = LOCATE_parser___ReduceAction92___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -17044,97 +17013,97 @@ void parser___ReduceAction92___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:4918 */
+  /* parser/parser.nit:4916 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4919 */
+  /* parser/parser.nit:4917 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4920 */
+  /* parser/parser.nit:4918 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4921 */
+  /* parser/parser.nit:4919 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4922 */
+  /* parser/parser.nit:4920 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4923 */
+  /* parser/parser.nit:4921 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4924 */
+  /* parser/parser.nit:4922 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4925 */
+  /* parser/parser.nit:4923 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4926 */
+  /* parser/parser.nit:4924 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4927 */
+  /* parser/parser.nit:4925 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4928 */
+  /* parser/parser.nit:4926 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4929 */
+  /* parser/parser.nit:4927 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4930 */
+  /* parser/parser.nit:4928 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4931 */
+  /* parser/parser.nit:4929 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4933 */
+  /* parser/parser.nit:4931 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4931);
+  }
+  /* parser/parser.nit:4933 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4933);
   }
   /* parser/parser.nit:4935 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4935);
   }
   /* parser/parser.nit:4937 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4937);
   }
   /* parser/parser.nit:4939 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4939);
   }
   /* parser/parser.nit:4941 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4941);
-  }
-  /* parser/parser.nit:4943 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4943);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4941);
   }
-  /* parser/parser.nit:4944 */
+  /* parser/parser.nit:4942 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* parser/parser.nit:4946 */
+  /* parser/parser.nit:4944 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4946);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4944);
   }
-  /* parser/parser.nit:4947 */
+  /* parser/parser.nit:4945 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:4949 */
+  /* parser/parser.nit:4947 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4949);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4947);
   }
-  /* parser/parser.nit:4950 */
+  /* parser/parser.nit:4948 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:4963 */
+  /* parser/parser.nit:4961 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4964 */
+  /* parser/parser.nit:4962 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4964);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4962);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17149,7 +17118,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 = 4969;
+  fra.me.line = 4967;
   fra.me.meth = LOCATE_parser___ReduceAction93___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -17170,93 +17139,93 @@ void parser___ReduceAction93___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:4971 */
+  /* parser/parser.nit:4969 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4972 */
+  /* parser/parser.nit:4970 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4973 */
+  /* parser/parser.nit:4971 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4974 */
+  /* parser/parser.nit:4972 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4975 */
+  /* parser/parser.nit:4973 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4976 */
+  /* parser/parser.nit:4974 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4977 */
+  /* parser/parser.nit:4975 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4978 */
+  /* parser/parser.nit:4976 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4979 */
+  /* parser/parser.nit:4977 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4980 */
+  /* parser/parser.nit:4978 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4981 */
+  /* parser/parser.nit:4979 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4982 */
+  /* parser/parser.nit:4980 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4983 */
+  /* parser/parser.nit:4981 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4985 */
+  /* parser/parser.nit:4983 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4985);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4983);
   }
-  /* parser/parser.nit:4987 */
+  /* parser/parser.nit:4985 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4985);
   }
-  /* parser/parser.nit:4989 */
+  /* parser/parser.nit:4987 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4989);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4987);
   }
-  /* parser/parser.nit:4991 */
+  /* parser/parser.nit:4989 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4991);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4989);
   }
-  /* parser/parser.nit:4992 */
+  /* parser/parser.nit:4990 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4994 */
+  /* parser/parser.nit:4992 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4994);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4992);
   }
-  /* parser/parser.nit:4995 */
+  /* parser/parser.nit:4993 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:4996 */
+  /* parser/parser.nit:4994 */
   fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
-  /* parser/parser.nit:5003 */
+  /* parser/parser.nit:5001 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5003);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5001);
   }
-  /* parser/parser.nit:5004 */
+  /* parser/parser.nit:5002 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* parser/parser.nit:5006 */
+  /* parser/parser.nit:5004 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5006);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5004);
   }
-  /* parser/parser.nit:5007 */
+  /* parser/parser.nit:5005 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[13], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:5020 */
+  /* parser/parser.nit:5018 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5021 */
+  /* parser/parser.nit:5019 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5021);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5019);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17271,7 +17240,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 = 5026;
+  fra.me.line = 5024;
   fra.me.meth = LOCATE_parser___ReduceAction94___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -17293,101 +17262,101 @@ void parser___ReduceAction94___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5028 */
+  /* parser/parser.nit:5026 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5029 */
+  /* parser/parser.nit:5027 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5030 */
+  /* parser/parser.nit:5028 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5031 */
+  /* parser/parser.nit:5029 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5032 */
+  /* parser/parser.nit:5030 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5033 */
+  /* parser/parser.nit:5031 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5034 */
+  /* parser/parser.nit:5032 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5035 */
+  /* parser/parser.nit:5033 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5036 */
+  /* parser/parser.nit:5034 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5037 */
+  /* parser/parser.nit:5035 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5038 */
+  /* parser/parser.nit:5036 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5039 */
+  /* parser/parser.nit:5037 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5040 */
+  /* parser/parser.nit:5038 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5041 */
+  /* parser/parser.nit:5039 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5043 */
+  /* parser/parser.nit:5041 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5043);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5041);
   }
-  /* parser/parser.nit:5045 */
+  /* parser/parser.nit:5043 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5045);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5043);
   }
-  /* parser/parser.nit:5047 */
+  /* parser/parser.nit:5045 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5047);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5045);
   }
-  /* parser/parser.nit:5049 */
+  /* parser/parser.nit:5047 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5049);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5047);
   }
-  /* parser/parser.nit:5051 */
+  /* parser/parser.nit:5049 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5051);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5049);
   }
-  /* parser/parser.nit:5052 */
+  /* parser/parser.nit:5050 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5054 */
+  /* parser/parser.nit:5052 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5054);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5052);
   }
-  /* parser/parser.nit:5055 */
+  /* parser/parser.nit:5053 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:5056 */
+  /* parser/parser.nit:5054 */
   fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
-  /* parser/parser.nit:5063 */
+  /* parser/parser.nit:5061 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5063);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5061);
   }
-  /* parser/parser.nit:5064 */
+  /* parser/parser.nit:5062 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5066 */
+  /* parser/parser.nit:5064 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5066);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5064);
   }
-  /* parser/parser.nit:5067 */
+  /* parser/parser.nit:5065 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[14], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5080 */
+  /* parser/parser.nit:5078 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5081 */
+  /* parser/parser.nit:5079 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5081);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5079);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17402,7 +17371,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 = 5086;
+  fra.me.line = 5084;
   fra.me.meth = LOCATE_parser___ReduceAction95___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -17423,104 +17392,104 @@ void parser___ReduceAction95___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:5088 */
+  /* parser/parser.nit:5086 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5089 */
+  /* parser/parser.nit:5087 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5090 */
+  /* parser/parser.nit:5088 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5091 */
+  /* parser/parser.nit:5089 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5092 */
+  /* parser/parser.nit:5090 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5093 */
+  /* parser/parser.nit:5091 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5094 */
+  /* parser/parser.nit:5092 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5095 */
+  /* parser/parser.nit:5093 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5096 */
+  /* parser/parser.nit:5094 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5097 */
+  /* parser/parser.nit:5095 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5098 */
+  /* parser/parser.nit:5096 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5099 */
+  /* parser/parser.nit:5097 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5100 */
+  /* parser/parser.nit:5098 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5101 */
+  /* parser/parser.nit:5099 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5103 */
+  /* parser/parser.nit:5101 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5101);
   }
-  /* parser/parser.nit:5105 */
+  /* parser/parser.nit:5103 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5105);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5103);
   }
-  /* parser/parser.nit:5107 */
+  /* parser/parser.nit:5105 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5107);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5105);
   }
-  /* parser/parser.nit:5109 */
+  /* parser/parser.nit:5107 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5109);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5107);
   }
-  /* parser/parser.nit:5111 */
+  /* parser/parser.nit:5109 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5111);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5109);
   }
-  /* parser/parser.nit:5112 */
+  /* parser/parser.nit:5110 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
   fra.me.REG[11] = fra.me.REG[6];
-  /* parser/parser.nit:5113 */
+  /* parser/parser.nit:5111 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5115 */
+  /* parser/parser.nit:5113 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5115);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5113);
   }
-  /* parser/parser.nit:5116 */
+  /* parser/parser.nit:5114 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:5117 */
+  /* parser/parser.nit:5115 */
   fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:5124 */
+  /* parser/parser.nit:5122 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5124);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5122);
   }
-  /* parser/parser.nit:5125 */
+  /* parser/parser.nit:5123 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5127 */
+  /* parser/parser.nit:5125 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5127);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5125);
   }
-  /* parser/parser.nit:5128 */
+  /* parser/parser.nit:5126 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5141 */
+  /* parser/parser.nit:5139 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5142 */
+  /* parser/parser.nit:5140 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5142);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5140);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17535,7 +17504,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 = 5147;
+  fra.me.line = 5145;
   fra.me.meth = LOCATE_parser___ReduceAction96___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -17557,112 +17526,112 @@ void parser___ReduceAction96___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5149 */
+  /* parser/parser.nit:5147 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5150 */
+  /* parser/parser.nit:5148 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5151 */
+  /* parser/parser.nit:5149 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5152 */
+  /* parser/parser.nit:5150 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5153 */
+  /* parser/parser.nit:5151 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5154 */
+  /* parser/parser.nit:5152 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5155 */
+  /* parser/parser.nit:5153 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5156 */
+  /* parser/parser.nit:5154 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5157 */
+  /* parser/parser.nit:5155 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5158 */
+  /* parser/parser.nit:5156 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5159 */
+  /* parser/parser.nit:5157 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5160 */
+  /* parser/parser.nit:5158 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5161 */
+  /* parser/parser.nit:5159 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5162 */
+  /* parser/parser.nit:5160 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5163 */
+  /* parser/parser.nit:5161 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5165 */
+  /* parser/parser.nit:5163 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5163);
+  }
+  /* parser/parser.nit:5165 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5165);
   }
   /* parser/parser.nit:5167 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5167);
   }
   /* parser/parser.nit:5169 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5169);
   }
   /* parser/parser.nit:5171 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5171);
   }
   /* parser/parser.nit:5173 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5173);
-  }
-  /* parser/parser.nit:5175 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5175);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5173);
   }
-  /* parser/parser.nit:5176 */
+  /* parser/parser.nit:5174 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
   fra.me.REG[12] = fra.me.REG[6];
-  /* parser/parser.nit:5177 */
+  /* parser/parser.nit:5175 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5179 */
+  /* parser/parser.nit:5177 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5179);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5177);
   }
-  /* parser/parser.nit:5180 */
+  /* parser/parser.nit:5178 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:5181 */
+  /* parser/parser.nit:5179 */
   fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:5188 */
+  /* parser/parser.nit:5186 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5188);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5186);
   }
-  /* parser/parser.nit:5189 */
+  /* parser/parser.nit:5187 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:5191 */
+  /* parser/parser.nit:5189 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5191);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5189);
   }
-  /* parser/parser.nit:5192 */
+  /* parser/parser.nit:5190 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:5205 */
+  /* parser/parser.nit:5203 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5206 */
+  /* parser/parser.nit:5204 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5206);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5204);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17677,7 +17646,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 = 5211;
+  fra.me.line = 5209;
   fra.me.meth = LOCATE_parser___ReduceAction97___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -17697,86 +17666,86 @@ void parser___ReduceAction97___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:5213 */
+  /* parser/parser.nit:5211 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5214 */
+  /* parser/parser.nit:5212 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5215 */
+  /* parser/parser.nit:5213 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5216 */
+  /* parser/parser.nit:5214 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5217 */
+  /* parser/parser.nit:5215 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5218 */
+  /* parser/parser.nit:5216 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5219 */
+  /* parser/parser.nit:5217 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5220 */
+  /* parser/parser.nit:5218 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5221 */
+  /* parser/parser.nit:5219 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5222 */
+  /* parser/parser.nit:5220 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5223 */
+  /* parser/parser.nit:5221 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5224 */
+  /* parser/parser.nit:5222 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5225 */
+  /* parser/parser.nit:5223 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5227 */
+  /* parser/parser.nit:5225 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5225);
+  }
+  /* parser/parser.nit:5227 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5227);
   }
   /* parser/parser.nit:5229 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5229);
   }
   /* parser/parser.nit:5231 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5231);
   }
   /* parser/parser.nit:5233 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5233);
   }
   /* parser/parser.nit:5235 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5235);
-  }
-  /* parser/parser.nit:5237 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5237);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5235);
   }
-  /* parser/parser.nit:5238 */
+  /* parser/parser.nit:5236 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* parser/parser.nit:5240 */
+  /* parser/parser.nit:5238 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5240);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5238);
   }
-  /* parser/parser.nit:5241 */
+  /* parser/parser.nit:5239 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[5], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:5254 */
+  /* parser/parser.nit:5252 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5255 */
+  /* parser/parser.nit:5253 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5255);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5253);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17791,7 +17760,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 = 5260;
+  fra.me.line = 5258;
   fra.me.meth = LOCATE_parser___ReduceAction98___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -17812,94 +17781,94 @@ void parser___ReduceAction98___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:5262 */
+  /* parser/parser.nit:5260 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5263 */
+  /* parser/parser.nit:5261 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5264 */
+  /* parser/parser.nit:5262 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5265 */
+  /* parser/parser.nit:5263 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5266 */
+  /* parser/parser.nit:5264 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5267 */
+  /* parser/parser.nit:5265 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5268 */
+  /* parser/parser.nit:5266 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5269 */
+  /* parser/parser.nit:5267 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5270 */
+  /* parser/parser.nit:5268 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5271 */
+  /* parser/parser.nit:5269 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5272 */
+  /* parser/parser.nit:5270 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5273 */
+  /* parser/parser.nit:5271 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5274 */
+  /* parser/parser.nit:5272 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5275 */
+  /* parser/parser.nit:5273 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5277 */
+  /* parser/parser.nit:5275 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5275);
+  }
+  /* parser/parser.nit:5277 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5277);
   }
   /* parser/parser.nit:5279 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5279);
   }
   /* parser/parser.nit:5281 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5281);
   }
   /* parser/parser.nit:5283 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5283);
   }
   /* parser/parser.nit:5285 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5285);
   }
   /* parser/parser.nit:5287 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5287);
-  }
-  /* parser/parser.nit:5289 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5289);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5287);
   }
-  /* parser/parser.nit:5290 */
+  /* parser/parser.nit:5288 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5292 */
+  /* parser/parser.nit:5290 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5292);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5290);
   }
-  /* parser/parser.nit:5293 */
+  /* parser/parser.nit:5291 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5306 */
+  /* parser/parser.nit:5304 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5307 */
+  /* parser/parser.nit:5305 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5307);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5305);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17914,7 +17883,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 = 5312;
+  fra.me.line = 5310;
   fra.me.meth = LOCATE_parser___ReduceAction99___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -17935,97 +17904,97 @@ void parser___ReduceAction99___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:5314 */
+  /* parser/parser.nit:5312 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5315 */
+  /* parser/parser.nit:5313 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5316 */
+  /* parser/parser.nit:5314 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5317 */
+  /* parser/parser.nit:5315 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5318 */
+  /* parser/parser.nit:5316 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5319 */
+  /* parser/parser.nit:5317 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5320 */
+  /* parser/parser.nit:5318 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5321 */
+  /* parser/parser.nit:5319 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5322 */
+  /* parser/parser.nit:5320 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5323 */
+  /* parser/parser.nit:5321 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5324 */
+  /* parser/parser.nit:5322 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5325 */
+  /* parser/parser.nit:5323 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5326 */
+  /* parser/parser.nit:5324 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5327 */
+  /* parser/parser.nit:5325 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5329 */
+  /* parser/parser.nit:5327 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5329);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5327);
   }
-  /* parser/parser.nit:5331 */
+  /* parser/parser.nit:5329 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5331);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5329);
   }
-  /* parser/parser.nit:5333 */
+  /* parser/parser.nit:5331 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5333);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5331);
   }
-  /* parser/parser.nit:5335 */
+  /* parser/parser.nit:5333 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5335);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5333);
   }
-  /* parser/parser.nit:5337 */
+  /* parser/parser.nit:5335 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5337);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5335);
   }
-  /* parser/parser.nit:5338 */
+  /* parser/parser.nit:5336 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
   fra.me.REG[11] = fra.me.REG[6];
-  /* parser/parser.nit:5340 */
+  /* parser/parser.nit:5338 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5340);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5338);
   }
-  /* parser/parser.nit:5342 */
+  /* parser/parser.nit:5340 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5342);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5340);
   }
-  /* parser/parser.nit:5343 */
+  /* parser/parser.nit:5341 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5345 */
+  /* parser/parser.nit:5343 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5345);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5343);
   }
-  /* parser/parser.nit:5346 */
+  /* parser/parser.nit:5344 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5359 */
+  /* parser/parser.nit:5357 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5360 */
+  /* parser/parser.nit:5358 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5360);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5358);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18040,7 +18009,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 = 5365;
+  fra.me.line = 5363;
   fra.me.meth = LOCATE_parser___ReduceAction100___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -18062,105 +18031,105 @@ void parser___ReduceAction100___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5367 */
+  /* parser/parser.nit:5365 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5368 */
+  /* parser/parser.nit:5366 */
   fra.me.REG[3] = 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:5374 */
+  /* parser/parser.nit:5372 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5375 */
+  /* parser/parser.nit:5373 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5376 */
+  /* parser/parser.nit:5374 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5377 */
+  /* parser/parser.nit:5375 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5378 */
+  /* parser/parser.nit:5376 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5379 */
+  /* parser/parser.nit:5377 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5380 */
+  /* parser/parser.nit:5378 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5381 */
+  /* parser/parser.nit:5379 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5383 */
+  /* parser/parser.nit:5381 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5381);
+  }
+  /* parser/parser.nit:5383 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5383);
   }
   /* parser/parser.nit:5385 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5385);
   }
   /* parser/parser.nit:5387 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5387);
   }
   /* parser/parser.nit:5389 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5389);
   }
   /* parser/parser.nit:5391 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5391);
-  }
-  /* parser/parser.nit:5393 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5393);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5391);
   }
-  /* parser/parser.nit:5394 */
+  /* parser/parser.nit:5392 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
   fra.me.REG[12] = fra.me.REG[6];
-  /* parser/parser.nit:5396 */
+  /* parser/parser.nit:5394 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5396);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5394);
   }
-  /* parser/parser.nit:5398 */
+  /* parser/parser.nit:5396 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5398);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5396);
   }
-  /* parser/parser.nit:5399 */
+  /* parser/parser.nit:5397 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:5401 */
+  /* parser/parser.nit:5399 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5401);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5399);
   }
-  /* parser/parser.nit:5402 */
+  /* parser/parser.nit:5400 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:5415 */
+  /* parser/parser.nit:5413 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5416 */
+  /* parser/parser.nit:5414 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5416);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5414);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18175,7 +18144,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 = 5421;
+  fra.me.line = 5419;
   fra.me.meth = LOCATE_parser___ReduceAction101___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -18197,101 +18166,101 @@ void parser___ReduceAction101___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5423 */
+  /* parser/parser.nit:5421 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5424 */
+  /* parser/parser.nit:5422 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5425 */
+  /* parser/parser.nit:5423 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5426 */
+  /* parser/parser.nit:5424 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5427 */
+  /* parser/parser.nit:5425 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5428 */
+  /* parser/parser.nit:5426 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5429 */
+  /* parser/parser.nit:5427 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5430 */
+  /* parser/parser.nit:5428 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5431 */
+  /* parser/parser.nit:5429 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5432 */
+  /* parser/parser.nit:5430 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5433 */
+  /* parser/parser.nit:5431 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5434 */
+  /* parser/parser.nit:5432 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5435 */
+  /* parser/parser.nit:5433 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5436 */
+  /* parser/parser.nit:5434 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5438 */
+  /* parser/parser.nit:5436 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5438);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5436);
   }
-  /* parser/parser.nit:5440 */
+  /* parser/parser.nit:5438 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5440);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5438);
   }
-  /* parser/parser.nit:5442 */
+  /* parser/parser.nit:5440 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5442);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5440);
   }
-  /* parser/parser.nit:5444 */
+  /* parser/parser.nit:5442 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5444);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5442);
   }
-  /* parser/parser.nit:5445 */
+  /* parser/parser.nit:5443 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5447 */
+  /* parser/parser.nit:5445 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5447);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5445);
   }
-  /* parser/parser.nit:5448 */
+  /* parser/parser.nit:5446 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[6]);
   fra.me.REG[14] = fra.me.REG[6];
-  /* parser/parser.nit:5449 */
+  /* parser/parser.nit:5447 */
   fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
-  /* parser/parser.nit:5456 */
+  /* parser/parser.nit:5454 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5456);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5454);
   }
-  /* parser/parser.nit:5458 */
+  /* parser/parser.nit:5456 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5458);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5456);
   }
-  /* parser/parser.nit:5459 */
+  /* parser/parser.nit:5457 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5461 */
+  /* parser/parser.nit:5459 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5461);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5459);
   }
-  /* parser/parser.nit:5462 */
+  /* parser/parser.nit:5460 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[14], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5475 */
+  /* parser/parser.nit:5473 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5476 */
+  /* parser/parser.nit:5474 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5476);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5474);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18306,7 +18275,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 = 5481;
+  fra.me.line = 5479;
   fra.me.meth = LOCATE_parser___ReduceAction102___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -18329,109 +18298,109 @@ void parser___ReduceAction102___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5483 */
+  /* parser/parser.nit:5481 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5484 */
+  /* parser/parser.nit:5482 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5485 */
+  /* parser/parser.nit:5483 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5486 */
+  /* parser/parser.nit:5484 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5487 */
+  /* parser/parser.nit:5485 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5488 */
+  /* parser/parser.nit:5486 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5489 */
+  /* parser/parser.nit:5487 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5490 */
+  /* parser/parser.nit:5488 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5491 */
+  /* parser/parser.nit:5489 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5492 */
+  /* parser/parser.nit:5490 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5493 */
+  /* parser/parser.nit:5491 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5494 */
+  /* parser/parser.nit:5492 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5495 */
+  /* parser/parser.nit:5493 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5496 */
+  /* parser/parser.nit:5494 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5497 */
+  /* parser/parser.nit:5495 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5499 */
+  /* parser/parser.nit:5497 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5499);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5497);
   }
-  /* parser/parser.nit:5501 */
+  /* parser/parser.nit:5499 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5501);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5499);
   }
-  /* parser/parser.nit:5503 */
+  /* parser/parser.nit:5501 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5503);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5501);
   }
-  /* parser/parser.nit:5505 */
+  /* parser/parser.nit:5503 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5505);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5503);
   }
-  /* parser/parser.nit:5507 */
+  /* parser/parser.nit:5505 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5507);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5505);
   }
-  /* parser/parser.nit:5508 */
+  /* parser/parser.nit:5506 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5510 */
+  /* parser/parser.nit:5508 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5510);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5508);
   }
-  /* parser/parser.nit:5511 */
+  /* parser/parser.nit:5509 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[6]);
   fra.me.REG[15] = fra.me.REG[6];
-  /* parser/parser.nit:5512 */
+  /* parser/parser.nit:5510 */
   fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
-  /* parser/parser.nit:5519 */
+  /* parser/parser.nit:5517 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5517);
   }
-  /* parser/parser.nit:5521 */
+  /* parser/parser.nit:5519 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5521);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5519);
   }
-  /* parser/parser.nit:5522 */
+  /* parser/parser.nit:5520 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:5524 */
+  /* parser/parser.nit:5522 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5524);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5522);
   }
-  /* parser/parser.nit:5525 */
+  /* parser/parser.nit:5523 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[15], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:5538 */
+  /* parser/parser.nit:5536 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5539 */
+  /* parser/parser.nit:5537 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5539);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5537);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18446,7 +18415,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 = 5544;
+  fra.me.line = 5542;
   fra.me.meth = LOCATE_parser___ReduceAction103___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -18468,112 +18437,112 @@ void parser___ReduceAction103___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5546 */
+  /* parser/parser.nit:5544 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5547 */
+  /* parser/parser.nit:5545 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5548 */
+  /* parser/parser.nit:5546 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5549 */
+  /* parser/parser.nit:5547 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5550 */
+  /* parser/parser.nit:5548 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5551 */
+  /* parser/parser.nit:5549 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5552 */
+  /* parser/parser.nit:5550 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5553 */
+  /* parser/parser.nit:5551 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5554 */
+  /* parser/parser.nit:5552 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5555 */
+  /* parser/parser.nit:5553 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5556 */
+  /* parser/parser.nit:5554 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5557 */
+  /* parser/parser.nit:5555 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5558 */
+  /* parser/parser.nit:5556 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5559 */
+  /* parser/parser.nit:5557 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5560 */
+  /* parser/parser.nit:5558 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5562 */
+  /* parser/parser.nit:5560 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5562);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5560);
   }
-  /* parser/parser.nit:5564 */
+  /* parser/parser.nit:5562 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5564);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5562);
   }
-  /* parser/parser.nit:5566 */
+  /* parser/parser.nit:5564 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5566);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5564);
   }
-  /* parser/parser.nit:5568 */
+  /* parser/parser.nit:5566 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5568);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5566);
   }
-  /* parser/parser.nit:5570 */
+  /* parser/parser.nit:5568 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5570);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5568);
   }
-  /* parser/parser.nit:5571 */
+  /* parser/parser.nit:5569 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
   fra.me.REG[12] = fra.me.REG[7];
-  /* parser/parser.nit:5572 */
+  /* parser/parser.nit:5570 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5574 */
+  /* parser/parser.nit:5572 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5574);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5572);
   }
-  /* parser/parser.nit:5575 */
+  /* parser/parser.nit:5573 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:5576 */
+  /* parser/parser.nit:5574 */
   fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
-  /* parser/parser.nit:5583 */
+  /* parser/parser.nit:5581 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5583);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5581);
   }
-  /* parser/parser.nit:5585 */
+  /* parser/parser.nit:5583 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5585);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5583);
   }
-  /* parser/parser.nit:5586 */
+  /* parser/parser.nit:5584 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:5588 */
+  /* parser/parser.nit:5586 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5588);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5586);
   }
-  /* parser/parser.nit:5589 */
+  /* parser/parser.nit:5587 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[7], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:5602 */
+  /* parser/parser.nit:5600 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5603 */
+  /* parser/parser.nit:5601 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5603);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5601);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18588,7 +18557,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 = 5608;
+  fra.me.line = 5606;
   fra.me.meth = LOCATE_parser___ReduceAction104___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -18611,120 +18580,120 @@ void parser___ReduceAction104___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5610 */
+  /* parser/parser.nit:5608 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5611 */
+  /* parser/parser.nit:5609 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5612 */
+  /* parser/parser.nit:5610 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5613 */
+  /* parser/parser.nit:5611 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5614 */
+  /* parser/parser.nit:5612 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5615 */
+  /* parser/parser.nit:5613 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5616 */
+  /* parser/parser.nit:5614 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5617 */
+  /* parser/parser.nit:5615 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5618 */
+  /* parser/parser.nit:5616 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5619 */
+  /* parser/parser.nit:5617 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5620 */
+  /* parser/parser.nit:5618 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5621 */
+  /* parser/parser.nit:5619 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5622 */
+  /* parser/parser.nit:5620 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5623 */
+  /* parser/parser.nit:5621 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5624 */
+  /* parser/parser.nit:5622 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5625 */
+  /* parser/parser.nit:5623 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5627 */
+  /* parser/parser.nit:5625 */
   REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5625);
+  }
+  /* parser/parser.nit:5627 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5627);
   }
   /* parser/parser.nit:5629 */
-  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5629);
   }
   /* parser/parser.nit:5631 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5631);
   }
   /* parser/parser.nit:5633 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5633);
   }
   /* parser/parser.nit:5635 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5635);
-  }
-  /* parser/parser.nit:5637 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5637);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5635);
   }
-  /* parser/parser.nit:5638 */
+  /* parser/parser.nit:5636 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
   fra.me.REG[13] = fra.me.REG[7];
-  /* parser/parser.nit:5639 */
+  /* parser/parser.nit:5637 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5641 */
+  /* parser/parser.nit:5639 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5641);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5639);
   }
-  /* parser/parser.nit:5642 */
+  /* parser/parser.nit:5640 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:5643 */
+  /* parser/parser.nit:5641 */
   fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
-  /* parser/parser.nit:5650 */
+  /* parser/parser.nit:5648 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5650);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5648);
   }
-  /* parser/parser.nit:5652 */
+  /* parser/parser.nit:5650 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5652);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5650);
   }
-  /* parser/parser.nit:5653 */
+  /* parser/parser.nit:5651 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:5655 */
+  /* parser/parser.nit:5653 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5655);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5653);
   }
-  /* parser/parser.nit:5656 */
+  /* parser/parser.nit:5654 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[7], fra.me.REG[5], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
-  /* parser/parser.nit:5669 */
+  /* parser/parser.nit:5667 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5670 */
+  /* parser/parser.nit:5668 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5670);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5668);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18739,7 +18708,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 = 5675;
+  fra.me.line = 5673;
   fra.me.meth = LOCATE_parser___ReduceAction105___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -18758,78 +18727,78 @@ void parser___ReduceAction105___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:5677 */
+  /* parser/parser.nit:5675 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5678 */
+  /* parser/parser.nit:5676 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5679 */
+  /* parser/parser.nit:5677 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5680 */
+  /* parser/parser.nit:5678 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5681 */
+  /* parser/parser.nit:5679 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5682 */
+  /* parser/parser.nit:5680 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5683 */
+  /* parser/parser.nit:5681 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5684 */
+  /* parser/parser.nit:5682 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5685 */
+  /* parser/parser.nit:5683 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5686 */
+  /* parser/parser.nit:5684 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5687 */
+  /* parser/parser.nit:5685 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5688 */
+  /* parser/parser.nit:5686 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5690 */
+  /* parser/parser.nit:5688 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5690);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5688);
   }
-  /* parser/parser.nit:5692 */
+  /* parser/parser.nit:5690 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5692);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5690);
   }
-  /* parser/parser.nit:5694 */
+  /* parser/parser.nit:5692 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5694);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5692);
   }
-  /* parser/parser.nit:5696 */
+  /* parser/parser.nit:5694 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5696);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5694);
   }
-  /* parser/parser.nit:5698 */
+  /* parser/parser.nit:5696 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5698);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5696);
   }
-  /* parser/parser.nit:5699 */
+  /* parser/parser.nit:5697 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* parser/parser.nit:5701 */
+  /* parser/parser.nit:5699 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5701);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5699);
   }
-  /* parser/parser.nit:5702 */
+  /* parser/parser.nit:5700 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
-  /* parser/parser.nit:5715 */
+  /* parser/parser.nit:5713 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5716 */
+  /* parser/parser.nit:5714 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5716);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5714);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18844,7 +18813,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 = 5721;
+  fra.me.line = 5719;
   fra.me.meth = LOCATE_parser___ReduceAction106___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -18864,86 +18833,86 @@ void parser___ReduceAction106___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:5723 */
+  /* parser/parser.nit:5721 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5724 */
+  /* parser/parser.nit:5722 */
   fra.me.REG[3] = 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5727 */
+  /* parser/parser.nit:5725 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5728 */
+  /* parser/parser.nit:5726 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5729 */
+  /* parser/parser.nit:5727 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5730 */
+  /* parser/parser.nit:5728 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5731 */
+  /* parser/parser.nit:5729 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5732 */
+  /* parser/parser.nit:5730 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5733 */
+  /* parser/parser.nit:5731 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5734 */
+  /* parser/parser.nit:5732 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5735 */
+  /* parser/parser.nit:5733 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5737 */
+  /* parser/parser.nit:5735 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5735);
+  }
+  /* parser/parser.nit:5737 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5737);
   }
   /* parser/parser.nit:5739 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5739);
   }
   /* parser/parser.nit:5741 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5741);
   }
   /* parser/parser.nit:5743 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5743);
   }
   /* parser/parser.nit:5745 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5745);
-  }
-  /* parser/parser.nit:5747 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5747);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5745);
   }
-  /* parser/parser.nit:5748 */
+  /* parser/parser.nit:5746 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5750 */
+  /* parser/parser.nit:5748 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5750);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5748);
   }
-  /* parser/parser.nit:5751 */
+  /* parser/parser.nit:5749 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:5764 */
+  /* parser/parser.nit:5762 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5765 */
+  /* parser/parser.nit:5763 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5765);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5763);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18958,7 +18927,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 = 5770;
+  fra.me.line = 5768;
   fra.me.meth = LOCATE_parser___ReduceAction107___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -18978,89 +18947,89 @@ void parser___ReduceAction107___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:5772 */
+  /* parser/parser.nit:5770 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5773 */
+  /* parser/parser.nit:5771 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5774 */
+  /* parser/parser.nit:5772 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5775 */
+  /* parser/parser.nit:5773 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5776 */
+  /* parser/parser.nit:5774 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5777 */
+  /* parser/parser.nit:5775 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5778 */
+  /* parser/parser.nit:5776 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5779 */
+  /* parser/parser.nit:5777 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5780 */
+  /* parser/parser.nit:5778 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5781 */
+  /* parser/parser.nit:5779 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5782 */
+  /* parser/parser.nit:5780 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5783 */
+  /* parser/parser.nit:5781 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5784 */
+  /* parser/parser.nit:5782 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5786 */
+  /* parser/parser.nit:5784 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5786);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5784);
   }
-  /* parser/parser.nit:5788 */
+  /* parser/parser.nit:5786 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5788);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5786);
   }
-  /* parser/parser.nit:5790 */
+  /* parser/parser.nit:5788 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5790);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5788);
   }
-  /* parser/parser.nit:5792 */
+  /* parser/parser.nit:5790 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5792);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5790);
   }
-  /* parser/parser.nit:5794 */
+  /* parser/parser.nit:5792 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5794);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5792);
   }
-  /* parser/parser.nit:5795 */
+  /* parser/parser.nit:5793 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* parser/parser.nit:5797 */
+  /* parser/parser.nit:5795 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5797);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5795);
   }
-  /* parser/parser.nit:5798 */
+  /* parser/parser.nit:5796 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5800 */
+  /* parser/parser.nit:5798 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5800);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5798);
   }
-  /* parser/parser.nit:5801 */
+  /* parser/parser.nit:5799 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:5814 */
+  /* parser/parser.nit:5812 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5815 */
+  /* parser/parser.nit:5813 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5815);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5813);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19075,7 +19044,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 = 5820;
+  fra.me.line = 5818;
   fra.me.meth = LOCATE_parser___ReduceAction108___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -19096,97 +19065,97 @@ void parser___ReduceAction108___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:5822 */
+  /* parser/parser.nit:5820 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5823 */
+  /* parser/parser.nit:5821 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5824 */
+  /* parser/parser.nit:5822 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5825 */
+  /* parser/parser.nit:5823 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5826 */
+  /* parser/parser.nit:5824 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5827 */
+  /* parser/parser.nit:5825 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5828 */
+  /* parser/parser.nit:5826 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5829 */
+  /* parser/parser.nit:5827 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5830 */
+  /* parser/parser.nit:5828 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5831 */
+  /* parser/parser.nit:5829 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5832 */
+  /* parser/parser.nit:5830 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5833 */
+  /* parser/parser.nit:5831 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5834 */
+  /* parser/parser.nit:5832 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5835 */
+  /* parser/parser.nit:5833 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5837 */
+  /* parser/parser.nit:5835 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5835);
+  }
+  /* parser/parser.nit:5837 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5837);
   }
   /* parser/parser.nit:5839 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5839);
   }
   /* parser/parser.nit:5841 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5841);
   }
   /* parser/parser.nit:5843 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5843);
   }
   /* parser/parser.nit:5845 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5845);
-  }
-  /* parser/parser.nit:5847 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5847);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5845);
   }
-  /* parser/parser.nit:5848 */
+  /* parser/parser.nit:5846 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* parser/parser.nit:5850 */
+  /* parser/parser.nit:5848 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5850);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5848);
   }
-  /* parser/parser.nit:5851 */
+  /* parser/parser.nit:5849 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:5853 */
+  /* parser/parser.nit:5851 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5853);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5851);
   }
-  /* parser/parser.nit:5854 */
+  /* parser/parser.nit:5852 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5867 */
+  /* parser/parser.nit:5865 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5868 */
+  /* parser/parser.nit:5866 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5868);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5866);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19201,7 +19170,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 = 5873;
+  fra.me.line = 5871;
   fra.me.meth = LOCATE_parser___ReduceAction109___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -19222,93 +19191,93 @@ void parser___ReduceAction109___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:5875 */
+  /* parser/parser.nit:5873 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5876 */
+  /* parser/parser.nit:5874 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5877 */
+  /* parser/parser.nit:5875 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5878 */
+  /* parser/parser.nit:5876 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5879 */
+  /* parser/parser.nit:5877 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5880 */
+  /* parser/parser.nit:5878 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5881 */
+  /* parser/parser.nit:5879 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5882 */
+  /* parser/parser.nit:5880 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5883 */
+  /* parser/parser.nit:5881 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5884 */
+  /* parser/parser.nit:5882 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5885 */
+  /* parser/parser.nit:5883 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5886 */
+  /* parser/parser.nit:5884 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5887 */
+  /* parser/parser.nit:5885 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5889 */
+  /* parser/parser.nit:5887 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5889);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5887);
   }
-  /* parser/parser.nit:5891 */
+  /* parser/parser.nit:5889 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5891);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5889);
   }
-  /* parser/parser.nit:5893 */
+  /* parser/parser.nit:5891 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5893);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5891);
   }
-  /* parser/parser.nit:5895 */
+  /* parser/parser.nit:5893 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5895);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5893);
   }
-  /* parser/parser.nit:5896 */
+  /* parser/parser.nit:5894 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5898 */
+  /* parser/parser.nit:5896 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5898);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5896);
   }
-  /* parser/parser.nit:5899 */
+  /* parser/parser.nit:5897 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:5900 */
+  /* parser/parser.nit:5898 */
   fra.me.REG[13] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[13], NIT_NULL);
-  /* parser/parser.nit:5907 */
+  /* parser/parser.nit:5905 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5907);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5905);
   }
-  /* parser/parser.nit:5908 */
+  /* parser/parser.nit:5906 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:5910 */
+  /* parser/parser.nit:5908 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5910);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5908);
   }
-  /* parser/parser.nit:5911 */
+  /* parser/parser.nit:5909 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[13], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:5924 */
+  /* parser/parser.nit:5922 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5925 */
+  /* parser/parser.nit:5923 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5925);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5923);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19323,7 +19292,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 = 5930;
+  fra.me.line = 5928;
   fra.me.meth = LOCATE_parser___ReduceAction110___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -19345,101 +19314,101 @@ void parser___ReduceAction110___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:5932 */
+  /* parser/parser.nit:5930 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5933 */
+  /* parser/parser.nit:5931 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5934 */
+  /* parser/parser.nit:5932 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5935 */
+  /* parser/parser.nit:5933 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5936 */
+  /* parser/parser.nit:5934 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5937 */
+  /* parser/parser.nit:5935 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5938 */
+  /* parser/parser.nit:5936 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5939 */
+  /* parser/parser.nit:5937 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5940 */
+  /* parser/parser.nit:5938 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5941 */
+  /* parser/parser.nit:5939 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5942 */
+  /* parser/parser.nit:5940 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5943 */
+  /* parser/parser.nit:5941 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5944 */
+  /* parser/parser.nit:5942 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5945 */
+  /* parser/parser.nit:5943 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5947 */
+  /* parser/parser.nit:5945 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5947);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5945);
   }
-  /* parser/parser.nit:5949 */
+  /* parser/parser.nit:5947 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5949);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5947);
   }
-  /* parser/parser.nit:5951 */
+  /* parser/parser.nit:5949 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5951);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5949);
   }
-  /* parser/parser.nit:5953 */
+  /* parser/parser.nit:5951 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5953);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5951);
   }
-  /* parser/parser.nit:5955 */
+  /* parser/parser.nit:5953 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5955);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5953);
   }
-  /* parser/parser.nit:5956 */
+  /* parser/parser.nit:5954 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5958 */
+  /* parser/parser.nit:5956 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5958);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5956);
   }
-  /* parser/parser.nit:5959 */
+  /* parser/parser.nit:5957 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:5960 */
+  /* parser/parser.nit:5958 */
   fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
-  /* parser/parser.nit:5967 */
+  /* parser/parser.nit:5965 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5967);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5965);
   }
-  /* parser/parser.nit:5968 */
+  /* parser/parser.nit:5966 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:5970 */
+  /* parser/parser.nit:5968 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5970);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5968);
   }
-  /* parser/parser.nit:5971 */
+  /* parser/parser.nit:5969 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[14], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:5984 */
+  /* parser/parser.nit:5982 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5985 */
+  /* parser/parser.nit:5983 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5985);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5983);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19454,7 +19423,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 = 5990;
+  fra.me.line = 5988;
   fra.me.meth = LOCATE_parser___ReduceAction111___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -19475,104 +19444,104 @@ void parser___ReduceAction111___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:5992 */
+  /* parser/parser.nit:5990 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5993 */
+  /* parser/parser.nit:5991 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5994 */
+  /* parser/parser.nit:5992 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5995 */
+  /* parser/parser.nit:5993 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5996 */
+  /* parser/parser.nit:5994 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5997 */
+  /* parser/parser.nit:5995 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5998 */
+  /* parser/parser.nit:5996 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5999 */
+  /* parser/parser.nit:5997 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6000 */
+  /* parser/parser.nit:5998 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6001 */
+  /* parser/parser.nit:5999 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6002 */
+  /* parser/parser.nit:6000 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6003 */
+  /* parser/parser.nit:6001 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6004 */
+  /* parser/parser.nit:6002 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6005 */
+  /* parser/parser.nit:6003 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6007 */
+  /* parser/parser.nit:6005 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6007);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6005);
   }
-  /* parser/parser.nit:6009 */
+  /* parser/parser.nit:6007 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6009);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6007);
   }
-  /* parser/parser.nit:6011 */
+  /* parser/parser.nit:6009 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6011);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6009);
   }
-  /* parser/parser.nit:6013 */
+  /* parser/parser.nit:6011 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6013);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6011);
   }
-  /* parser/parser.nit:6015 */
+  /* parser/parser.nit:6013 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6015);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6013);
   }
-  /* parser/parser.nit:6016 */
+  /* parser/parser.nit:6014 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
   fra.me.REG[11] = fra.me.REG[6];
-  /* parser/parser.nit:6017 */
+  /* parser/parser.nit:6015 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6019 */
+  /* parser/parser.nit:6017 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6019);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6017);
   }
-  /* parser/parser.nit:6020 */
+  /* parser/parser.nit:6018 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:6021 */
+  /* parser/parser.nit:6019 */
   fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:6028 */
+  /* parser/parser.nit:6026 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6028);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6026);
   }
-  /* parser/parser.nit:6029 */
+  /* parser/parser.nit:6027 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6031 */
+  /* parser/parser.nit:6029 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6031);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6029);
   }
-  /* parser/parser.nit:6032 */
+  /* parser/parser.nit:6030 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6045 */
+  /* parser/parser.nit:6043 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6046 */
+  /* parser/parser.nit:6044 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6046);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6044);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19587,7 +19556,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 = 6051;
+  fra.me.line = 6049;
   fra.me.meth = LOCATE_parser___ReduceAction112___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -19609,112 +19578,112 @@ void parser___ReduceAction112___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6053 */
+  /* parser/parser.nit:6051 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6054 */
+  /* parser/parser.nit:6052 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6055 */
+  /* parser/parser.nit:6053 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6056 */
+  /* parser/parser.nit:6054 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6057 */
+  /* parser/parser.nit:6055 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6058 */
+  /* parser/parser.nit:6056 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6059 */
+  /* parser/parser.nit:6057 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6060 */
+  /* parser/parser.nit:6058 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6061 */
+  /* parser/parser.nit:6059 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6062 */
+  /* parser/parser.nit:6060 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6063 */
+  /* parser/parser.nit:6061 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6064 */
+  /* parser/parser.nit:6062 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6065 */
+  /* parser/parser.nit:6063 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6066 */
+  /* parser/parser.nit:6064 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6067 */
+  /* parser/parser.nit:6065 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6069 */
+  /* parser/parser.nit:6067 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6067);
+  }
+  /* parser/parser.nit:6069 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6069);
   }
   /* parser/parser.nit:6071 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6071);
   }
   /* parser/parser.nit:6073 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6073);
   }
   /* parser/parser.nit:6075 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6075);
   }
   /* parser/parser.nit:6077 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6077);
-  }
-  /* parser/parser.nit:6079 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6079);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6077);
   }
-  /* parser/parser.nit:6080 */
+  /* parser/parser.nit:6078 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
   fra.me.REG[12] = fra.me.REG[6];
-  /* parser/parser.nit:6081 */
+  /* parser/parser.nit:6079 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6083 */
+  /* parser/parser.nit:6081 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6083);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6081);
   }
-  /* parser/parser.nit:6084 */
+  /* parser/parser.nit:6082 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:6085 */
+  /* parser/parser.nit:6083 */
   fra.me.REG[6] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:6092 */
+  /* parser/parser.nit:6090 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6092);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6090);
   }
-  /* parser/parser.nit:6093 */
+  /* parser/parser.nit:6091 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6095 */
+  /* parser/parser.nit:6093 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6095);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6093);
   }
-  /* parser/parser.nit:6096 */
+  /* parser/parser.nit:6094 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6109 */
+  /* parser/parser.nit:6107 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6110 */
+  /* parser/parser.nit:6108 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6110);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6108);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19729,7 +19698,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 = 6115;
+  fra.me.line = 6113;
   fra.me.meth = LOCATE_parser___ReduceAction113___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -19749,86 +19718,86 @@ void parser___ReduceAction113___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:6117 */
+  /* parser/parser.nit:6115 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6118 */
+  /* parser/parser.nit:6116 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6119 */
+  /* parser/parser.nit:6117 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6120 */
+  /* parser/parser.nit:6118 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6121 */
+  /* parser/parser.nit:6119 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6122 */
+  /* parser/parser.nit:6120 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6123 */
+  /* parser/parser.nit:6121 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6124 */
+  /* parser/parser.nit:6122 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6125 */
+  /* parser/parser.nit:6123 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6126 */
+  /* parser/parser.nit:6124 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6127 */
+  /* parser/parser.nit:6125 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6128 */
+  /* parser/parser.nit:6126 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6129 */
+  /* parser/parser.nit:6127 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6131 */
+  /* parser/parser.nit:6129 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6129);
+  }
+  /* parser/parser.nit:6131 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6131);
   }
   /* parser/parser.nit:6133 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6133);
   }
   /* parser/parser.nit:6135 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6135);
   }
   /* parser/parser.nit:6137 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6137);
   }
   /* parser/parser.nit:6139 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6139);
-  }
-  /* parser/parser.nit:6141 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6141);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6139);
   }
-  /* parser/parser.nit:6142 */
+  /* parser/parser.nit:6140 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:6144 */
+  /* parser/parser.nit:6142 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6144);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6142);
   }
-  /* parser/parser.nit:6145 */
+  /* parser/parser.nit:6143 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[5], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:6158 */
+  /* parser/parser.nit:6156 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6159 */
+  /* parser/parser.nit:6157 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6159);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6157);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19843,7 +19812,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 = 6164;
+  fra.me.line = 6162;
   fra.me.meth = LOCATE_parser___ReduceAction114___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -19864,94 +19833,94 @@ void parser___ReduceAction114___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:6166 */
+  /* parser/parser.nit:6164 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6167 */
+  /* parser/parser.nit:6165 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6168 */
+  /* parser/parser.nit:6166 */
   fra.me.REG[4] = 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:6170 */
+  /* parser/parser.nit:6168 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6171 */
+  /* parser/parser.nit:6169 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6172 */
+  /* parser/parser.nit:6170 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6173 */
+  /* parser/parser.nit:6171 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6174 */
+  /* parser/parser.nit:6172 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6175 */
+  /* parser/parser.nit:6173 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6176 */
+  /* parser/parser.nit:6174 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6177 */
+  /* parser/parser.nit:6175 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6178 */
+  /* parser/parser.nit:6176 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6179 */
+  /* parser/parser.nit:6177 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6181 */
+  /* parser/parser.nit:6179 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6179);
+  }
+  /* parser/parser.nit:6181 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6181);
   }
   /* parser/parser.nit:6183 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6183);
   }
   /* parser/parser.nit:6185 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6185);
   }
   /* parser/parser.nit:6187 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6187);
   }
   /* parser/parser.nit:6189 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6189);
   }
   /* parser/parser.nit:6191 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6191);
-  }
-  /* parser/parser.nit:6193 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6193);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6191);
   }
-  /* parser/parser.nit:6194 */
+  /* parser/parser.nit:6192 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6196 */
+  /* parser/parser.nit:6194 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6196);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6194);
   }
-  /* parser/parser.nit:6197 */
+  /* parser/parser.nit:6195 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6210 */
+  /* parser/parser.nit:6208 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6211 */
+  /* parser/parser.nit:6209 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6211);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6209);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19966,7 +19935,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 = 6216;
+  fra.me.line = 6214;
   fra.me.meth = LOCATE_parser___ReduceAction115___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -19987,97 +19956,97 @@ void parser___ReduceAction115___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:6218 */
+  /* parser/parser.nit:6216 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6219 */
+  /* parser/parser.nit:6217 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6220 */
+  /* parser/parser.nit:6218 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6221 */
+  /* parser/parser.nit:6219 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6222 */
+  /* parser/parser.nit:6220 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6223 */
+  /* parser/parser.nit:6221 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6224 */
+  /* parser/parser.nit:6222 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6225 */
+  /* parser/parser.nit:6223 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6226 */
+  /* parser/parser.nit:6224 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6227 */
+  /* parser/parser.nit:6225 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6228 */
+  /* parser/parser.nit:6226 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6229 */
+  /* parser/parser.nit:6227 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6230 */
+  /* parser/parser.nit:6228 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6231 */
+  /* parser/parser.nit:6229 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6233 */
+  /* parser/parser.nit:6231 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6233);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6231);
   }
-  /* parser/parser.nit:6235 */
+  /* parser/parser.nit:6233 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6235);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6233);
   }
-  /* parser/parser.nit:6237 */
+  /* parser/parser.nit:6235 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6237);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6235);
   }
-  /* parser/parser.nit:6239 */
+  /* parser/parser.nit:6237 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6239);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6237);
   }
-  /* parser/parser.nit:6241 */
+  /* parser/parser.nit:6239 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6241);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6239);
   }
-  /* parser/parser.nit:6242 */
+  /* parser/parser.nit:6240 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
   fra.me.REG[11] = fra.me.REG[6];
-  /* parser/parser.nit:6244 */
+  /* parser/parser.nit:6242 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6244);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6242);
   }
-  /* parser/parser.nit:6246 */
+  /* parser/parser.nit:6244 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6246);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6244);
   }
-  /* parser/parser.nit:6247 */
+  /* parser/parser.nit:6245 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6249 */
+  /* parser/parser.nit:6247 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6249);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6247);
   }
-  /* parser/parser.nit:6250 */
+  /* parser/parser.nit:6248 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6263 */
+  /* parser/parser.nit:6261 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6264 */
+  /* parser/parser.nit:6262 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6264);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6262);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20092,7 +20061,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 = 6269;
+  fra.me.line = 6267;
   fra.me.meth = LOCATE_parser___ReduceAction116___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -20114,105 +20083,105 @@ void parser___ReduceAction116___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6271 */
+  /* parser/parser.nit:6269 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6272 */
+  /* parser/parser.nit:6270 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6273 */
+  /* parser/parser.nit:6271 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6274 */
+  /* parser/parser.nit:6272 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6275 */
+  /* parser/parser.nit:6273 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6276 */
+  /* parser/parser.nit:6274 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6277 */
+  /* parser/parser.nit:6275 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6278 */
+  /* parser/parser.nit:6276 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6279 */
+  /* parser/parser.nit:6277 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6280 */
+  /* parser/parser.nit:6278 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6281 */
+  /* parser/parser.nit:6279 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6282 */
+  /* parser/parser.nit:6280 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6283 */
+  /* parser/parser.nit:6281 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6284 */
+  /* parser/parser.nit:6282 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6285 */
+  /* parser/parser.nit:6283 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6287 */
+  /* parser/parser.nit:6285 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6285);
+  }
+  /* parser/parser.nit:6287 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6287);
   }
   /* parser/parser.nit:6289 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6289);
   }
   /* parser/parser.nit:6291 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6291);
   }
   /* parser/parser.nit:6293 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6293);
   }
   /* parser/parser.nit:6295 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6295);
-  }
-  /* parser/parser.nit:6297 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6297);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6295);
   }
-  /* parser/parser.nit:6298 */
+  /* parser/parser.nit:6296 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
   fra.me.REG[12] = fra.me.REG[6];
-  /* parser/parser.nit:6300 */
+  /* parser/parser.nit:6298 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6300);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6298);
   }
-  /* parser/parser.nit:6302 */
+  /* parser/parser.nit:6300 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6302);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6300);
   }
-  /* parser/parser.nit:6303 */
+  /* parser/parser.nit:6301 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6305 */
+  /* parser/parser.nit:6303 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6305);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6303);
   }
-  /* parser/parser.nit:6306 */
+  /* parser/parser.nit:6304 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6319 */
+  /* parser/parser.nit:6317 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6320 */
+  /* parser/parser.nit:6318 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6320);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6318);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20227,7 +20196,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 = 6325;
+  fra.me.line = 6323;
   fra.me.meth = LOCATE_parser___ReduceAction117___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -20249,101 +20218,101 @@ void parser___ReduceAction117___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6327 */
+  /* parser/parser.nit:6325 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6328 */
+  /* parser/parser.nit:6326 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6329 */
+  /* parser/parser.nit:6327 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6330 */
+  /* parser/parser.nit:6328 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6331 */
+  /* parser/parser.nit:6329 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6332 */
+  /* parser/parser.nit:6330 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6333 */
+  /* parser/parser.nit:6331 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6334 */
+  /* parser/parser.nit:6332 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6335 */
+  /* parser/parser.nit:6333 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6336 */
+  /* parser/parser.nit:6334 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6337 */
+  /* parser/parser.nit:6335 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6338 */
+  /* parser/parser.nit:6336 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6339 */
+  /* parser/parser.nit:6337 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6340 */
+  /* parser/parser.nit:6338 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6342 */
+  /* parser/parser.nit:6340 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6342);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6340);
   }
-  /* parser/parser.nit:6344 */
+  /* parser/parser.nit:6342 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6344);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6342);
   }
-  /* parser/parser.nit:6346 */
+  /* parser/parser.nit:6344 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6346);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6344);
   }
-  /* parser/parser.nit:6348 */
+  /* parser/parser.nit:6346 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6348);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6346);
   }
-  /* parser/parser.nit:6349 */
+  /* parser/parser.nit:6347 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6351 */
+  /* parser/parser.nit:6349 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6351);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6349);
   }
-  /* parser/parser.nit:6352 */
+  /* parser/parser.nit:6350 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[6]);
   fra.me.REG[14] = fra.me.REG[6];
-  /* parser/parser.nit:6353 */
+  /* parser/parser.nit:6351 */
   fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
-  /* parser/parser.nit:6360 */
+  /* parser/parser.nit:6358 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6360);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6358);
   }
-  /* parser/parser.nit:6362 */
+  /* parser/parser.nit:6360 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6362);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6360);
   }
-  /* parser/parser.nit:6363 */
+  /* parser/parser.nit:6361 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6365 */
+  /* parser/parser.nit:6363 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6365);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6363);
   }
-  /* parser/parser.nit:6366 */
+  /* parser/parser.nit:6364 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[14], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6379 */
+  /* parser/parser.nit:6377 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6380 */
+  /* parser/parser.nit:6378 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6380);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6378);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20358,7 +20327,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 = 6385;
+  fra.me.line = 6383;
   fra.me.meth = LOCATE_parser___ReduceAction118___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -20381,109 +20350,109 @@ void parser___ReduceAction118___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6387 */
+  /* parser/parser.nit:6385 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6388 */
+  /* parser/parser.nit:6386 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6389 */
+  /* parser/parser.nit:6387 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6390 */
+  /* parser/parser.nit:6388 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6391 */
+  /* parser/parser.nit:6389 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6392 */
+  /* parser/parser.nit:6390 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6393 */
+  /* parser/parser.nit:6391 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6394 */
+  /* parser/parser.nit:6392 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6395 */
+  /* parser/parser.nit:6393 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6396 */
+  /* parser/parser.nit:6394 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6397 */
+  /* parser/parser.nit:6395 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6398 */
+  /* parser/parser.nit:6396 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6399 */
+  /* parser/parser.nit:6397 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6400 */
+  /* parser/parser.nit:6398 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6401 */
+  /* parser/parser.nit:6399 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6403 */
+  /* parser/parser.nit:6401 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6403);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6401);
   }
-  /* parser/parser.nit:6405 */
+  /* parser/parser.nit:6403 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6405);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6403);
   }
-  /* parser/parser.nit:6407 */
+  /* parser/parser.nit:6405 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6407);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6405);
   }
-  /* parser/parser.nit:6409 */
+  /* parser/parser.nit:6407 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6409);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6407);
   }
-  /* parser/parser.nit:6411 */
+  /* parser/parser.nit:6409 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6411);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6409);
   }
-  /* parser/parser.nit:6412 */
+  /* parser/parser.nit:6410 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6414 */
+  /* parser/parser.nit:6412 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6414);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6412);
   }
-  /* parser/parser.nit:6415 */
+  /* parser/parser.nit:6413 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[6]);
   fra.me.REG[15] = fra.me.REG[6];
-  /* parser/parser.nit:6416 */
+  /* parser/parser.nit:6414 */
   fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
-  /* parser/parser.nit:6423 */
+  /* parser/parser.nit:6421 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6423);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6421);
   }
-  /* parser/parser.nit:6425 */
+  /* parser/parser.nit:6423 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6425);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6423);
   }
-  /* parser/parser.nit:6426 */
+  /* parser/parser.nit:6424 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6428 */
+  /* parser/parser.nit:6426 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6428);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6426);
   }
-  /* parser/parser.nit:6429 */
+  /* parser/parser.nit:6427 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[15], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6442 */
+  /* parser/parser.nit:6440 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6443 */
+  /* parser/parser.nit:6441 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6443);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6441);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20498,7 +20467,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 = 6448;
+  fra.me.line = 6446;
   fra.me.meth = LOCATE_parser___ReduceAction119___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -20520,112 +20489,112 @@ void parser___ReduceAction119___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6450 */
+  /* parser/parser.nit:6448 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6451 */
+  /* parser/parser.nit:6449 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6452 */
+  /* parser/parser.nit:6450 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6453 */
+  /* parser/parser.nit:6451 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6454 */
+  /* parser/parser.nit:6452 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6455 */
+  /* parser/parser.nit:6453 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6456 */
+  /* parser/parser.nit:6454 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6457 */
+  /* parser/parser.nit:6455 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6458 */
+  /* parser/parser.nit:6456 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6459 */
+  /* parser/parser.nit:6457 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6460 */
+  /* parser/parser.nit:6458 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6461 */
+  /* parser/parser.nit:6459 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6462 */
+  /* parser/parser.nit:6460 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6463 */
+  /* parser/parser.nit:6461 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6464 */
+  /* parser/parser.nit:6462 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6466 */
+  /* parser/parser.nit:6464 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6466);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6464);
   }
-  /* parser/parser.nit:6468 */
+  /* parser/parser.nit:6466 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6468);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6466);
   }
-  /* parser/parser.nit:6470 */
+  /* parser/parser.nit:6468 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6470);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6468);
   }
-  /* parser/parser.nit:6472 */
+  /* parser/parser.nit:6470 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6472);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6470);
   }
-  /* parser/parser.nit:6474 */
+  /* parser/parser.nit:6472 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6474);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6472);
   }
-  /* parser/parser.nit:6475 */
+  /* parser/parser.nit:6473 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
   fra.me.REG[12] = fra.me.REG[7];
-  /* parser/parser.nit:6476 */
+  /* parser/parser.nit:6474 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6478 */
+  /* parser/parser.nit:6476 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6478);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6476);
   }
-  /* parser/parser.nit:6479 */
+  /* parser/parser.nit:6477 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:6480 */
+  /* parser/parser.nit:6478 */
   fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
-  /* parser/parser.nit:6487 */
+  /* parser/parser.nit:6485 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6487);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6485);
   }
-  /* parser/parser.nit:6489 */
+  /* parser/parser.nit:6487 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6487);
   }
-  /* parser/parser.nit:6490 */
+  /* parser/parser.nit:6488 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6492 */
+  /* parser/parser.nit:6490 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6492);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6490);
   }
-  /* parser/parser.nit:6493 */
+  /* parser/parser.nit:6491 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[7], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6506 */
+  /* parser/parser.nit:6504 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6507 */
+  /* parser/parser.nit:6505 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6507);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6505);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20640,7 +20609,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 = 6512;
+  fra.me.line = 6510;
   fra.me.meth = LOCATE_parser___ReduceAction120___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -20663,120 +20632,120 @@ void parser___ReduceAction120___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6514 */
+  /* parser/parser.nit:6512 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6515 */
+  /* parser/parser.nit:6513 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6516 */
+  /* parser/parser.nit:6514 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6517 */
+  /* parser/parser.nit:6515 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6518 */
+  /* parser/parser.nit:6516 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6519 */
+  /* parser/parser.nit:6517 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6520 */
+  /* parser/parser.nit:6518 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6521 */
+  /* parser/parser.nit:6519 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6522 */
+  /* parser/parser.nit:6520 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6523 */
+  /* parser/parser.nit:6521 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6524 */
+  /* parser/parser.nit:6522 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6525 */
+  /* parser/parser.nit:6523 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6526 */
+  /* parser/parser.nit:6524 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6527 */
+  /* parser/parser.nit:6525 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6528 */
+  /* parser/parser.nit:6526 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6529 */
+  /* parser/parser.nit:6527 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6531 */
+  /* parser/parser.nit:6529 */
   REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6529);
+  }
+  /* parser/parser.nit:6531 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6531);
   }
   /* parser/parser.nit:6533 */
-  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6533);
   }
   /* parser/parser.nit:6535 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6535);
   }
   /* parser/parser.nit:6537 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6537);
   }
   /* parser/parser.nit:6539 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6539);
-  }
-  /* parser/parser.nit:6541 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6541);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6539);
   }
-  /* parser/parser.nit:6542 */
+  /* parser/parser.nit:6540 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
   fra.me.REG[13] = fra.me.REG[7];
-  /* parser/parser.nit:6543 */
+  /* parser/parser.nit:6541 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6545 */
+  /* parser/parser.nit:6543 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6545);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6543);
   }
-  /* parser/parser.nit:6546 */
+  /* parser/parser.nit:6544 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:6547 */
+  /* parser/parser.nit:6545 */
   fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
-  /* parser/parser.nit:6554 */
+  /* parser/parser.nit:6552 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6554);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6552);
   }
-  /* parser/parser.nit:6556 */
+  /* parser/parser.nit:6554 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6556);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6554);
   }
-  /* parser/parser.nit:6557 */
+  /* parser/parser.nit:6555 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
   fra.me.REG[15] = fra.me.REG[4];
-  /* parser/parser.nit:6559 */
+  /* parser/parser.nit:6557 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6559);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6557);
   }
-  /* parser/parser.nit:6560 */
+  /* parser/parser.nit:6558 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[7], fra.me.REG[5], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
-  /* parser/parser.nit:6573 */
+  /* parser/parser.nit:6571 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6574 */
+  /* parser/parser.nit:6572 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6574);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6572);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20791,7 +20760,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 = 6579;
+  fra.me.line = 6577;
   fra.me.meth = LOCATE_parser___ReduceAction121___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -20811,89 +20780,89 @@ void parser___ReduceAction121___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:6581 */
+  /* parser/parser.nit:6579 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6582 */
+  /* parser/parser.nit:6580 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6583 */
+  /* parser/parser.nit:6581 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6584 */
+  /* parser/parser.nit:6582 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6585 */
+  /* parser/parser.nit:6583 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6586 */
+  /* parser/parser.nit:6584 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6587 */
+  /* parser/parser.nit:6585 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6588 */
+  /* parser/parser.nit:6586 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6589 */
+  /* parser/parser.nit:6587 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6590 */
+  /* parser/parser.nit:6588 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6591 */
+  /* parser/parser.nit:6589 */
   fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6592 */
+  /* parser/parser.nit:6590 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6593 */
+  /* parser/parser.nit:6591 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6595 */
+  /* parser/parser.nit:6593 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6595);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6593);
   }
-  /* parser/parser.nit:6597 */
+  /* parser/parser.nit:6595 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6597);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6595);
   }
-  /* parser/parser.nit:6599 */
+  /* parser/parser.nit:6597 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6599);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6597);
   }
-  /* parser/parser.nit:6601 */
+  /* parser/parser.nit:6599 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6601);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6599);
   }
-  /* parser/parser.nit:6603 */
+  /* parser/parser.nit:6601 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6603);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6601);
   }
-  /* parser/parser.nit:6604 */
+  /* parser/parser.nit:6602 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* parser/parser.nit:6606 */
+  /* parser/parser.nit:6604 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6606);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6604);
   }
-  /* parser/parser.nit:6607 */
+  /* parser/parser.nit:6605 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:6609 */
+  /* parser/parser.nit:6607 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6609);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6607);
   }
-  /* parser/parser.nit:6610 */
+  /* parser/parser.nit:6608 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
-  /* parser/parser.nit:6623 */
+  /* parser/parser.nit:6621 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6624 */
+  /* parser/parser.nit:6622 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6624);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6622);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20908,7 +20877,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 = 6629;
+  fra.me.line = 6627;
   fra.me.meth = LOCATE_parser___ReduceAction122___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -20929,97 +20898,97 @@ void parser___ReduceAction122___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:6631 */
+  /* parser/parser.nit:6629 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6632 */
+  /* parser/parser.nit:6630 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6633 */
+  /* parser/parser.nit:6631 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6634 */
+  /* parser/parser.nit:6632 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6635 */
+  /* parser/parser.nit:6633 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6636 */
+  /* parser/parser.nit:6634 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6637 */
+  /* parser/parser.nit:6635 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6638 */
+  /* parser/parser.nit:6636 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6639 */
+  /* parser/parser.nit:6637 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6640 */
+  /* parser/parser.nit:6638 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6641 */
+  /* parser/parser.nit:6639 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6642 */
+  /* parser/parser.nit:6640 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6643 */
+  /* parser/parser.nit:6641 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6644 */
+  /* parser/parser.nit:6642 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6646 */
+  /* parser/parser.nit:6644 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6644);
+  }
+  /* parser/parser.nit:6646 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6646);
   }
   /* parser/parser.nit:6648 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6648);
   }
   /* parser/parser.nit:6650 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6650);
   }
   /* parser/parser.nit:6652 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6652);
   }
   /* parser/parser.nit:6654 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6654);
-  }
-  /* parser/parser.nit:6656 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6656);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6654);
   }
-  /* parser/parser.nit:6657 */
+  /* parser/parser.nit:6655 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
   fra.me.REG[12] = fra.me.REG[5];
-  /* parser/parser.nit:6659 */
+  /* parser/parser.nit:6657 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6659);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6657);
   }
-  /* parser/parser.nit:6660 */
+  /* parser/parser.nit:6658 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6662 */
+  /* parser/parser.nit:6660 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6662);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6660);
   }
-  /* parser/parser.nit:6663 */
+  /* parser/parser.nit:6661 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6676 */
+  /* parser/parser.nit:6674 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6677 */
+  /* parser/parser.nit:6675 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6677);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6675);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21034,7 +21003,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 = 6682;
+  fra.me.line = 6680;
   fra.me.meth = LOCATE_parser___ReduceAction123___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -21055,100 +21024,100 @@ void parser___ReduceAction123___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:6684 */
+  /* parser/parser.nit:6682 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6685 */
+  /* parser/parser.nit:6683 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6686 */
+  /* parser/parser.nit:6684 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6687 */
+  /* parser/parser.nit:6685 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6688 */
+  /* parser/parser.nit:6686 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6689 */
+  /* parser/parser.nit:6687 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6690 */
+  /* parser/parser.nit:6688 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6691 */
+  /* parser/parser.nit:6689 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6692 */
+  /* parser/parser.nit:6690 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6693 */
+  /* parser/parser.nit:6691 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6694 */
+  /* parser/parser.nit:6692 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6695 */
+  /* parser/parser.nit:6693 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6696 */
+  /* parser/parser.nit:6694 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6697 */
+  /* parser/parser.nit:6695 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6699 */
+  /* parser/parser.nit:6697 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6699);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6697);
   }
-  /* parser/parser.nit:6701 */
+  /* parser/parser.nit:6699 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6701);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6699);
   }
-  /* parser/parser.nit:6703 */
+  /* parser/parser.nit:6701 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6703);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6701);
   }
-  /* parser/parser.nit:6705 */
+  /* parser/parser.nit:6703 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6705);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6703);
   }
-  /* parser/parser.nit:6707 */
+  /* parser/parser.nit:6705 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6707);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6705);
   }
-  /* parser/parser.nit:6708 */
+  /* parser/parser.nit:6706 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
   fra.me.REG[11] = fra.me.REG[6];
-  /* parser/parser.nit:6710 */
+  /* parser/parser.nit:6708 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6710);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6708);
   }
-  /* parser/parser.nit:6711 */
+  /* parser/parser.nit:6709 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
   fra.me.REG[12] = fra.me.REG[5];
-  /* parser/parser.nit:6713 */
+  /* parser/parser.nit:6711 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6713);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6711);
   }
-  /* parser/parser.nit:6714 */
+  /* parser/parser.nit:6712 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6716 */
+  /* parser/parser.nit:6714 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6716);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6714);
   }
-  /* parser/parser.nit:6717 */
+  /* parser/parser.nit:6715 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6730 */
+  /* parser/parser.nit:6728 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6731 */
+  /* parser/parser.nit:6729 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6731);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6729);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21163,7 +21132,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 = 6736;
+  fra.me.line = 6734;
   fra.me.meth = LOCATE_parser___ReduceAction124___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -21185,108 +21154,108 @@ void parser___ReduceAction124___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6738 */
+  /* parser/parser.nit:6736 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6739 */
+  /* parser/parser.nit:6737 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6740 */
+  /* parser/parser.nit:6738 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6741 */
+  /* parser/parser.nit:6739 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6742 */
+  /* parser/parser.nit:6740 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6743 */
+  /* parser/parser.nit:6741 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6744 */
+  /* parser/parser.nit:6742 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6745 */
+  /* parser/parser.nit:6743 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6746 */
+  /* parser/parser.nit:6744 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6747 */
+  /* parser/parser.nit:6745 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6748 */
+  /* parser/parser.nit:6746 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6749 */
+  /* parser/parser.nit:6747 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6750 */
+  /* parser/parser.nit:6748 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6751 */
+  /* parser/parser.nit:6749 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6752 */
+  /* parser/parser.nit:6750 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6754 */
+  /* parser/parser.nit:6752 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6752);
+  }
+  /* parser/parser.nit:6754 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6754);
   }
   /* parser/parser.nit:6756 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6756);
   }
   /* parser/parser.nit:6758 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6758);
   }
   /* parser/parser.nit:6760 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6760);
   }
   /* parser/parser.nit:6762 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6762);
-  }
-  /* parser/parser.nit:6764 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6764);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6762);
   }
-  /* parser/parser.nit:6765 */
+  /* parser/parser.nit:6763 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
   fra.me.REG[12] = fra.me.REG[6];
-  /* parser/parser.nit:6767 */
+  /* parser/parser.nit:6765 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6767);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6765);
   }
-  /* parser/parser.nit:6768 */
+  /* parser/parser.nit:6766 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:6770 */
+  /* parser/parser.nit:6768 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6770);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6768);
   }
-  /* parser/parser.nit:6771 */
+  /* parser/parser.nit:6769 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6773 */
+  /* parser/parser.nit:6771 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6773);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6771);
   }
-  /* parser/parser.nit:6774 */
+  /* parser/parser.nit:6772 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6787 */
+  /* parser/parser.nit:6785 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6788 */
+  /* parser/parser.nit:6786 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6788);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6786);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21301,7 +21270,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 = 6793;
+  fra.me.line = 6791;
   fra.me.meth = LOCATE_parser___ReduceAction125___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -21323,104 +21292,104 @@ void parser___ReduceAction125___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6795 */
+  /* parser/parser.nit:6793 */
   fra.me.REG[2] = NIT_NULL;
-  /* 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] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6798 */
+  /* parser/parser.nit:6796 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6799 */
+  /* parser/parser.nit:6797 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6800 */
+  /* parser/parser.nit:6798 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6801 */
+  /* parser/parser.nit:6799 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6802 */
+  /* parser/parser.nit:6800 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6803 */
+  /* parser/parser.nit:6801 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6804 */
+  /* parser/parser.nit:6802 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6805 */
+  /* parser/parser.nit:6803 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6806 */
+  /* parser/parser.nit:6804 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6807 */
+  /* parser/parser.nit:6805 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6808 */
+  /* parser/parser.nit:6806 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6810 */
+  /* parser/parser.nit:6808 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6810);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6808);
   }
-  /* parser/parser.nit:6812 */
+  /* parser/parser.nit:6810 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6810);
   }
-  /* parser/parser.nit:6814 */
+  /* parser/parser.nit:6812 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6814);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6812);
   }
-  /* parser/parser.nit:6816 */
+  /* parser/parser.nit:6814 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6816);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6814);
   }
-  /* parser/parser.nit:6817 */
+  /* parser/parser.nit:6815 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6819 */
+  /* parser/parser.nit:6817 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6819);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6817);
   }
-  /* parser/parser.nit:6820 */
+  /* parser/parser.nit:6818 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[6]);
   fra.me.REG[14] = fra.me.REG[6];
-  /* parser/parser.nit:6821 */
+  /* parser/parser.nit:6819 */
   fra.me.REG[14] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[14], NIT_NULL);
-  /* parser/parser.nit:6828 */
+  /* parser/parser.nit:6826 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6828);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6826);
   }
-  /* parser/parser.nit:6829 */
+  /* parser/parser.nit:6827 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
   fra.me.REG[12] = fra.me.REG[5];
-  /* parser/parser.nit:6831 */
+  /* parser/parser.nit:6829 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6831);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6829);
   }
-  /* parser/parser.nit:6832 */
+  /* parser/parser.nit:6830 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:6834 */
+  /* parser/parser.nit:6832 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6834);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6832);
   }
-  /* parser/parser.nit:6835 */
+  /* parser/parser.nit:6833 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[14], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:6848 */
+  /* parser/parser.nit:6846 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6849 */
+  /* parser/parser.nit:6847 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6849);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6847);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21435,7 +21404,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 = 6854;
+  fra.me.line = 6852;
   fra.me.meth = LOCATE_parser___ReduceAction126___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -21458,112 +21427,112 @@ void parser___ReduceAction126___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6856 */
+  /* parser/parser.nit:6854 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6857 */
+  /* parser/parser.nit:6855 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6858 */
+  /* parser/parser.nit:6856 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6859 */
+  /* parser/parser.nit:6857 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6860 */
+  /* parser/parser.nit:6858 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6861 */
+  /* parser/parser.nit:6859 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6862 */
+  /* parser/parser.nit:6860 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6863 */
+  /* parser/parser.nit:6861 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6864 */
+  /* parser/parser.nit:6862 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6865 */
+  /* parser/parser.nit:6863 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6866 */
+  /* parser/parser.nit:6864 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6867 */
+  /* parser/parser.nit:6865 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6868 */
+  /* parser/parser.nit:6866 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6869 */
+  /* parser/parser.nit:6867 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6870 */
+  /* parser/parser.nit:6868 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6872 */
+  /* parser/parser.nit:6870 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6872);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6870);
   }
-  /* parser/parser.nit:6874 */
+  /* parser/parser.nit:6872 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6874);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6872);
   }
-  /* parser/parser.nit:6876 */
+  /* parser/parser.nit:6874 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6876);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6874);
   }
-  /* parser/parser.nit:6878 */
+  /* parser/parser.nit:6876 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6878);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6876);
   }
-  /* parser/parser.nit:6880 */
+  /* parser/parser.nit:6878 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6880);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6878);
   }
-  /* parser/parser.nit:6881 */
+  /* parser/parser.nit:6879 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6883 */
+  /* parser/parser.nit:6881 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6883);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6881);
   }
-  /* parser/parser.nit:6884 */
+  /* parser/parser.nit:6882 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[6]);
   fra.me.REG[15] = fra.me.REG[6];
-  /* parser/parser.nit:6885 */
+  /* parser/parser.nit:6883 */
   fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
-  /* parser/parser.nit:6892 */
+  /* parser/parser.nit:6890 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6892);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6890);
   }
-  /* parser/parser.nit:6893 */
+  /* parser/parser.nit:6891 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:6895 */
+  /* parser/parser.nit:6893 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6895);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6893);
   }
-  /* parser/parser.nit:6896 */
+  /* parser/parser.nit:6894 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6898 */
+  /* parser/parser.nit:6896 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6898);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6896);
   }
-  /* parser/parser.nit:6899 */
+  /* parser/parser.nit:6897 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[15], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6912 */
+  /* parser/parser.nit:6910 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6913 */
+  /* parser/parser.nit:6911 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6913);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6911);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21578,7 +21547,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 = 6918;
+  fra.me.line = 6916;
   fra.me.meth = LOCATE_parser___ReduceAction127___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -21600,115 +21569,115 @@ void parser___ReduceAction127___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6920 */
+  /* parser/parser.nit:6918 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6921 */
+  /* parser/parser.nit:6919 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6922 */
+  /* parser/parser.nit:6920 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6923 */
+  /* parser/parser.nit:6921 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6924 */
+  /* parser/parser.nit:6922 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6925 */
+  /* parser/parser.nit:6923 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6926 */
+  /* parser/parser.nit:6924 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6927 */
+  /* parser/parser.nit:6925 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6928 */
+  /* parser/parser.nit:6926 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6929 */
+  /* parser/parser.nit:6927 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6930 */
+  /* parser/parser.nit:6928 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6931 */
+  /* parser/parser.nit:6929 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6932 */
+  /* parser/parser.nit:6930 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6933 */
+  /* parser/parser.nit:6931 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6934 */
+  /* parser/parser.nit:6932 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6936 */
+  /* parser/parser.nit:6934 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6936);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6934);
   }
-  /* parser/parser.nit:6938 */
+  /* parser/parser.nit:6936 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6938);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6936);
   }
-  /* parser/parser.nit:6940 */
+  /* parser/parser.nit:6938 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6940);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6938);
   }
-  /* parser/parser.nit:6942 */
+  /* parser/parser.nit:6940 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6942);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6940);
   }
-  /* parser/parser.nit:6944 */
+  /* parser/parser.nit:6942 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6944);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6942);
   }
-  /* parser/parser.nit:6945 */
+  /* parser/parser.nit:6943 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
   fra.me.REG[12] = fra.me.REG[7];
-  /* parser/parser.nit:6946 */
+  /* parser/parser.nit:6944 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6948 */
+  /* parser/parser.nit:6946 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6948);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6946);
   }
-  /* parser/parser.nit:6949 */
+  /* parser/parser.nit:6947 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:6950 */
+  /* parser/parser.nit:6948 */
   fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
-  /* parser/parser.nit:6957 */
+  /* parser/parser.nit:6955 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6957);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6955);
   }
-  /* parser/parser.nit:6958 */
+  /* parser/parser.nit:6956 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:6960 */
+  /* parser/parser.nit:6958 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6960);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6958);
   }
-  /* parser/parser.nit:6961 */
+  /* parser/parser.nit:6959 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:6963 */
+  /* parser/parser.nit:6961 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6963);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6961);
   }
-  /* parser/parser.nit:6964 */
+  /* parser/parser.nit:6962 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[7], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:6977 */
+  /* parser/parser.nit:6975 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6978 */
+  /* parser/parser.nit:6976 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6978);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6976);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21723,7 +21692,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 = 6983;
+  fra.me.line = 6981;
   fra.me.meth = LOCATE_parser___ReduceAction128___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -21746,123 +21715,123 @@ void parser___ReduceAction128___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:6985 */
+  /* parser/parser.nit:6983 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6986 */
+  /* parser/parser.nit:6984 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6987 */
+  /* parser/parser.nit:6985 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6988 */
+  /* parser/parser.nit:6986 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6989 */
+  /* parser/parser.nit:6987 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6990 */
+  /* parser/parser.nit:6988 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6991 */
+  /* parser/parser.nit:6989 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6992 */
+  /* parser/parser.nit:6990 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6993 */
+  /* parser/parser.nit:6991 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6994 */
+  /* parser/parser.nit:6992 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6995 */
+  /* parser/parser.nit:6993 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6996 */
+  /* parser/parser.nit:6994 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6997 */
+  /* parser/parser.nit:6995 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6998 */
+  /* parser/parser.nit:6996 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6999 */
+  /* parser/parser.nit:6997 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7000 */
+  /* parser/parser.nit:6998 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7002 */
+  /* parser/parser.nit:7000 */
   REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7000);
+  }
+  /* parser/parser.nit:7002 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7002);
   }
   /* parser/parser.nit:7004 */
-  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7004);
   }
   /* parser/parser.nit:7006 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7006);
   }
   /* parser/parser.nit:7008 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7008);
   }
   /* parser/parser.nit:7010 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7010);
-  }
-  /* parser/parser.nit:7012 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7012);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7010);
   }
-  /* parser/parser.nit:7013 */
+  /* parser/parser.nit:7011 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
   fra.me.REG[13] = fra.me.REG[7];
-  /* parser/parser.nit:7014 */
+  /* parser/parser.nit:7012 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7016 */
+  /* parser/parser.nit:7014 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7016);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7014);
   }
-  /* parser/parser.nit:7017 */
+  /* parser/parser.nit:7015 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:7018 */
+  /* parser/parser.nit:7016 */
   fra.me.REG[7] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[7], NIT_NULL);
-  /* parser/parser.nit:7025 */
+  /* parser/parser.nit:7023 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7025);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7023);
   }
-  /* parser/parser.nit:7026 */
+  /* parser/parser.nit:7024 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:7028 */
+  /* parser/parser.nit:7026 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7028);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7026);
   }
-  /* parser/parser.nit:7029 */
+  /* parser/parser.nit:7027 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
   fra.me.REG[15] = fra.me.REG[4];
-  /* parser/parser.nit:7031 */
+  /* parser/parser.nit:7029 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7031);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7029);
   }
-  /* parser/parser.nit:7032 */
+  /* parser/parser.nit:7030 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[7], NIT_NULL, fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
-  /* parser/parser.nit:7045 */
+  /* parser/parser.nit:7043 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7046 */
+  /* parser/parser.nit:7044 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7046);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7044);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21877,7 +21846,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 = 7051;
+  fra.me.line = 7049;
   fra.me.meth = LOCATE_parser___ReduceAction129___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -21898,97 +21867,97 @@ void parser___ReduceAction129___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:7053 */
+  /* parser/parser.nit:7051 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7054 */
+  /* parser/parser.nit:7052 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7055 */
+  /* parser/parser.nit:7053 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7056 */
+  /* parser/parser.nit:7054 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7057 */
+  /* parser/parser.nit:7055 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7058 */
+  /* parser/parser.nit:7056 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7059 */
+  /* parser/parser.nit:7057 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7060 */
+  /* parser/parser.nit:7058 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7061 */
+  /* parser/parser.nit:7059 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7062 */
+  /* parser/parser.nit:7060 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7063 */
+  /* parser/parser.nit:7061 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7064 */
+  /* parser/parser.nit:7062 */
   fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7065 */
+  /* parser/parser.nit:7063 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7066 */
+  /* parser/parser.nit:7064 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7068 */
+  /* parser/parser.nit:7066 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7066);
+  }
+  /* parser/parser.nit:7068 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7068);
   }
   /* parser/parser.nit:7070 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7070);
   }
   /* parser/parser.nit:7072 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7072);
   }
   /* parser/parser.nit:7074 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7074);
   }
   /* parser/parser.nit:7076 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7076);
-  }
-  /* parser/parser.nit:7078 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7078);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7076);
   }
-  /* parser/parser.nit:7079 */
+  /* parser/parser.nit:7077 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
   fra.me.REG[12] = fra.me.REG[5];
-  /* parser/parser.nit:7081 */
+  /* parser/parser.nit:7079 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7081);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7079);
   }
-  /* parser/parser.nit:7082 */
+  /* parser/parser.nit:7080 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
   fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:7084 */
+  /* parser/parser.nit:7082 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7084);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7082);
   }
-  /* parser/parser.nit:7085 */
+  /* parser/parser.nit:7083 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[6], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
-  /* parser/parser.nit:7098 */
+  /* parser/parser.nit:7096 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7099 */
+  /* parser/parser.nit:7097 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7099);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7097);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22003,7 +21972,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 = 7104;
+  fra.me.line = 7102;
   fra.me.meth = LOCATE_parser___ReduceAction130___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -22025,105 +21994,105 @@ void parser___ReduceAction130___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:7106 */
+  /* parser/parser.nit:7104 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7107 */
+  /* parser/parser.nit:7105 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7108 */
+  /* parser/parser.nit:7106 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7109 */
+  /* parser/parser.nit:7107 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7110 */
+  /* parser/parser.nit:7108 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7111 */
+  /* parser/parser.nit:7109 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7112 */
+  /* parser/parser.nit:7110 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7113 */
+  /* parser/parser.nit:7111 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7114 */
+  /* parser/parser.nit:7112 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7115 */
+  /* parser/parser.nit:7113 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7116 */
+  /* parser/parser.nit:7114 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7117 */
+  /* parser/parser.nit:7115 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7118 */
+  /* parser/parser.nit:7116 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7119 */
+  /* parser/parser.nit:7117 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7120 */
+  /* parser/parser.nit:7118 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7122 */
+  /* parser/parser.nit:7120 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7120);
+  }
+  /* parser/parser.nit:7122 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7122);
   }
   /* parser/parser.nit:7124 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7124);
   }
   /* parser/parser.nit:7126 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7126);
   }
   /* parser/parser.nit:7128 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7128);
   }
   /* parser/parser.nit:7130 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7130);
   }
   /* parser/parser.nit:7132 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7132);
-  }
-  /* parser/parser.nit:7134 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7132);
   }
-  /* parser/parser.nit:7135 */
+  /* parser/parser.nit:7133 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:7137 */
+  /* parser/parser.nit:7135 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7137);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7135);
   }
-  /* parser/parser.nit:7138 */
+  /* parser/parser.nit:7136 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:7140 */
+  /* parser/parser.nit:7138 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7140);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7138);
   }
-  /* parser/parser.nit:7141 */
+  /* parser/parser.nit:7139 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:7154 */
+  /* parser/parser.nit:7152 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7155 */
+  /* parser/parser.nit:7153 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7155);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7153);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22138,7 +22107,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 = 7160;
+  fra.me.line = 7158;
   fra.me.meth = LOCATE_parser___ReduceAction131___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 15;
@@ -22160,108 +22129,108 @@ void parser___ReduceAction131___action(val_t p0, val_t p1){
   fra.me.REG[14] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:7162 */
+  /* parser/parser.nit:7160 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7163 */
+  /* parser/parser.nit:7161 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7164 */
+  /* parser/parser.nit:7162 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7165 */
+  /* parser/parser.nit:7163 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7166 */
+  /* parser/parser.nit:7164 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7167 */
+  /* parser/parser.nit:7165 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7168 */
+  /* parser/parser.nit:7166 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7169 */
+  /* parser/parser.nit:7167 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7170 */
+  /* parser/parser.nit:7168 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7171 */
+  /* parser/parser.nit:7169 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7172 */
+  /* parser/parser.nit:7170 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7173 */
+  /* parser/parser.nit:7171 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7174 */
+  /* parser/parser.nit:7172 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7175 */
+  /* parser/parser.nit:7173 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7176 */
+  /* parser/parser.nit:7174 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7178 */
+  /* parser/parser.nit:7176 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7178);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7176);
   }
-  /* parser/parser.nit:7180 */
+  /* parser/parser.nit:7178 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7180);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7178);
   }
-  /* parser/parser.nit:7182 */
+  /* parser/parser.nit:7180 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7182);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7180);
   }
-  /* parser/parser.nit:7184 */
+  /* parser/parser.nit:7182 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7184);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7182);
   }
-  /* parser/parser.nit:7186 */
+  /* parser/parser.nit:7184 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7186);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7184);
   }
-  /* parser/parser.nit:7187 */
+  /* parser/parser.nit:7185 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
   fra.me.REG[12] = fra.me.REG[7];
-  /* parser/parser.nit:7189 */
+  /* parser/parser.nit:7187 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7189);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7187);
   }
-  /* parser/parser.nit:7191 */
+  /* parser/parser.nit:7189 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7191);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7189);
   }
-  /* parser/parser.nit:7192 */
+  /* parser/parser.nit:7190 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:7194 */
+  /* parser/parser.nit:7192 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7194);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7192);
   }
-  /* parser/parser.nit:7195 */
+  /* parser/parser.nit:7193 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:7197 */
+  /* parser/parser.nit:7195 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7197);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7195);
   }
-  /* parser/parser.nit:7198 */
+  /* parser/parser.nit:7196 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], NIT_NULL, fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit: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___ReduceAction____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___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22276,7 +22245,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 = 7217;
+  fra.me.line = 7215;
   fra.me.meth = LOCATE_parser___ReduceAction132___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -22299,116 +22268,116 @@ void parser___ReduceAction132___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:7219 */
+  /* parser/parser.nit:7217 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7220 */
+  /* parser/parser.nit:7218 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7221 */
+  /* parser/parser.nit:7219 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7222 */
+  /* parser/parser.nit:7220 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7223 */
+  /* parser/parser.nit:7221 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7224 */
+  /* parser/parser.nit:7222 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7225 */
+  /* parser/parser.nit:7223 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7226 */
+  /* parser/parser.nit:7224 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7227 */
+  /* parser/parser.nit:7225 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7228 */
+  /* parser/parser.nit:7226 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7229 */
+  /* parser/parser.nit:7227 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7230 */
+  /* parser/parser.nit:7228 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7231 */
+  /* parser/parser.nit:7229 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7232 */
+  /* parser/parser.nit:7230 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7233 */
+  /* parser/parser.nit:7231 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7234 */
+  /* parser/parser.nit:7232 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7236 */
+  /* parser/parser.nit:7234 */
   REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7234);
+  }
+  /* parser/parser.nit:7236 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7236);
   }
   /* parser/parser.nit:7238 */
-  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7238);
   }
   /* parser/parser.nit:7240 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7240);
   }
   /* parser/parser.nit:7242 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7242);
   }
   /* parser/parser.nit:7244 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7244);
-  }
-  /* parser/parser.nit:7246 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7246);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7244);
   }
-  /* parser/parser.nit:7247 */
+  /* parser/parser.nit:7245 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
   fra.me.REG[13] = fra.me.REG[7];
-  /* parser/parser.nit:7249 */
+  /* parser/parser.nit:7247 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7249);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7247);
   }
-  /* parser/parser.nit:7251 */
+  /* parser/parser.nit:7249 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7251);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7249);
   }
-  /* parser/parser.nit:7252 */
+  /* parser/parser.nit:7250 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:7254 */
+  /* parser/parser.nit:7252 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7254);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7252);
   }
-  /* parser/parser.nit:7255 */
+  /* parser/parser.nit:7253 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
   fra.me.REG[15] = fra.me.REG[4];
-  /* parser/parser.nit:7257 */
+  /* parser/parser.nit:7255 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7257);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7255);
   }
-  /* parser/parser.nit:7258 */
+  /* parser/parser.nit:7256 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], NIT_NULL, fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
-  /* parser/parser.nit:7271 */
+  /* parser/parser.nit:7269 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7272 */
+  /* parser/parser.nit:7270 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7272);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7270);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22423,7 +22392,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 = 7277;
+  fra.me.line = 7275;
   fra.me.meth = LOCATE_parser___ReduceAction133___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -22446,112 +22415,112 @@ void parser___ReduceAction133___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:7279 */
+  /* parser/parser.nit:7277 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7280 */
+  /* parser/parser.nit:7278 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7281 */
+  /* parser/parser.nit:7279 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7282 */
+  /* parser/parser.nit:7280 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7283 */
+  /* parser/parser.nit:7281 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7284 */
+  /* parser/parser.nit:7282 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7285 */
+  /* parser/parser.nit:7283 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7286 */
+  /* parser/parser.nit:7284 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7287 */
+  /* parser/parser.nit:7285 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7288 */
+  /* parser/parser.nit:7286 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7289 */
+  /* parser/parser.nit:7287 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7290 */
+  /* parser/parser.nit:7288 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7291 */
+  /* parser/parser.nit:7289 */
   fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7292 */
+  /* parser/parser.nit:7290 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7293 */
+  /* parser/parser.nit:7291 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7295 */
+  /* parser/parser.nit:7293 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7295);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7293);
   }
-  /* parser/parser.nit:7297 */
+  /* parser/parser.nit:7295 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7297);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7295);
   }
-  /* parser/parser.nit:7299 */
+  /* parser/parser.nit:7297 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7299);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7297);
   }
-  /* parser/parser.nit:7301 */
+  /* parser/parser.nit:7299 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7301);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7299);
   }
-  /* parser/parser.nit:7302 */
+  /* parser/parser.nit:7300 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7304 */
+  /* parser/parser.nit:7302 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7304);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7302);
   }
-  /* parser/parser.nit:7305 */
+  /* parser/parser.nit:7303 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[7]);
   fra.me.REG[15] = fra.me.REG[7];
-  /* parser/parser.nit:7306 */
+  /* parser/parser.nit:7304 */
   fra.me.REG[15] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[15], NIT_NULL);
-  /* parser/parser.nit:7313 */
+  /* parser/parser.nit:7311 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7313);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7311);
   }
-  /* parser/parser.nit:7315 */
+  /* parser/parser.nit:7313 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7315);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7313);
   }
-  /* parser/parser.nit:7316 */
+  /* parser/parser.nit:7314 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
   fra.me.REG[13] = fra.me.REG[5];
-  /* parser/parser.nit:7318 */
+  /* parser/parser.nit:7316 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7318);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7316);
   }
-  /* parser/parser.nit:7319 */
+  /* parser/parser.nit:7317 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
   fra.me.REG[14] = fra.me.REG[4];
-  /* parser/parser.nit:7321 */
+  /* parser/parser.nit:7319 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7321);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7319);
   }
-  /* parser/parser.nit:7322 */
+  /* parser/parser.nit:7320 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[15], fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
-  /* parser/parser.nit:7335 */
+  /* parser/parser.nit:7333 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7336 */
+  /* parser/parser.nit:7334 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7336);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7334);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22566,7 +22535,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 = 7341;
+  fra.me.line = 7339;
   fra.me.meth = LOCATE_parser___ReduceAction134___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 17;
@@ -22590,120 +22559,120 @@ void parser___ReduceAction134___action(val_t p0, val_t p1){
   fra.me.REG[16] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:7343 */
+  /* parser/parser.nit:7341 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7344 */
+  /* parser/parser.nit:7342 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7345 */
+  /* parser/parser.nit:7343 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7346 */
+  /* parser/parser.nit:7344 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7347 */
+  /* parser/parser.nit:7345 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7348 */
+  /* parser/parser.nit:7346 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7349 */
+  /* parser/parser.nit:7347 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7350 */
+  /* parser/parser.nit:7348 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7351 */
+  /* parser/parser.nit:7349 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7352 */
+  /* parser/parser.nit:7350 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7353 */
+  /* parser/parser.nit:7351 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7354 */
+  /* parser/parser.nit:7352 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7355 */
+  /* parser/parser.nit:7353 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7356 */
+  /* parser/parser.nit:7354 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7357 */
+  /* parser/parser.nit:7355 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7358 */
+  /* parser/parser.nit:7356 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7360 */
+  /* parser/parser.nit:7358 */
   REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7360);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7358);
   }
-  /* parser/parser.nit:7362 */
+  /* parser/parser.nit:7360 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7362);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7360);
   }
-  /* parser/parser.nit:7364 */
+  /* parser/parser.nit:7362 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7364);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7362);
   }
-  /* parser/parser.nit:7366 */
+  /* parser/parser.nit:7364 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7366);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7364);
   }
-  /* parser/parser.nit:7368 */
+  /* parser/parser.nit:7366 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7368);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7366);
   }
-  /* parser/parser.nit:7369 */
+  /* parser/parser.nit:7367 */
   fra.me.REG[16] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7371 */
+  /* parser/parser.nit:7369 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7371);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7369);
   }
-  /* parser/parser.nit:7372 */
+  /* parser/parser.nit:7370 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[16], fra.me.REG[7]);
   fra.me.REG[16] = fra.me.REG[7];
-  /* parser/parser.nit:7373 */
+  /* parser/parser.nit:7371 */
   fra.me.REG[16] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[16], NIT_NULL);
-  /* parser/parser.nit:7380 */
+  /* parser/parser.nit:7378 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7380);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7378);
   }
-  /* parser/parser.nit:7382 */
+  /* parser/parser.nit:7380 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7382);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7380);
   }
-  /* parser/parser.nit:7383 */
+  /* parser/parser.nit:7381 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:7385 */
+  /* parser/parser.nit:7383 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7385);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7383);
   }
-  /* parser/parser.nit:7386 */
+  /* parser/parser.nit:7384 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
   fra.me.REG[15] = fra.me.REG[4];
-  /* parser/parser.nit:7388 */
+  /* parser/parser.nit:7386 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7388);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7386);
   }
-  /* parser/parser.nit:7389 */
+  /* parser/parser.nit:7387 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[16], fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
-  /* parser/parser.nit:7402 */
+  /* parser/parser.nit:7400 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7403 */
+  /* parser/parser.nit:7401 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7403);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7401);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22718,7 +22687,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 = 7408;
+  fra.me.line = 7406;
   fra.me.meth = LOCATE_parser___ReduceAction135___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -22741,123 +22710,123 @@ void parser___ReduceAction135___action(val_t p0, val_t p1){
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser.nit:7410 */
+  /* parser/parser.nit:7408 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7411 */
+  /* parser/parser.nit:7409 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7412 */
+  /* parser/parser.nit:7410 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7413 */
+  /* parser/parser.nit:7411 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7414 */
+  /* parser/parser.nit:7412 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7415 */
+  /* parser/parser.nit:7413 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7416 */
+  /* parser/parser.nit:7414 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7417 */
+  /* parser/parser.nit:7415 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7418 */
+  /* parser/parser.nit:7416 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7419 */
+  /* parser/parser.nit:7417 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7420 */
+  /* parser/parser.nit:7418 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7421 */
+  /* parser/parser.nit:7419 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7422 */
+  /* parser/parser.nit:7420 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7423 */
+  /* parser/parser.nit:7421 */
   fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7424 */
+  /* parser/parser.nit:7422 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7425 */
+  /* parser/parser.nit:7423 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7427 */
+  /* parser/parser.nit:7425 */
   REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7427);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7425);
   }
-  /* parser/parser.nit:7429 */
+  /* parser/parser.nit:7427 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7429);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7427);
   }
-  /* parser/parser.nit:7431 */
+  /* parser/parser.nit:7429 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7431);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7429);
   }
-  /* parser/parser.nit:7433 */
+  /* parser/parser.nit:7431 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7433);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7431);
   }
-  /* parser/parser.nit:7435 */
+  /* parser/parser.nit:7433 */
   REGB0 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7435);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7433);
   }
-  /* parser/parser.nit:7436 */
+  /* parser/parser.nit:7434 */
   fra.me.REG[8] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[8]);
   fra.me.REG[13] = fra.me.REG[8];
-  /* parser/parser.nit:7437 */
+  /* parser/parser.nit:7435 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7439 */
+  /* parser/parser.nit:7437 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7439);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7437);
   }
-  /* parser/parser.nit:7440 */
+  /* parser/parser.nit:7438 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
   fra.me.REG[8] = fra.me.REG[7];
-  /* parser/parser.nit:7441 */
+  /* parser/parser.nit:7439 */
   fra.me.REG[8] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[8], NIT_NULL);
-  /* parser/parser.nit:7448 */
+  /* parser/parser.nit:7446 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7448);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7446);
   }
-  /* parser/parser.nit:7450 */
+  /* parser/parser.nit:7448 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7450);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7448);
   }
-  /* parser/parser.nit:7451 */
+  /* parser/parser.nit:7449 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
   fra.me.REG[14] = fra.me.REG[5];
-  /* parser/parser.nit:7453 */
+  /* parser/parser.nit:7451 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7453);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7451);
   }
-  /* parser/parser.nit:7454 */
+  /* parser/parser.nit:7452 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
   fra.me.REG[15] = fra.me.REG[4];
-  /* parser/parser.nit:7456 */
+  /* parser/parser.nit:7454 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7456);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7454);
   }
-  /* parser/parser.nit:7457 */
+  /* parser/parser.nit:7455 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], NIT_NULL, fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[13], fra.me.REG[8], fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
-  /* parser/parser.nit:7470 */
+  /* parser/parser.nit:7468 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7471 */
+  /* parser/parser.nit:7469 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7471);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7469);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22872,7 +22841,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 = 7476;
+  fra.me.line = 7474;
   fra.me.meth = LOCATE_parser___ReduceAction136___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 17;
@@ -22896,131 +22865,131 @@ void parser___ReduceAction136___action(val_t p0, val_t p1){
   fra.me.REG[16] = 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:7480 */
+  /* parser/parser.nit:7478 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7481 */
+  /* parser/parser.nit:7479 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7482 */
+  /* parser/parser.nit:7480 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7483 */
+  /* parser/parser.nit:7481 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7484 */
+  /* parser/parser.nit:7482 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7485 */
+  /* parser/parser.nit:7483 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7486 */
+  /* parser/parser.nit:7484 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7487 */
+  /* parser/parser.nit:7485 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7488 */
+  /* parser/parser.nit:7486 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7489 */
+  /* parser/parser.nit:7487 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7490 */
+  /* parser/parser.nit:7488 */
   fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7491 */
+  /* parser/parser.nit:7489 */
   fra.me.REG[13] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7492 */
+  /* parser/parser.nit:7490 */
   fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7493 */
+  /* parser/parser.nit:7491 */
   fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7494 */
+  /* parser/parser.nit:7492 */
   fra.me.REG[16] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7496 */
+  /* parser/parser.nit:7494 */
   REGB0 = TAG_Bool((fra.me.REG[13]==NIT_NULL) || VAL_ISA(fra.me.REG[13], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7494);
+  }
+  /* parser/parser.nit:7496 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7496);
   }
   /* parser/parser.nit:7498 */
-  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7498);
   }
   /* parser/parser.nit:7500 */
-  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7500);
   }
   /* parser/parser.nit:7502 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7502);
   }
   /* parser/parser.nit:7504 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7504);
-  }
-  /* parser/parser.nit:7506 */
   REGB0 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7506);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7504);
   }
-  /* parser/parser.nit:7507 */
+  /* parser/parser.nit:7505 */
   fra.me.REG[8] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[8]);
   fra.me.REG[14] = fra.me.REG[8];
-  /* parser/parser.nit:7508 */
+  /* parser/parser.nit:7506 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7510 */
+  /* parser/parser.nit:7508 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7510);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7508);
   }
-  /* parser/parser.nit:7511 */
+  /* parser/parser.nit:7509 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
   fra.me.REG[8] = fra.me.REG[7];
-  /* parser/parser.nit:7512 */
+  /* parser/parser.nit:7510 */
   fra.me.REG[8] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[8], NIT_NULL);
-  /* parser/parser.nit:7519 */
+  /* parser/parser.nit:7517 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7517);
   }
-  /* parser/parser.nit:7521 */
+  /* parser/parser.nit:7519 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7521);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7519);
   }
-  /* parser/parser.nit:7522 */
+  /* parser/parser.nit:7520 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[5]);
   fra.me.REG[15] = fra.me.REG[5];
-  /* parser/parser.nit:7524 */
+  /* parser/parser.nit:7522 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7524);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7522);
   }
-  /* parser/parser.nit:7525 */
+  /* parser/parser.nit:7523 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[16], fra.me.REG[4]);
   fra.me.REG[16] = fra.me.REG[4];
-  /* parser/parser.nit:7527 */
+  /* parser/parser.nit:7525 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7527);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7525);
   }
-  /* parser/parser.nit:7528 */
+  /* parser/parser.nit:7526 */
   fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[13], fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[14], fra.me.REG[8], fra.me.REG[6], fra.me.REG[15], fra.me.REG[16], fra.me.REG[3]);
-  /* parser/parser.nit:7541 */
+  /* parser/parser.nit:7539 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7542 */
+  /* parser/parser.nit:7540 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7542);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7540);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23035,7 +23004,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 = 7547;
+  fra.me.line = 7545;
   fra.me.meth = LOCATE_parser___ReduceAction137___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23046,25 +23015,25 @@ void parser___ReduceAction137___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:7549 */
+  /* parser/parser.nit:7547 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7550 */
+  /* parser/parser.nit:7548 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7552 */
+  /* parser/parser.nit:7550 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7552);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7550);
   }
-  /* parser/parser.nit:7553 */
+  /* parser/parser.nit:7551 */
   fra.me.REG[3] = NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[3]);
-  /* parser/parser.nit:7556 */
+  /* parser/parser.nit:7554 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7557 */
+  /* parser/parser.nit:7555 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7557);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7555);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23079,7 +23048,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 = 7562;
+  fra.me.line = 7560;
   fra.me.meth = LOCATE_parser___ReduceAction138___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23091,33 +23060,33 @@ void parser___ReduceAction138___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:7564 */
+  /* parser/parser.nit:7562 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7565 */
+  /* parser/parser.nit:7563 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7566 */
+  /* parser/parser.nit:7564 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7568 */
+  /* parser/parser.nit:7566 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwabstract, ID_parser___parser_nodes___TKwabstract)) /*cast nullable TKwabstract*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7568);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7566);
   }
-  /* parser/parser.nit:7570 */
+  /* parser/parser.nit:7568 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7570);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7568);
   }
-  /* parser/parser.nit:7571 */
+  /* parser/parser.nit:7569 */
   fra.me.REG[3] = NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7575 */
+  /* parser/parser.nit:7573 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7576 */
+  /* parser/parser.nit:7574 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7576);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7574);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23132,7 +23101,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 = 7581;
+  fra.me.line = 7579;
   fra.me.meth = LOCATE_parser___ReduceAction139___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23143,25 +23112,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:7583 */
+  /* parser/parser.nit:7581 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7584 */
+  /* parser/parser.nit:7582 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7586 */
+  /* parser/parser.nit:7584 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwinterface, ID_parser___parser_nodes___TKwinterface)) /*cast nullable TKwinterface*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7586);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7584);
   }
-  /* parser/parser.nit:7587 */
+  /* parser/parser.nit:7585 */
   fra.me.REG[3] = NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[3]);
-  /* parser/parser.nit:7590 */
+  /* parser/parser.nit:7588 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7591 */
+  /* parser/parser.nit:7589 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7591);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7589);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23176,7 +23145,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 = 7596;
+  fra.me.line = 7594;
   fra.me.meth = LOCATE_parser___ReduceAction140___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23187,25 +23156,25 @@ void parser___ReduceAction140___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:7598 */
+  /* parser/parser.nit:7596 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7599 */
+  /* parser/parser.nit:7597 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7601 */
+  /* parser/parser.nit:7599 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwenum, ID_parser___parser_nodes___TKwenum)) /*cast nullable TKwenum*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7601);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7599);
   }
-  /* parser/parser.nit:7602 */
+  /* parser/parser.nit:7600 */
   fra.me.REG[3] = NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[3]);
-  /* parser/parser.nit:7605 */
+  /* parser/parser.nit:7603 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7606 */
+  /* parser/parser.nit:7604 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7606);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7604);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23220,7 +23189,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 = 7611;
+  fra.me.line = 7609;
   fra.me.meth = LOCATE_parser___ReduceAction141___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23231,25 +23200,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:7613 */
+  /* parser/parser.nit:7611 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7614 */
+  /* parser/parser.nit:7612 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7616 */
+  /* parser/parser.nit:7614 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast nullable TKwextern*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7616);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7614);
   }
-  /* parser/parser.nit:7617 */
+  /* parser/parser.nit:7615 */
   fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:7621 */
+  /* parser/parser.nit:7619 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7622 */
+  /* parser/parser.nit:7620 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7622);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7620);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23264,7 +23233,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 = 7627;
+  fra.me.line = 7625;
   fra.me.meth = LOCATE_parser___ReduceAction142___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23276,33 +23245,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:7629 */
+  /* parser/parser.nit:7627 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7630 */
+  /* parser/parser.nit:7628 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7631 */
+  /* parser/parser.nit:7629 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7633 */
+  /* parser/parser.nit:7631 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast nullable TKwextern*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7633);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7631);
   }
-  /* parser/parser.nit:7635 */
+  /* parser/parser.nit:7633 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7635);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7633);
   }
-  /* parser/parser.nit:7636 */
+  /* parser/parser.nit:7634 */
   fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7640 */
+  /* parser/parser.nit:7638 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7641 */
+  /* parser/parser.nit:7639 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7641);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7639);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23318,7 +23287,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 = 7646;
+  fra.me.line = 7644;
   fra.me.meth = LOCATE_parser___ReduceAction143___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23330,21 +23299,21 @@ 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:7648 */
+  /* parser/parser.nit:7646 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7649 */
+  /* parser/parser.nit:7647 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7650 */
+  /* parser/parser.nit:7648 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7651 */
+  /* parser/parser.nit:7649 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7652 */
+  /* parser/parser.nit:7650 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7653 */
+  /* parser/parser.nit:7651 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7654 */
+  /* parser/parser.nit:7652 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7656 */
+  /* parser/parser.nit:7654 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -23359,16 +23328,16 @@ void parser___ReduceAction143___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:7657 */
+    /* parser/parser.nit:7655 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:7659 */
+  /* parser/parser.nit:7657 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:7660 */
+  /* parser/parser.nit:7658 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7660);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7658);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23384,7 +23353,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 = 7665;
+  fra.me.line = 7663;
   fra.me.meth = LOCATE_parser___ReduceAction144___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -23397,29 +23366,29 @@ 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:7667 */
+  /* parser/parser.nit:7665 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7668 */
+  /* parser/parser.nit:7666 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7669 */
+  /* parser/parser.nit:7667 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7670 */
+  /* parser/parser.nit:7668 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7671 */
+  /* parser/parser.nit:7669 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7672 */
+  /* parser/parser.nit:7670 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7673 */
+  /* parser/parser.nit:7671 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7674 */
+  /* parser/parser.nit:7672 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7677 */
+  /* parser/parser.nit:7675 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7677);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7675);
   }
-  /* parser/parser.nit:7678 */
+  /* parser/parser.nit:7676 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -23434,19 +23403,19 @@ void parser___ReduceAction144___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:7679 */
+    /* parser/parser.nit:7677 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:7681 */
+  /* parser/parser.nit:7679 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:7682 */
+  /* parser/parser.nit:7680 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:7683 */
+  /* parser/parser.nit:7681 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7683);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7681);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23461,7 +23430,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 = 7688;
+  fra.me.line = 7686;
   fra.me.meth = LOCATE_parser___ReduceAction145___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23473,21 +23442,21 @@ void parser___ReduceAction145___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:7690 */
+  /* parser/parser.nit:7688 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7691 */
+  /* parser/parser.nit:7689 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7692 */
+  /* parser/parser.nit:7690 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7693 */
+  /* parser/parser.nit:7691 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7695 */
+  /* parser/parser.nit:7693 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7696 */
+  /* parser/parser.nit:7694 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7696);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7694);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23502,7 +23471,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 = 7701;
+  fra.me.line = 7699;
   fra.me.meth = LOCATE_parser___ReduceAction146___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23513,25 +23482,25 @@ 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:7703 */
+  /* parser/parser.nit:7701 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7704 */
+  /* parser/parser.nit:7702 */
   fra.me.REG[3] = 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[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7706);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7704);
   }
-  /* parser/parser.nit:7707 */
+  /* parser/parser.nit:7705 */
   fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:7712 */
+  /* parser/parser.nit:7710 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7713 */
+  /* parser/parser.nit:7711 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7713);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7711);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23546,7 +23515,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 = 7718;
+  fra.me.line = 7716;
   fra.me.meth = LOCATE_parser___ReduceAction147___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23558,33 +23527,33 @@ void parser___ReduceAction147___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:7720 */
+  /* parser/parser.nit:7718 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7721 */
+  /* parser/parser.nit:7719 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7722 */
+  /* parser/parser.nit:7720 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7724 */
+  /* parser/parser.nit:7722 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7724);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7722);
   }
-  /* parser/parser.nit:7726 */
+  /* parser/parser.nit:7724 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7726);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7724);
   }
-  /* parser/parser.nit:7727 */
+  /* parser/parser.nit:7725 */
   fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:7732 */
+  /* parser/parser.nit:7730 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7733 */
+  /* parser/parser.nit:7731 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7733);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7731);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23599,7 +23568,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 = 7738;
+  fra.me.line = 7736;
   fra.me.meth = LOCATE_parser___ReduceAction148___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23611,33 +23580,33 @@ void parser___ReduceAction148___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:7740 */
+  /* parser/parser.nit:7738 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7741 */
+  /* parser/parser.nit:7739 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7742 */
+  /* parser/parser.nit:7740 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7744 */
+  /* parser/parser.nit:7742 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7744);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7742);
   }
-  /* parser/parser.nit:7746 */
+  /* parser/parser.nit:7744 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7746);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7744);
   }
-  /* parser/parser.nit:7747 */
+  /* parser/parser.nit:7745 */
   fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit: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___ReduceAction____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___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23652,7 +23621,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 = 7758;
+  fra.me.line = 7756;
   fra.me.meth = LOCATE_parser___ReduceAction149___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -23665,41 +23634,41 @@ void parser___ReduceAction149___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:7760 */
+  /* parser/parser.nit:7758 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7761 */
+  /* parser/parser.nit:7759 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7762 */
+  /* parser/parser.nit:7760 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7763 */
+  /* parser/parser.nit:7761 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7765 */
+  /* parser/parser.nit:7763 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7765);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7763);
   }
-  /* parser/parser.nit:7767 */
+  /* parser/parser.nit:7765 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7767);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7765);
   }
-  /* parser/parser.nit:7769 */
+  /* parser/parser.nit:7767 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7769);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7767);
   }
-  /* parser/parser.nit:7770 */
+  /* parser/parser.nit:7768 */
   fra.me.REG[4] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:7775 */
+  /* parser/parser.nit:7773 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:7776 */
+  /* parser/parser.nit:7774 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7776);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7774);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23714,7 +23683,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 = 7781;
+  fra.me.line = 7779;
   fra.me.meth = LOCATE_parser___ReduceAction150___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -23727,37 +23696,37 @@ void parser___ReduceAction150___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:7783 */
+  /* parser/parser.nit:7781 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7784 */
+  /* parser/parser.nit:7782 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7785 */
+  /* parser/parser.nit:7783 */
   fra.me.REG[4] = 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:7787 */
+  /* parser/parser.nit:7785 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7789 */
+  /* parser/parser.nit:7787 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7789);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7787);
   }
-  /* parser/parser.nit:7791 */
+  /* parser/parser.nit:7789 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7791);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7789);
   }
-  /* parser/parser.nit:7792 */
+  /* parser/parser.nit:7790 */
   fra.me.REG[3] = NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:7797 */
+  /* parser/parser.nit:7795 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7798 */
+  /* parser/parser.nit:7796 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7798);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7796);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23772,7 +23741,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 = 7803;
+  fra.me.line = 7801;
   fra.me.meth = LOCATE_parser___ReduceAction151___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -23786,45 +23755,45 @@ void parser___ReduceAction151___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:7805 */
+  /* parser/parser.nit:7803 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7806 */
+  /* parser/parser.nit:7804 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7807 */
+  /* parser/parser.nit:7805 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7808 */
+  /* parser/parser.nit:7806 */
   fra.me.REG[5] = 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:7810 */
+  /* parser/parser.nit:7808 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7812 */
+  /* parser/parser.nit:7810 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7810);
   }
-  /* parser/parser.nit:7814 */
+  /* parser/parser.nit:7812 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7814);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7812);
   }
-  /* parser/parser.nit:7816 */
+  /* parser/parser.nit:7814 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7816);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7814);
   }
-  /* parser/parser.nit:7817 */
+  /* parser/parser.nit:7815 */
   fra.me.REG[3] = NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7822 */
+  /* parser/parser.nit:7820 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7823 */
+  /* parser/parser.nit:7821 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7823);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7821);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23839,7 +23808,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 = 7828;
+  fra.me.line = 7826;
   fra.me.meth = LOCATE_parser___ReduceAction152___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23850,19 +23819,19 @@ 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:7830 */
+  /* parser/parser.nit:7828 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7831 */
+  /* parser/parser.nit:7829 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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:7834 */
+  /* parser/parser.nit:7832 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7835 */
+  /* parser/parser.nit:7833 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7835);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7833);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23877,7 +23846,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 = 7840;
+  fra.me.line = 7838;
   fra.me.meth = LOCATE_parser___ReduceAction153___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -23893,67 +23862,67 @@ void parser___ReduceAction153___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:7842 */
+  /* parser/parser.nit:7840 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7843 */
+  /* parser/parser.nit:7841 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7844 */
+  /* parser/parser.nit:7842 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7845 */
+  /* parser/parser.nit:7843 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7846 */
+  /* parser/parser.nit:7844 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7847 */
+  /* parser/parser.nit:7845 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7848 */
+  /* parser/parser.nit:7846 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7849 */
+  /* parser/parser.nit:7847 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7851 */
+  /* parser/parser.nit:7849 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7849);
+  }
+  /* parser/parser.nit:7851 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7851);
   }
   /* parser/parser.nit:7853 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7853);
   }
   /* parser/parser.nit:7855 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7855);
   }
   /* parser/parser.nit:7857 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7857);
   }
   /* parser/parser.nit:7859 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7859);
-  }
-  /* parser/parser.nit:7861 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7861);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7859);
   }
-  /* parser/parser.nit:7862 */
+  /* parser/parser.nit:7860 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:7872 */
+  /* parser/parser.nit:7870 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7873 */
+  /* parser/parser.nit:7871 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7873);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7871);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23968,7 +23937,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 = 7878;
+  fra.me.line = 7876;
   fra.me.meth = LOCATE_parser___ReduceAction154___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -23985,75 +23954,75 @@ void parser___ReduceAction154___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:7880 */
+  /* parser/parser.nit:7878 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7881 */
+  /* parser/parser.nit:7879 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7882 */
+  /* parser/parser.nit:7880 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7883 */
+  /* parser/parser.nit:7881 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7884 */
+  /* parser/parser.nit:7882 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7885 */
+  /* parser/parser.nit:7883 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7886 */
+  /* parser/parser.nit:7884 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7887 */
+  /* parser/parser.nit:7885 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7888 */
+  /* parser/parser.nit:7886 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7890 */
+  /* parser/parser.nit:7888 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7888);
+  }
+  /* parser/parser.nit:7890 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7890);
   }
   /* parser/parser.nit:7892 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7892);
   }
   /* parser/parser.nit:7894 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7894);
   }
   /* parser/parser.nit:7896 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7896);
   }
   /* parser/parser.nit:7898 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7898);
   }
   /* parser/parser.nit:7900 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7900);
-  }
-  /* parser/parser.nit:7902 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7902);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7900);
   }
-  /* parser/parser.nit:7903 */
+  /* parser/parser.nit:7901 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:7913 */
+  /* parser/parser.nit:7911 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7914 */
+  /* parser/parser.nit:7912 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7914);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7912);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24068,7 +24037,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 = 7919;
+  fra.me.line = 7917;
   fra.me.meth = LOCATE_parser___ReduceAction155___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -24085,75 +24054,75 @@ void parser___ReduceAction155___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:7921 */
+  /* parser/parser.nit:7919 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7922 */
+  /* parser/parser.nit:7920 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7923 */
+  /* parser/parser.nit:7921 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7924 */
+  /* parser/parser.nit:7922 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7925 */
+  /* parser/parser.nit:7923 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7926 */
+  /* parser/parser.nit:7924 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7927 */
+  /* parser/parser.nit:7925 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7928 */
+  /* parser/parser.nit:7926 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7929 */
+  /* parser/parser.nit:7927 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7931 */
+  /* parser/parser.nit:7929 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7929);
+  }
+  /* parser/parser.nit:7931 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7931);
   }
   /* parser/parser.nit:7933 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7933);
   }
   /* parser/parser.nit:7935 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7935);
   }
   /* parser/parser.nit:7937 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7937);
   }
   /* parser/parser.nit:7939 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7939);
   }
   /* parser/parser.nit:7941 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7941);
-  }
-  /* parser/parser.nit:7943 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7943);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7941);
   }
-  /* parser/parser.nit:7944 */
+  /* parser/parser.nit:7942 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7954 */
+  /* parser/parser.nit:7952 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7955 */
+  /* parser/parser.nit:7953 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7955);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7953);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24168,7 +24137,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 = 7960;
+  fra.me.line = 7958;
   fra.me.meth = LOCATE_parser___ReduceAction156___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -24186,83 +24155,83 @@ void parser___ReduceAction156___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:7962 */
+  /* parser/parser.nit:7960 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7963 */
+  /* parser/parser.nit:7961 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7964 */
+  /* parser/parser.nit:7962 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7965 */
+  /* parser/parser.nit:7963 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7966 */
+  /* parser/parser.nit:7964 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7967 */
+  /* parser/parser.nit:7965 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7968 */
+  /* parser/parser.nit:7966 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7969 */
+  /* parser/parser.nit:7967 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7970 */
+  /* parser/parser.nit:7968 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7971 */
+  /* parser/parser.nit:7969 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7973 */
+  /* parser/parser.nit:7971 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7971);
+  }
+  /* parser/parser.nit:7973 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7973);
   }
   /* parser/parser.nit:7975 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7975);
   }
   /* parser/parser.nit:7977 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7977);
   }
   /* parser/parser.nit:7979 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7979);
   }
   /* parser/parser.nit:7981 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7981);
   }
   /* parser/parser.nit:7983 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 7983);
   }
   /* parser/parser.nit:7985 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7985);
-  }
-  /* parser/parser.nit:7987 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7985);
   }
-  /* parser/parser.nit:7988 */
+  /* parser/parser.nit:7986 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7998 */
+  /* parser/parser.nit:7996 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7999 */
+  /* parser/parser.nit:7997 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7999);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7997);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24277,7 +24246,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 = 8004;
+  fra.me.line = 8002;
   fra.me.meth = LOCATE_parser___ReduceAction157___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -24293,69 +24262,69 @@ void parser___ReduceAction157___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:8006 */
+  /* parser/parser.nit:8004 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8007 */
+  /* parser/parser.nit:8005 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8008 */
+  /* parser/parser.nit:8006 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8009 */
+  /* parser/parser.nit:8007 */
   fra.me.REG[4] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8013 */
+  /* parser/parser.nit:8011 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8014 */
+  /* parser/parser.nit:8012 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8016 */
+  /* parser/parser.nit:8014 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8014);
+  }
+  /* parser/parser.nit:8016 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8016);
   }
   /* parser/parser.nit:8018 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8018);
   }
   /* parser/parser.nit:8020 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8020);
   }
   /* parser/parser.nit:8022 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8022);
   }
   /* parser/parser.nit:8024 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8024);
-  }
-  /* parser/parser.nit:8026 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8026);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8024);
   }
-  /* parser/parser.nit:8027 */
+  /* parser/parser.nit:8025 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8037 */
+  /* parser/parser.nit:8035 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8038 */
+  /* parser/parser.nit:8036 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8038);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8036);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24370,7 +24339,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 = 8043;
+  fra.me.line = 8041;
   fra.me.meth = LOCATE_parser___ReduceAction158___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -24387,77 +24356,77 @@ void parser___ReduceAction158___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:8045 */
+  /* parser/parser.nit:8043 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8046 */
+  /* parser/parser.nit:8044 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8047 */
+  /* parser/parser.nit:8045 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8048 */
+  /* parser/parser.nit:8046 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8049 */
+  /* parser/parser.nit:8047 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8050 */
+  /* parser/parser.nit:8048 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8051 */
+  /* parser/parser.nit:8049 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8052 */
+  /* parser/parser.nit:8050 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8053 */
+  /* parser/parser.nit:8051 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8054 */
+  /* parser/parser.nit:8052 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8056 */
+  /* parser/parser.nit:8054 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8054);
+  }
+  /* parser/parser.nit:8056 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8056);
   }
   /* parser/parser.nit:8058 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8058);
   }
   /* parser/parser.nit:8060 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8060);
   }
   /* parser/parser.nit:8062 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8062);
   }
   /* parser/parser.nit:8064 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8064);
   }
   /* parser/parser.nit:8066 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8066);
-  }
-  /* parser/parser.nit:8068 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8068);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8066);
   }
-  /* parser/parser.nit:8069 */
+  /* parser/parser.nit:8067 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8079 */
+  /* parser/parser.nit:8077 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8080 */
+  /* parser/parser.nit:8078 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8080);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8078);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24472,7 +24441,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 = 8085;
+  fra.me.line = 8083;
   fra.me.meth = LOCATE_parser___ReduceAction159___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -24489,77 +24458,77 @@ void parser___ReduceAction159___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:8087 */
+  /* parser/parser.nit:8085 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8088 */
+  /* parser/parser.nit:8086 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8089 */
+  /* parser/parser.nit:8087 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8090 */
+  /* parser/parser.nit:8088 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8091 */
+  /* parser/parser.nit:8089 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8092 */
+  /* parser/parser.nit:8090 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8093 */
+  /* parser/parser.nit:8091 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8094 */
+  /* parser/parser.nit:8092 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8095 */
+  /* parser/parser.nit:8093 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8096 */
+  /* parser/parser.nit:8094 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8098 */
+  /* parser/parser.nit:8096 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8096);
+  }
+  /* parser/parser.nit:8098 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8098);
   }
   /* parser/parser.nit:8100 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8100);
   }
   /* parser/parser.nit:8102 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8102);
   }
   /* parser/parser.nit:8104 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8104);
   }
   /* parser/parser.nit:8106 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8106);
   }
   /* parser/parser.nit:8108 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8108);
-  }
-  /* parser/parser.nit:8110 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8110);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8108);
   }
-  /* parser/parser.nit:8111 */
+  /* parser/parser.nit:8109 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:8121 */
+  /* parser/parser.nit:8119 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8122 */
+  /* parser/parser.nit:8120 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8122);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8120);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24574,7 +24543,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 = 8127;
+  fra.me.line = 8125;
   fra.me.meth = LOCATE_parser___ReduceAction160___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -24592,85 +24561,85 @@ void parser___ReduceAction160___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:8129 */
+  /* parser/parser.nit:8127 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8130 */
+  /* parser/parser.nit:8128 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8131 */
+  /* parser/parser.nit:8129 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8132 */
+  /* parser/parser.nit:8130 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8133 */
+  /* parser/parser.nit:8131 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8134 */
+  /* parser/parser.nit:8132 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8135 */
+  /* parser/parser.nit:8133 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8136 */
+  /* parser/parser.nit:8134 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8137 */
+  /* parser/parser.nit:8135 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8138 */
+  /* parser/parser.nit:8136 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8139 */
+  /* parser/parser.nit:8137 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8141 */
+  /* parser/parser.nit:8139 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8139);
+  }
+  /* parser/parser.nit:8141 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8141);
   }
   /* parser/parser.nit:8143 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8143);
   }
   /* parser/parser.nit:8145 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8145);
   }
   /* parser/parser.nit:8147 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8147);
   }
   /* parser/parser.nit:8149 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8149);
   }
   /* parser/parser.nit:8151 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8151);
   }
   /* parser/parser.nit:8153 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8153);
-  }
-  /* parser/parser.nit:8155 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8155);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8153);
   }
-  /* parser/parser.nit:8156 */
+  /* parser/parser.nit:8154 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:8166 */
+  /* parser/parser.nit:8164 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8167 */
+  /* parser/parser.nit:8165 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8167);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8165);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24685,7 +24654,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 = 8172;
+  fra.me.line = 8170;
   fra.me.meth = LOCATE_parser___ReduceAction161___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -24701,69 +24670,69 @@ void parser___ReduceAction161___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:8174 */
+  /* parser/parser.nit:8172 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8175 */
+  /* parser/parser.nit:8173 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8176 */
+  /* parser/parser.nit:8174 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8177 */
+  /* parser/parser.nit:8175 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8178 */
+  /* parser/parser.nit:8176 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8179 */
+  /* parser/parser.nit:8177 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8180 */
+  /* parser/parser.nit:8178 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8181 */
+  /* parser/parser.nit:8179 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8182 */
+  /* parser/parser.nit:8180 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8184 */
+  /* parser/parser.nit:8182 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8182);
+  }
+  /* parser/parser.nit:8184 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8184);
   }
   /* parser/parser.nit:8186 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8186);
   }
   /* parser/parser.nit:8188 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8188);
   }
   /* parser/parser.nit:8190 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8190);
   }
   /* parser/parser.nit:8192 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8192);
-  }
-  /* parser/parser.nit:8194 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8194);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8192);
   }
-  /* parser/parser.nit:8195 */
+  /* parser/parser.nit:8193 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8205 */
+  /* parser/parser.nit:8203 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8206 */
+  /* parser/parser.nit:8204 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8206);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8204);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24778,7 +24747,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 = 8211;
+  fra.me.line = 8209;
   fra.me.meth = LOCATE_parser___ReduceAction162___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -24795,77 +24764,77 @@ void parser___ReduceAction162___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:8213 */
+  /* parser/parser.nit:8211 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8214 */
+  /* parser/parser.nit:8212 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8215 */
+  /* parser/parser.nit:8213 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8216 */
+  /* parser/parser.nit:8214 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8217 */
+  /* parser/parser.nit:8215 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8218 */
+  /* parser/parser.nit:8216 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8219 */
+  /* parser/parser.nit:8217 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8220 */
+  /* parser/parser.nit:8218 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8221 */
+  /* parser/parser.nit:8219 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8222 */
+  /* parser/parser.nit:8220 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8224 */
+  /* parser/parser.nit:8222 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8222);
+  }
+  /* parser/parser.nit:8224 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8224);
   }
   /* parser/parser.nit:8226 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8226);
   }
   /* parser/parser.nit:8228 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8228);
   }
   /* parser/parser.nit:8230 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8230);
   }
   /* parser/parser.nit:8232 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8232);
   }
   /* parser/parser.nit:8234 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8234);
-  }
-  /* parser/parser.nit:8236 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8236);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8234);
   }
-  /* parser/parser.nit:8237 */
+  /* parser/parser.nit:8235 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8247 */
+  /* parser/parser.nit:8245 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8248 */
+  /* parser/parser.nit:8246 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8248);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8246);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24880,7 +24849,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 = 8253;
+  fra.me.line = 8251;
   fra.me.meth = LOCATE_parser___ReduceAction163___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -24896,65 +24865,65 @@ void parser___ReduceAction163___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:8255 */
+  /* parser/parser.nit:8253 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8256 */
+  /* parser/parser.nit:8254 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8257 */
+  /* parser/parser.nit:8255 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8258 */
+  /* parser/parser.nit:8256 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8259 */
+  /* parser/parser.nit:8257 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8260 */
+  /* parser/parser.nit:8258 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8261 */
+  /* parser/parser.nit:8259 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8263 */
+  /* parser/parser.nit:8261 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8261);
+  }
+  /* parser/parser.nit:8263 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8263);
   }
   /* parser/parser.nit:8265 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8265);
   }
   /* parser/parser.nit:8267 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8267);
   }
   /* parser/parser.nit:8269 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8269);
   }
   /* parser/parser.nit:8271 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8271);
-  }
-  /* parser/parser.nit:8273 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8273);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8271);
   }
-  /* parser/parser.nit:8274 */
+  /* parser/parser.nit:8272 */
   fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:8283 */
+  /* parser/parser.nit:8281 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8284 */
+  /* parser/parser.nit:8282 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8284);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8282);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24969,7 +24938,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 = 8289;
+  fra.me.line = 8287;
   fra.me.meth = LOCATE_parser___ReduceAction164___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -24986,73 +24955,73 @@ void parser___ReduceAction164___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:8291 */
+  /* parser/parser.nit:8289 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8292 */
+  /* parser/parser.nit:8290 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8293 */
+  /* parser/parser.nit:8291 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8294 */
+  /* parser/parser.nit:8292 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8295 */
+  /* parser/parser.nit:8293 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8296 */
+  /* parser/parser.nit:8294 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8297 */
+  /* parser/parser.nit:8295 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8298 */
+  /* parser/parser.nit:8296 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8300 */
+  /* parser/parser.nit:8298 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8298);
+  }
+  /* parser/parser.nit:8300 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8300);
   }
   /* parser/parser.nit:8302 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8302);
   }
   /* parser/parser.nit:8304 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8304);
   }
   /* parser/parser.nit:8306 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8306);
   }
   /* parser/parser.nit:8308 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8308);
   }
   /* parser/parser.nit:8310 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8310);
-  }
-  /* parser/parser.nit:8312 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8312);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8310);
   }
-  /* parser/parser.nit:8313 */
+  /* parser/parser.nit:8311 */
   fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:8322 */
+  /* parser/parser.nit:8320 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8323 */
+  /* parser/parser.nit:8321 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8323);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8321);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25067,7 +25036,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 = 8328;
+  fra.me.line = 8326;
   fra.me.meth = LOCATE_parser___ReduceAction165___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -25082,61 +25051,61 @@ void parser___ReduceAction165___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[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8333 */
+  /* parser/parser.nit:8331 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8334 */
+  /* parser/parser.nit:8332 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8335 */
+  /* parser/parser.nit:8333 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8336 */
+  /* parser/parser.nit:8334 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8337 */
+  /* parser/parser.nit:8335 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8339 */
+  /* parser/parser.nit:8337 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8339);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8337);
   }
-  /* parser/parser.nit:8341 */
+  /* parser/parser.nit:8339 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8341);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8339);
   }
-  /* parser/parser.nit:8343 */
+  /* parser/parser.nit:8341 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8343);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8341);
   }
-  /* parser/parser.nit:8345 */
+  /* parser/parser.nit:8343 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8345);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8343);
   }
-  /* parser/parser.nit:8347 */
+  /* parser/parser.nit:8345 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8347);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8345);
   }
-  /* parser/parser.nit:8348 */
+  /* parser/parser.nit:8346 */
   fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:8357 */
+  /* parser/parser.nit:8355 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8358 */
+  /* parser/parser.nit:8356 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8358);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8356);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25151,7 +25120,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 = 8363;
+  fra.me.line = 8361;
   fra.me.meth = LOCATE_parser___ReduceAction166___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -25167,69 +25136,69 @@ void parser___ReduceAction166___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:8365 */
+  /* parser/parser.nit:8363 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8366 */
+  /* parser/parser.nit:8364 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8367 */
+  /* parser/parser.nit:8365 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8368 */
+  /* parser/parser.nit:8366 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8369 */
+  /* parser/parser.nit:8367 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8370 */
+  /* parser/parser.nit:8368 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8371 */
+  /* parser/parser.nit:8369 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8372 */
+  /* parser/parser.nit:8370 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8373 */
+  /* parser/parser.nit:8371 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8375 */
+  /* parser/parser.nit:8373 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8373);
+  }
+  /* parser/parser.nit:8375 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8375);
   }
   /* parser/parser.nit:8377 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8377);
   }
   /* parser/parser.nit:8379 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8379);
   }
   /* parser/parser.nit:8381 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8381);
   }
   /* parser/parser.nit:8383 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8383);
-  }
-  /* parser/parser.nit:8385 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8385);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8383);
   }
-  /* parser/parser.nit:8386 */
+  /* parser/parser.nit:8384 */
   fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:8395 */
+  /* parser/parser.nit:8393 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8396 */
+  /* parser/parser.nit:8394 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8396);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8394);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25244,7 +25213,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 = 8401;
+  fra.me.line = 8399;
   fra.me.meth = LOCATE_parser___ReduceAction167___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -25259,61 +25228,61 @@ void parser___ReduceAction167___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:8403 */
+  /* parser/parser.nit:8401 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8404 */
+  /* parser/parser.nit:8402 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8405 */
+  /* parser/parser.nit:8403 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8406 */
+  /* parser/parser.nit:8404 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8407 */
+  /* parser/parser.nit:8405 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8408 */
+  /* parser/parser.nit:8406 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8409 */
+  /* parser/parser.nit:8407 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8410 */
+  /* parser/parser.nit:8408 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8412 */
+  /* parser/parser.nit:8410 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8412);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8410);
   }
-  /* parser/parser.nit:8414 */
+  /* parser/parser.nit:8412 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8414);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8412);
   }
-  /* parser/parser.nit:8416 */
+  /* parser/parser.nit:8414 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8416);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8414);
   }
-  /* parser/parser.nit:8418 */
+  /* parser/parser.nit:8416 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8418);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8416);
   }
-  /* parser/parser.nit:8420 */
+  /* parser/parser.nit:8418 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8420);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8418);
   }
-  /* parser/parser.nit:8421 */
+  /* parser/parser.nit:8419 */
   fra.me.REG[3] = NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:8429 */
+  /* parser/parser.nit:8427 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8430 */
+  /* parser/parser.nit:8428 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8430);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8428);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25328,7 +25297,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 = 8435;
+  fra.me.line = 8433;
   fra.me.meth = LOCATE_parser___ReduceAction168___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -25344,69 +25313,69 @@ void parser___ReduceAction168___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:8437 */
+  /* parser/parser.nit:8435 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8438 */
+  /* parser/parser.nit:8436 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8439 */
+  /* parser/parser.nit:8437 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8440 */
+  /* parser/parser.nit:8438 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8441 */
+  /* parser/parser.nit:8439 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8442 */
+  /* parser/parser.nit:8440 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8443 */
+  /* parser/parser.nit:8441 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8444 */
+  /* parser/parser.nit:8442 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8445 */
+  /* parser/parser.nit:8443 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8447 */
+  /* parser/parser.nit:8445 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8445);
+  }
+  /* parser/parser.nit:8447 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8447);
   }
   /* parser/parser.nit:8449 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8449);
   }
   /* parser/parser.nit:8451 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8451);
   }
   /* parser/parser.nit:8453 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8453);
   }
   /* parser/parser.nit:8455 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8455);
-  }
-  /* parser/parser.nit:8457 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8457);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8455);
   }
-  /* parser/parser.nit:8458 */
+  /* parser/parser.nit:8456 */
   fra.me.REG[3] = NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:8466 */
+  /* parser/parser.nit:8464 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8467 */
+  /* parser/parser.nit:8465 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8467);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8465);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25421,7 +25390,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 = 8472;
+  fra.me.line = 8470;
   fra.me.meth = LOCATE_parser___ReduceAction169___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -25436,61 +25405,61 @@ void parser___ReduceAction169___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:8474 */
+  /* parser/parser.nit:8472 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8475 */
+  /* parser/parser.nit:8473 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8476 */
+  /* parser/parser.nit:8474 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8477 */
+  /* parser/parser.nit:8475 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8478 */
+  /* parser/parser.nit:8476 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8479 */
+  /* parser/parser.nit:8477 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8480 */
+  /* parser/parser.nit:8478 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8481 */
+  /* parser/parser.nit:8479 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8483 */
+  /* parser/parser.nit:8481 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8483);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8481);
   }
-  /* parser/parser.nit:8485 */
+  /* parser/parser.nit:8483 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8485);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8483);
   }
-  /* parser/parser.nit:8487 */
+  /* parser/parser.nit:8485 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8487);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8485);
   }
-  /* parser/parser.nit:8489 */
+  /* parser/parser.nit:8487 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8487);
   }
-  /* parser/parser.nit:8491 */
+  /* parser/parser.nit:8489 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8491);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8489);
   }
-  /* parser/parser.nit:8492 */
+  /* parser/parser.nit:8490 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:8503 */
+  /* parser/parser.nit:8501 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8504 */
+  /* parser/parser.nit:8502 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8504);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8502);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25505,7 +25474,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 = 8509;
+  fra.me.line = 8507;
   fra.me.meth = LOCATE_parser___ReduceAction170___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -25521,69 +25490,69 @@ void parser___ReduceAction170___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:8511 */
+  /* parser/parser.nit:8509 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8512 */
+  /* parser/parser.nit:8510 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8513 */
+  /* parser/parser.nit:8511 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8514 */
+  /* parser/parser.nit:8512 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8515 */
+  /* parser/parser.nit:8513 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8516 */
+  /* parser/parser.nit:8514 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8517 */
+  /* parser/parser.nit:8515 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8518 */
+  /* parser/parser.nit:8516 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8519 */
+  /* parser/parser.nit:8517 */
   fra.me.REG[8] = 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[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8519);
+  }
+  /* parser/parser.nit:8521 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8521);
   }
   /* parser/parser.nit:8523 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8523);
   }
   /* parser/parser.nit:8525 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8525);
   }
   /* parser/parser.nit:8527 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8527);
   }
   /* parser/parser.nit:8529 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8529);
-  }
-  /* parser/parser.nit:8531 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8531);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8529);
   }
-  /* parser/parser.nit:8532 */
+  /* parser/parser.nit:8530 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:8543 */
+  /* parser/parser.nit:8541 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8544 */
+  /* parser/parser.nit:8542 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8544);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8542);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25598,7 +25567,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 = 8549;
+  fra.me.line = 8547;
   fra.me.meth = LOCATE_parser___ReduceAction171___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -25614,69 +25583,69 @@ void parser___ReduceAction171___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:8551 */
+  /* parser/parser.nit:8549 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8552 */
+  /* parser/parser.nit:8550 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8553 */
+  /* parser/parser.nit:8551 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8554 */
+  /* parser/parser.nit:8552 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8555 */
+  /* parser/parser.nit:8553 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8556 */
+  /* parser/parser.nit:8554 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8557 */
+  /* parser/parser.nit:8555 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8558 */
+  /* parser/parser.nit:8556 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8559 */
+  /* parser/parser.nit:8557 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8561 */
+  /* parser/parser.nit:8559 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8559);
+  }
+  /* parser/parser.nit:8561 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8561);
   }
   /* parser/parser.nit:8563 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8563);
   }
   /* parser/parser.nit:8565 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8565);
   }
   /* parser/parser.nit:8567 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8567);
   }
   /* parser/parser.nit:8569 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8569);
-  }
-  /* parser/parser.nit:8571 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8571);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8569);
   }
-  /* parser/parser.nit:8572 */
+  /* parser/parser.nit:8570 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:8583 */
+  /* parser/parser.nit:8581 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8584 */
+  /* parser/parser.nit:8582 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8584);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8582);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25691,7 +25660,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 = 8589;
+  fra.me.line = 8587;
   fra.me.meth = LOCATE_parser___ReduceAction172___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -25708,77 +25677,77 @@ void parser___ReduceAction172___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:8591 */
+  /* parser/parser.nit:8589 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8592 */
+  /* parser/parser.nit:8590 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8593 */
+  /* parser/parser.nit:8591 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8594 */
+  /* parser/parser.nit:8592 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8595 */
+  /* parser/parser.nit:8593 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8596 */
+  /* parser/parser.nit:8594 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8597 */
+  /* parser/parser.nit:8595 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8598 */
+  /* parser/parser.nit:8596 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8599 */
+  /* parser/parser.nit:8597 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8600 */
+  /* parser/parser.nit:8598 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8602 */
+  /* parser/parser.nit:8600 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8600);
+  }
+  /* parser/parser.nit:8602 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8602);
   }
   /* parser/parser.nit:8604 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8604);
   }
   /* parser/parser.nit:8606 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8606);
   }
   /* parser/parser.nit:8608 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8608);
   }
   /* parser/parser.nit:8610 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8610);
   }
   /* parser/parser.nit:8612 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8612);
-  }
-  /* parser/parser.nit:8614 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8614);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8612);
   }
-  /* parser/parser.nit:8615 */
+  /* parser/parser.nit:8613 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:8626 */
+  /* parser/parser.nit:8624 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8627 */
+  /* parser/parser.nit:8625 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8627);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8625);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25793,7 +25762,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 = 8632;
+  fra.me.line = 8630;
   fra.me.meth = LOCATE_parser___ReduceAction173___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -25809,69 +25778,69 @@ void parser___ReduceAction173___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:8634 */
+  /* parser/parser.nit:8632 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8635 */
+  /* parser/parser.nit:8633 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8636 */
+  /* parser/parser.nit:8634 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8637 */
+  /* parser/parser.nit:8635 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8638 */
+  /* parser/parser.nit:8636 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8639 */
+  /* parser/parser.nit:8637 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8640 */
+  /* parser/parser.nit:8638 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8641 */
+  /* parser/parser.nit:8639 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8642 */
+  /* parser/parser.nit:8640 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8644 */
+  /* parser/parser.nit:8642 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8642);
+  }
+  /* parser/parser.nit:8644 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8644);
   }
   /* parser/parser.nit:8646 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8646);
   }
   /* parser/parser.nit:8648 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8648);
   }
   /* parser/parser.nit:8650 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8650);
   }
   /* parser/parser.nit:8652 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8652);
-  }
-  /* parser/parser.nit:8654 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8654);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8652);
   }
-  /* parser/parser.nit:8655 */
+  /* parser/parser.nit:8653 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:8666 */
+  /* parser/parser.nit:8664 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8667 */
+  /* parser/parser.nit:8665 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8667);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8665);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25886,7 +25855,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 = 8672;
+  fra.me.line = 8670;
   fra.me.meth = LOCATE_parser___ReduceAction174___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -25903,77 +25872,77 @@ void parser___ReduceAction174___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:8674 */
+  /* parser/parser.nit:8672 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8675 */
+  /* parser/parser.nit:8673 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8676 */
+  /* parser/parser.nit:8674 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8677 */
+  /* parser/parser.nit:8675 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8678 */
+  /* parser/parser.nit:8676 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8679 */
+  /* parser/parser.nit:8677 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8680 */
+  /* parser/parser.nit:8678 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8681 */
+  /* parser/parser.nit:8679 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8682 */
+  /* parser/parser.nit:8680 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8683 */
+  /* parser/parser.nit:8681 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8685 */
+  /* parser/parser.nit:8683 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8683);
+  }
+  /* parser/parser.nit:8685 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8685);
   }
   /* parser/parser.nit:8687 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8687);
   }
   /* parser/parser.nit:8689 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8689);
   }
   /* parser/parser.nit:8691 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8691);
   }
   /* parser/parser.nit:8693 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8693);
   }
   /* parser/parser.nit:8695 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8695);
-  }
-  /* parser/parser.nit:8697 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8697);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8695);
   }
-  /* parser/parser.nit:8698 */
+  /* parser/parser.nit:8696 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:8709 */
+  /* parser/parser.nit:8707 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8710 */
+  /* parser/parser.nit:8708 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8710);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8708);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25988,7 +25957,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 = 8715;
+  fra.me.line = 8713;
   fra.me.meth = LOCATE_parser___ReduceAction175___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -26005,77 +25974,77 @@ void parser___ReduceAction175___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:8717 */
+  /* parser/parser.nit:8715 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8718 */
+  /* parser/parser.nit:8716 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8719 */
+  /* parser/parser.nit:8717 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8720 */
+  /* parser/parser.nit:8718 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8721 */
+  /* parser/parser.nit:8719 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8722 */
+  /* parser/parser.nit:8720 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8723 */
+  /* parser/parser.nit:8721 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8724 */
+  /* parser/parser.nit:8722 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8725 */
+  /* parser/parser.nit:8723 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8726 */
+  /* parser/parser.nit:8724 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8728 */
+  /* parser/parser.nit:8726 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8726);
+  }
+  /* parser/parser.nit:8728 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8728);
   }
   /* parser/parser.nit:8730 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8730);
   }
   /* parser/parser.nit:8732 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8732);
   }
   /* parser/parser.nit:8734 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8734);
   }
   /* parser/parser.nit:8736 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8736);
   }
   /* parser/parser.nit:8738 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
-  }
-  /* parser/parser.nit:8740 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8740);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
   }
-  /* parser/parser.nit:8741 */
+  /* parser/parser.nit:8739 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:8752 */
+  /* parser/parser.nit:8750 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8753 */
+  /* parser/parser.nit:8751 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8753);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8751);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26090,7 +26059,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 = 8758;
+  fra.me.line = 8756;
   fra.me.meth = LOCATE_parser___ReduceAction176___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -26108,85 +26077,85 @@ void parser___ReduceAction176___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:8760 */
+  /* parser/parser.nit:8758 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8761 */
+  /* parser/parser.nit:8759 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8762 */
+  /* parser/parser.nit:8760 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8763 */
+  /* parser/parser.nit:8761 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8764 */
+  /* parser/parser.nit:8762 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8765 */
+  /* parser/parser.nit:8763 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8766 */
+  /* parser/parser.nit:8764 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8767 */
+  /* parser/parser.nit:8765 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8768 */
+  /* parser/parser.nit:8766 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8769 */
+  /* parser/parser.nit:8767 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8770 */
+  /* parser/parser.nit:8768 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8772 */
+  /* parser/parser.nit:8770 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8770);
+  }
+  /* parser/parser.nit:8772 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8772);
   }
   /* parser/parser.nit:8774 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8774);
   }
   /* parser/parser.nit:8776 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8776);
   }
   /* parser/parser.nit:8778 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8778);
   }
   /* parser/parser.nit:8780 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8780);
   }
   /* parser/parser.nit:8782 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8782);
   }
   /* parser/parser.nit:8784 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8784);
-  }
-  /* parser/parser.nit:8786 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8786);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8784);
   }
-  /* parser/parser.nit:8787 */
+  /* parser/parser.nit:8785 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:8798 */
+  /* parser/parser.nit:8796 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8799 */
+  /* parser/parser.nit:8797 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8799);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8797);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26201,7 +26170,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 = 8804;
+  fra.me.line = 8802;
   fra.me.meth = LOCATE_parser___ReduceAction177___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -26217,69 +26186,69 @@ void parser___ReduceAction177___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:8806 */
+  /* parser/parser.nit:8804 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8807 */
+  /* parser/parser.nit:8805 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8808 */
+  /* parser/parser.nit:8806 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8809 */
+  /* parser/parser.nit:8807 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8810 */
+  /* parser/parser.nit:8808 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8811 */
+  /* parser/parser.nit:8809 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8812 */
+  /* parser/parser.nit:8810 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8813 */
+  /* parser/parser.nit:8811 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8814 */
+  /* parser/parser.nit:8812 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8816 */
+  /* parser/parser.nit:8814 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8814);
+  }
+  /* parser/parser.nit:8816 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8816);
   }
   /* parser/parser.nit:8818 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8818);
   }
   /* parser/parser.nit:8820 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8820);
   }
   /* parser/parser.nit:8822 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8822);
   }
   /* parser/parser.nit:8824 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8824);
-  }
-  /* parser/parser.nit:8826 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8826);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8824);
   }
-  /* parser/parser.nit:8827 */
+  /* parser/parser.nit:8825 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8838 */
+  /* parser/parser.nit:8836 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8839 */
+  /* parser/parser.nit:8837 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8839);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8837);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26294,7 +26263,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 = 8844;
+  fra.me.line = 8842;
   fra.me.meth = LOCATE_parser___ReduceAction178___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -26311,77 +26280,77 @@ void parser___ReduceAction178___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:8846 */
+  /* parser/parser.nit:8844 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8847 */
+  /* parser/parser.nit:8845 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8848 */
+  /* parser/parser.nit:8846 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8849 */
+  /* parser/parser.nit:8847 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8850 */
+  /* parser/parser.nit:8848 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8851 */
+  /* parser/parser.nit:8849 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8852 */
+  /* parser/parser.nit:8850 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8853 */
+  /* parser/parser.nit:8851 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8854 */
+  /* parser/parser.nit:8852 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8855 */
+  /* parser/parser.nit:8853 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8857 */
+  /* parser/parser.nit:8855 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8855);
+  }
+  /* parser/parser.nit:8857 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8857);
   }
   /* parser/parser.nit:8859 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8859);
   }
   /* parser/parser.nit:8861 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8861);
   }
   /* parser/parser.nit:8863 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8863);
   }
   /* parser/parser.nit:8865 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8865);
   }
   /* parser/parser.nit:8867 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8867);
-  }
-  /* parser/parser.nit:8869 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8869);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8867);
   }
-  /* parser/parser.nit:8870 */
+  /* parser/parser.nit:8868 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8881 */
+  /* parser/parser.nit:8879 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8882 */
+  /* parser/parser.nit:8880 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8882);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8880);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26396,7 +26365,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 = 8887;
+  fra.me.line = 8885;
   fra.me.meth = LOCATE_parser___ReduceAction179___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -26413,77 +26382,77 @@ void parser___ReduceAction179___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:8889 */
+  /* parser/parser.nit:8887 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8890 */
+  /* parser/parser.nit:8888 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8891 */
+  /* parser/parser.nit:8889 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8892 */
+  /* parser/parser.nit:8890 */
   fra.me.REG[5] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8895 */
+  /* parser/parser.nit:8893 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8896 */
+  /* parser/parser.nit:8894 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8897 */
+  /* parser/parser.nit:8895 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8898 */
+  /* parser/parser.nit:8896 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8900 */
+  /* parser/parser.nit:8898 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8898);
+  }
+  /* parser/parser.nit:8900 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8900);
   }
   /* parser/parser.nit:8902 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8902);
   }
   /* parser/parser.nit:8904 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8904);
   }
   /* parser/parser.nit:8906 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8906);
   }
   /* parser/parser.nit:8908 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8908);
   }
   /* parser/parser.nit:8910 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8910);
-  }
-  /* parser/parser.nit:8912 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8912);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8910);
   }
-  /* parser/parser.nit:8913 */
+  /* parser/parser.nit:8911 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8924 */
+  /* parser/parser.nit:8922 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8925 */
+  /* parser/parser.nit:8923 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8925);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8923);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26498,7 +26467,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 = 8930;
+  fra.me.line = 8928;
   fra.me.meth = LOCATE_parser___ReduceAction180___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -26516,85 +26485,85 @@ void parser___ReduceAction180___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:8932 */
+  /* parser/parser.nit:8930 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8933 */
+  /* parser/parser.nit:8931 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8934 */
+  /* parser/parser.nit:8932 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8935 */
+  /* parser/parser.nit:8933 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8936 */
+  /* parser/parser.nit:8934 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8937 */
+  /* parser/parser.nit:8935 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8938 */
+  /* parser/parser.nit:8936 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8939 */
+  /* parser/parser.nit:8937 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8940 */
+  /* parser/parser.nit:8938 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8941 */
+  /* parser/parser.nit:8939 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8942 */
+  /* parser/parser.nit:8940 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8944 */
+  /* parser/parser.nit:8942 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8942);
+  }
+  /* parser/parser.nit:8944 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8944);
   }
   /* parser/parser.nit:8946 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8946);
   }
   /* parser/parser.nit:8948 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8948);
   }
   /* parser/parser.nit:8950 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8950);
   }
   /* parser/parser.nit:8952 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8952);
   }
   /* parser/parser.nit:8954 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8954);
   }
   /* parser/parser.nit:8956 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8956);
-  }
-  /* parser/parser.nit:8958 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8958);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8956);
   }
-  /* parser/parser.nit:8959 */
+  /* parser/parser.nit:8957 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:8970 */
+  /* parser/parser.nit:8968 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8971 */
+  /* parser/parser.nit:8969 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8971);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8969);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26609,7 +26578,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 = 8976;
+  fra.me.line = 8974;
   fra.me.meth = LOCATE_parser___ReduceAction181___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -26626,77 +26595,77 @@ void parser___ReduceAction181___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:8978 */
+  /* parser/parser.nit:8976 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8979 */
+  /* parser/parser.nit:8977 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8980 */
+  /* parser/parser.nit:8978 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8981 */
+  /* parser/parser.nit:8979 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8982 */
+  /* parser/parser.nit:8980 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8983 */
+  /* parser/parser.nit:8981 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8984 */
+  /* parser/parser.nit:8982 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8985 */
+  /* parser/parser.nit:8983 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8986 */
+  /* parser/parser.nit:8984 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8987 */
+  /* parser/parser.nit:8985 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8989 */
+  /* parser/parser.nit:8987 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8987);
+  }
+  /* parser/parser.nit:8989 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8989);
   }
   /* parser/parser.nit:8991 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8991);
   }
   /* parser/parser.nit:8993 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8993);
   }
   /* parser/parser.nit:8995 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8995);
   }
   /* parser/parser.nit:8997 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 8997);
   }
   /* parser/parser.nit:8999 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8999);
-  }
-  /* parser/parser.nit:9001 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9001);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8999);
   }
-  /* parser/parser.nit:9002 */
+  /* parser/parser.nit:9000 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:9013 */
+  /* parser/parser.nit:9011 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9014 */
+  /* parser/parser.nit:9012 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9014);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9012);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26711,7 +26680,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 = 9019;
+  fra.me.line = 9017;
   fra.me.meth = LOCATE_parser___ReduceAction182___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -26729,85 +26698,85 @@ void parser___ReduceAction182___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:9021 */
+  /* parser/parser.nit:9019 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9022 */
+  /* parser/parser.nit:9020 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9023 */
+  /* parser/parser.nit:9021 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9024 */
+  /* parser/parser.nit:9022 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9025 */
+  /* parser/parser.nit:9023 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9026 */
+  /* parser/parser.nit:9024 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9027 */
+  /* parser/parser.nit:9025 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9028 */
+  /* parser/parser.nit:9026 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9029 */
+  /* parser/parser.nit:9027 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9030 */
+  /* parser/parser.nit:9028 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9031 */
+  /* parser/parser.nit:9029 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9033 */
+  /* parser/parser.nit:9031 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9031);
+  }
+  /* parser/parser.nit:9033 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9033);
   }
   /* parser/parser.nit:9035 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9035);
   }
   /* parser/parser.nit:9037 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9037);
   }
   /* parser/parser.nit:9039 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9039);
   }
   /* parser/parser.nit:9041 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9041);
   }
   /* parser/parser.nit:9043 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9043);
   }
   /* parser/parser.nit:9045 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9045);
-  }
-  /* parser/parser.nit:9047 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9047);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9045);
   }
-  /* parser/parser.nit:9048 */
+  /* parser/parser.nit:9046 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit: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___ReduceAction____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___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26822,7 +26791,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 = 9065;
+  fra.me.line = 9063;
   fra.me.meth = LOCATE_parser___ReduceAction183___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -26840,85 +26809,85 @@ void parser___ReduceAction183___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:9067 */
+  /* parser/parser.nit:9065 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9068 */
+  /* parser/parser.nit:9066 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9069 */
+  /* parser/parser.nit:9067 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9070 */
+  /* parser/parser.nit:9068 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9071 */
+  /* parser/parser.nit:9069 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9072 */
+  /* parser/parser.nit:9070 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9073 */
+  /* parser/parser.nit:9071 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9074 */
+  /* parser/parser.nit:9072 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9075 */
+  /* parser/parser.nit:9073 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9076 */
+  /* parser/parser.nit:9074 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9077 */
+  /* parser/parser.nit:9075 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9079 */
+  /* parser/parser.nit:9077 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9077);
+  }
+  /* parser/parser.nit:9079 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9079);
   }
   /* parser/parser.nit:9081 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9081);
   }
   /* parser/parser.nit:9083 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9083);
   }
   /* parser/parser.nit:9085 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9085);
   }
   /* parser/parser.nit:9087 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9087);
   }
   /* parser/parser.nit:9089 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9089);
   }
   /* parser/parser.nit:9091 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9091);
-  }
-  /* parser/parser.nit:9093 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9093);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9091);
   }
-  /* parser/parser.nit:9094 */
+  /* parser/parser.nit:9092 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:9105 */
+  /* parser/parser.nit:9103 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9106 */
+  /* parser/parser.nit:9104 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9106);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9104);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26933,7 +26902,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 = 9111;
+  fra.me.line = 9109;
   fra.me.meth = LOCATE_parser___ReduceAction184___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -26952,93 +26921,93 @@ void parser___ReduceAction184___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:9113 */
+  /* parser/parser.nit:9111 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9114 */
+  /* parser/parser.nit:9112 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9115 */
+  /* parser/parser.nit:9113 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9116 */
+  /* parser/parser.nit:9114 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9117 */
+  /* parser/parser.nit:9115 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9118 */
+  /* parser/parser.nit:9116 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9119 */
+  /* parser/parser.nit:9117 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9120 */
+  /* parser/parser.nit:9118 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9121 */
+  /* parser/parser.nit:9119 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9122 */
+  /* parser/parser.nit:9120 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9123 */
+  /* parser/parser.nit:9121 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9124 */
+  /* parser/parser.nit:9122 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9126 */
+  /* parser/parser.nit:9124 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9124);
+  }
+  /* parser/parser.nit:9126 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9126);
   }
   /* parser/parser.nit:9128 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9128);
   }
   /* parser/parser.nit:9130 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9130);
   }
   /* parser/parser.nit:9132 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9132);
   }
   /* parser/parser.nit:9134 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9134);
   }
   /* parser/parser.nit:9136 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9136);
   }
   /* parser/parser.nit:9138 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9138);
   }
   /* parser/parser.nit:9140 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9140);
-  }
-  /* parser/parser.nit:9142 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9142);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9140);
   }
-  /* parser/parser.nit:9143 */
+  /* parser/parser.nit:9141 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:9154 */
+  /* parser/parser.nit:9152 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9155 */
+  /* parser/parser.nit:9153 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9155);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9153);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27053,7 +27022,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 = 9160;
+  fra.me.line = 9158;
   fra.me.meth = LOCATE_parser___ReduceAction185___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -27069,65 +27038,65 @@ void parser___ReduceAction185___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:9162 */
+  /* parser/parser.nit:9160 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9163 */
+  /* parser/parser.nit:9161 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9164 */
+  /* parser/parser.nit:9162 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9165 */
+  /* parser/parser.nit:9163 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9166 */
+  /* parser/parser.nit:9164 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9167 */
+  /* parser/parser.nit:9165 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9168 */
+  /* parser/parser.nit:9166 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9170 */
+  /* parser/parser.nit:9168 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9168);
+  }
+  /* parser/parser.nit:9170 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9170);
   }
   /* parser/parser.nit:9172 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9172);
   }
   /* parser/parser.nit:9174 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9174);
   }
   /* parser/parser.nit:9176 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9176);
   }
   /* parser/parser.nit:9178 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9178);
-  }
-  /* parser/parser.nit:9180 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9180);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9178);
   }
-  /* parser/parser.nit:9181 */
+  /* parser/parser.nit:9179 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:9192 */
+  /* parser/parser.nit:9190 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9193 */
+  /* parser/parser.nit:9191 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9193);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9191);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27142,7 +27111,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 = 9198;
+  fra.me.line = 9196;
   fra.me.meth = LOCATE_parser___ReduceAction186___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -27159,73 +27128,73 @@ void parser___ReduceAction186___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:9200 */
+  /* parser/parser.nit:9198 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9201 */
+  /* parser/parser.nit:9199 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9202 */
+  /* parser/parser.nit:9200 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9203 */
+  /* parser/parser.nit:9201 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9204 */
+  /* parser/parser.nit:9202 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9205 */
+  /* parser/parser.nit:9203 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9206 */
+  /* parser/parser.nit:9204 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9207 */
+  /* parser/parser.nit:9205 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9209 */
+  /* parser/parser.nit:9207 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9207);
+  }
+  /* parser/parser.nit:9209 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9209);
   }
   /* parser/parser.nit:9211 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9211);
   }
   /* parser/parser.nit:9213 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9213);
   }
   /* parser/parser.nit:9215 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9215);
   }
   /* parser/parser.nit:9217 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9217);
   }
   /* parser/parser.nit:9219 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9219);
-  }
-  /* parser/parser.nit:9221 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9221);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9219);
   }
-  /* parser/parser.nit:9222 */
+  /* parser/parser.nit:9220 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:9233 */
+  /* parser/parser.nit:9231 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9234 */
+  /* parser/parser.nit:9232 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9234);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9232);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27240,7 +27209,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 = 9239;
+  fra.me.line = 9237;
   fra.me.meth = LOCATE_parser___ReduceAction187___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -27257,73 +27226,73 @@ void parser___ReduceAction187___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:9241 */
+  /* parser/parser.nit:9239 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9242 */
+  /* parser/parser.nit:9240 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9243 */
+  /* parser/parser.nit:9241 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9244 */
+  /* parser/parser.nit:9242 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9245 */
+  /* parser/parser.nit:9243 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9246 */
+  /* parser/parser.nit:9244 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9247 */
+  /* parser/parser.nit:9245 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9248 */
+  /* parser/parser.nit:9246 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9250 */
+  /* parser/parser.nit:9248 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9248);
+  }
+  /* parser/parser.nit:9250 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9250);
   }
   /* parser/parser.nit:9252 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9252);
   }
   /* parser/parser.nit:9254 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9254);
   }
   /* parser/parser.nit:9256 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9256);
   }
   /* parser/parser.nit:9258 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9258);
   }
   /* parser/parser.nit:9260 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9260);
-  }
-  /* parser/parser.nit:9262 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9262);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9260);
   }
-  /* parser/parser.nit:9263 */
+  /* parser/parser.nit:9261 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:9274 */
+  /* parser/parser.nit:9272 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9275 */
+  /* parser/parser.nit:9273 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9275);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9273);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27338,7 +27307,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 = 9280;
+  fra.me.line = 9278;
   fra.me.meth = LOCATE_parser___ReduceAction188___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -27356,81 +27325,81 @@ void parser___ReduceAction188___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:9282 */
+  /* parser/parser.nit:9280 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9283 */
+  /* parser/parser.nit:9281 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9284 */
+  /* parser/parser.nit:9282 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9285 */
+  /* parser/parser.nit:9283 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9286 */
+  /* parser/parser.nit:9284 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9287 */
+  /* parser/parser.nit:9285 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9288 */
+  /* parser/parser.nit:9286 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9289 */
+  /* parser/parser.nit:9287 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9290 */
+  /* parser/parser.nit:9288 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9292 */
+  /* parser/parser.nit:9290 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9290);
+  }
+  /* parser/parser.nit:9292 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9292);
   }
   /* parser/parser.nit:9294 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9294);
   }
   /* parser/parser.nit:9296 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9296);
   }
   /* parser/parser.nit:9298 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9298);
   }
   /* parser/parser.nit:9300 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9300);
   }
   /* parser/parser.nit:9302 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9302);
   }
   /* parser/parser.nit:9304 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9304);
-  }
-  /* parser/parser.nit:9306 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9306);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9304);
   }
-  /* parser/parser.nit:9307 */
+  /* parser/parser.nit:9305 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:9318 */
+  /* parser/parser.nit:9316 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9319 */
+  /* parser/parser.nit:9317 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9319);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9317);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27445,7 +27414,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 = 9324;
+  fra.me.line = 9322;
   fra.me.meth = LOCATE_parser___ReduceAction189___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -27459,49 +27428,49 @@ 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:9326 */
+  /* parser/parser.nit:9324 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9327 */
+  /* parser/parser.nit:9325 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9328 */
+  /* parser/parser.nit:9326 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9329 */
+  /* parser/parser.nit:9327 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9330 */
+  /* parser/parser.nit:9328 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9332 */
+  /* parser/parser.nit:9330 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9332);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9330);
   }
-  /* parser/parser.nit:9334 */
+  /* parser/parser.nit:9332 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9334);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9332);
   }
-  /* parser/parser.nit:9336 */
+  /* parser/parser.nit:9334 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9336);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9334);
   }
-  /* parser/parser.nit:9338 */
+  /* parser/parser.nit:9336 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9338);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9336);
   }
-  /* parser/parser.nit:9339 */
+  /* parser/parser.nit:9337 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9352 */
+  /* parser/parser.nit:9350 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9353 */
+  /* parser/parser.nit:9351 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9353);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9351);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27516,7 +27485,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 = 9358;
+  fra.me.line = 9356;
   fra.me.meth = LOCATE_parser___ReduceAction190___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -27531,57 +27500,57 @@ 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:9360 */
+  /* parser/parser.nit:9358 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9361 */
+  /* parser/parser.nit:9359 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9362 */
+  /* parser/parser.nit:9360 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9363 */
+  /* parser/parser.nit:9361 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9364 */
+  /* parser/parser.nit:9362 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9365 */
+  /* parser/parser.nit:9363 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9367 */
+  /* parser/parser.nit:9365 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9367);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9365);
   }
-  /* parser/parser.nit:9369 */
+  /* parser/parser.nit:9367 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9369);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9367);
   }
-  /* parser/parser.nit:9371 */
+  /* parser/parser.nit:9369 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9371);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9369);
   }
-  /* parser/parser.nit:9373 */
+  /* parser/parser.nit:9371 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9373);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9371);
   }
-  /* parser/parser.nit:9375 */
+  /* parser/parser.nit:9373 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9375);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9373);
   }
-  /* parser/parser.nit:9376 */
+  /* parser/parser.nit:9374 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9389 */
+  /* parser/parser.nit:9387 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9390 */
+  /* parser/parser.nit:9388 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9390);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9388);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27596,7 +27565,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 = 9395;
+  fra.me.line = 9393;
   fra.me.meth = LOCATE_parser___ReduceAction191___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -27611,57 +27580,57 @@ void parser___ReduceAction191___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:9397 */
+  /* parser/parser.nit:9395 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9398 */
+  /* parser/parser.nit:9396 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9399 */
+  /* parser/parser.nit:9397 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9400 */
+  /* parser/parser.nit:9398 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9401 */
+  /* parser/parser.nit:9399 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9402 */
+  /* parser/parser.nit:9400 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9404 */
+  /* parser/parser.nit:9402 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9402);
   }
-  /* parser/parser.nit:9406 */
+  /* parser/parser.nit:9404 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9406);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9404);
   }
-  /* parser/parser.nit:9408 */
+  /* parser/parser.nit:9406 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9408);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9406);
   }
-  /* parser/parser.nit:9410 */
+  /* parser/parser.nit:9408 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9410);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9408);
   }
-  /* parser/parser.nit:9412 */
+  /* parser/parser.nit:9410 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9412);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9410);
   }
-  /* parser/parser.nit:9413 */
+  /* parser/parser.nit:9411 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], fra.me.REG[6], NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9426 */
+  /* parser/parser.nit:9424 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9427 */
+  /* parser/parser.nit:9425 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9427);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9425);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27676,7 +27645,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 = 9432;
+  fra.me.line = 9430;
   fra.me.meth = LOCATE_parser___ReduceAction192___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -27692,65 +27661,65 @@ void parser___ReduceAction192___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:9434 */
+  /* parser/parser.nit:9432 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9435 */
+  /* parser/parser.nit:9433 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9436 */
+  /* parser/parser.nit:9434 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9437 */
+  /* parser/parser.nit:9435 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9438 */
+  /* parser/parser.nit:9436 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9439 */
+  /* parser/parser.nit:9437 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9440 */
+  /* parser/parser.nit:9438 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9442 */
+  /* parser/parser.nit:9440 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9440);
+  }
+  /* parser/parser.nit:9442 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9442);
   }
   /* parser/parser.nit:9444 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9444);
   }
   /* parser/parser.nit:9446 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9446);
   }
   /* parser/parser.nit:9448 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9448);
   }
   /* parser/parser.nit:9450 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9450);
-  }
-  /* parser/parser.nit:9452 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9452);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9450);
   }
-  /* parser/parser.nit:9453 */
+  /* parser/parser.nit:9451 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9466 */
+  /* parser/parser.nit:9464 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9467 */
+  /* parser/parser.nit:9465 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9467);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9465);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27765,7 +27734,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 = 9472;
+  fra.me.line = 9470;
   fra.me.meth = LOCATE_parser___ReduceAction193___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -27780,57 +27749,57 @@ void parser___ReduceAction193___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:9474 */
+  /* parser/parser.nit:9472 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9475 */
+  /* parser/parser.nit:9473 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9476 */
+  /* parser/parser.nit:9474 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9477 */
+  /* parser/parser.nit:9475 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9478 */
+  /* parser/parser.nit:9476 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9479 */
+  /* parser/parser.nit:9477 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9481 */
+  /* parser/parser.nit:9479 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9481);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9479);
   }
-  /* parser/parser.nit:9483 */
+  /* parser/parser.nit:9481 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9483);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9481);
   }
-  /* parser/parser.nit:9485 */
+  /* parser/parser.nit:9483 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9485);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9483);
   }
-  /* parser/parser.nit:9487 */
+  /* parser/parser.nit:9485 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9487);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9485);
   }
-  /* parser/parser.nit:9489 */
+  /* parser/parser.nit:9487 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9487);
   }
-  /* parser/parser.nit:9490 */
+  /* parser/parser.nit:9488 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9503 */
+  /* parser/parser.nit:9501 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9504 */
+  /* parser/parser.nit:9502 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9504);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9502);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27845,7 +27814,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 = 9509;
+  fra.me.line = 9507;
   fra.me.meth = LOCATE_parser___ReduceAction194___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -27861,65 +27830,65 @@ void parser___ReduceAction194___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:9511 */
+  /* parser/parser.nit:9509 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9512 */
+  /* parser/parser.nit:9510 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9513 */
+  /* parser/parser.nit:9511 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9514 */
+  /* parser/parser.nit:9512 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9515 */
+  /* parser/parser.nit:9513 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9516 */
+  /* parser/parser.nit:9514 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9517 */
+  /* parser/parser.nit:9515 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9519 */
+  /* parser/parser.nit:9517 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9517);
+  }
+  /* parser/parser.nit:9519 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9519);
   }
   /* parser/parser.nit:9521 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9521);
   }
   /* parser/parser.nit:9523 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9523);
   }
   /* parser/parser.nit:9525 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9525);
   }
   /* parser/parser.nit:9527 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9527);
-  }
-  /* parser/parser.nit:9529 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9529);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9527);
   }
-  /* parser/parser.nit:9530 */
+  /* parser/parser.nit:9528 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9543 */
+  /* parser/parser.nit:9541 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9544 */
+  /* parser/parser.nit:9542 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9544);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9542);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27934,7 +27903,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 = 9549;
+  fra.me.line = 9547;
   fra.me.meth = LOCATE_parser___ReduceAction195___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -27950,65 +27919,65 @@ void parser___ReduceAction195___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:9551 */
+  /* parser/parser.nit:9549 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9552 */
+  /* parser/parser.nit:9550 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9553 */
+  /* parser/parser.nit:9551 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9554 */
+  /* parser/parser.nit:9552 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9555 */
+  /* parser/parser.nit:9553 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9556 */
+  /* parser/parser.nit:9554 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9557 */
+  /* parser/parser.nit:9555 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9559 */
+  /* parser/parser.nit:9557 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9557);
+  }
+  /* parser/parser.nit:9559 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9559);
   }
   /* parser/parser.nit:9561 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9561);
   }
   /* parser/parser.nit:9563 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9563);
   }
   /* parser/parser.nit:9565 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9565);
   }
   /* parser/parser.nit:9567 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9567);
-  }
-  /* parser/parser.nit:9569 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9569);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9567);
   }
-  /* parser/parser.nit:9570 */
+  /* parser/parser.nit:9568 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9583 */
+  /* parser/parser.nit:9581 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9584 */
+  /* parser/parser.nit:9582 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9584);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9582);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28023,7 +27992,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 = 9589;
+  fra.me.line = 9587;
   fra.me.meth = LOCATE_parser___ReduceAction196___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -28040,73 +28009,73 @@ void parser___ReduceAction196___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:9591 */
+  /* parser/parser.nit:9589 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9592 */
+  /* parser/parser.nit:9590 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9593 */
+  /* parser/parser.nit:9591 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9594 */
+  /* parser/parser.nit:9592 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9595 */
+  /* parser/parser.nit:9593 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9596 */
+  /* parser/parser.nit:9594 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9597 */
+  /* parser/parser.nit:9595 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9598 */
+  /* parser/parser.nit:9596 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9600 */
+  /* parser/parser.nit:9598 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9598);
+  }
+  /* parser/parser.nit:9600 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9600);
   }
   /* parser/parser.nit:9602 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9602);
   }
   /* parser/parser.nit:9604 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9604);
   }
   /* parser/parser.nit:9606 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9606);
   }
   /* parser/parser.nit:9608 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9608);
   }
   /* parser/parser.nit:9610 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9610);
-  }
-  /* parser/parser.nit:9612 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9612);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9610);
   }
-  /* parser/parser.nit:9613 */
+  /* parser/parser.nit:9611 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9626 */
+  /* parser/parser.nit:9624 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9627 */
+  /* parser/parser.nit:9625 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9627);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9625);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28121,7 +28090,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 = 9632;
+  fra.me.line = 9630;
   fra.me.meth = LOCATE_parser___ReduceAction197___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -28136,57 +28105,57 @@ void parser___ReduceAction197___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:9634 */
+  /* parser/parser.nit:9632 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9635 */
+  /* parser/parser.nit:9633 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9636 */
+  /* parser/parser.nit:9634 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9637 */
+  /* parser/parser.nit:9635 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9638 */
+  /* parser/parser.nit:9636 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9639 */
+  /* parser/parser.nit:9637 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9641 */
+  /* parser/parser.nit:9639 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9641);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9639);
   }
-  /* parser/parser.nit:9643 */
+  /* parser/parser.nit:9641 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9643);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9641);
   }
-  /* parser/parser.nit:9645 */
+  /* parser/parser.nit:9643 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9645);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9643);
   }
-  /* parser/parser.nit:9647 */
+  /* parser/parser.nit:9645 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9647);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9645);
   }
-  /* parser/parser.nit:9649 */
+  /* parser/parser.nit:9647 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9649);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9647);
   }
-  /* parser/parser.nit:9650 */
+  /* parser/parser.nit:9648 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9663 */
+  /* parser/parser.nit:9661 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9664 */
+  /* parser/parser.nit:9662 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9664);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9662);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28201,7 +28170,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 = 9669;
+  fra.me.line = 9667;
   fra.me.meth = LOCATE_parser___ReduceAction198___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -28217,65 +28186,65 @@ void parser___ReduceAction198___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:9671 */
+  /* parser/parser.nit:9669 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9672 */
+  /* parser/parser.nit:9670 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9673 */
+  /* parser/parser.nit:9671 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9674 */
+  /* parser/parser.nit:9672 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9675 */
+  /* parser/parser.nit:9673 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9676 */
+  /* parser/parser.nit:9674 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9677 */
+  /* parser/parser.nit:9675 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9679 */
+  /* parser/parser.nit:9677 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9677);
+  }
+  /* parser/parser.nit:9679 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9679);
   }
   /* parser/parser.nit:9681 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9681);
   }
   /* parser/parser.nit:9683 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9683);
   }
   /* parser/parser.nit:9685 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9685);
   }
   /* parser/parser.nit:9687 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9687);
-  }
-  /* parser/parser.nit:9689 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9689);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9687);
   }
-  /* parser/parser.nit:9690 */
+  /* parser/parser.nit:9688 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9703 */
+  /* parser/parser.nit:9701 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9704 */
+  /* parser/parser.nit:9702 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9704);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9702);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28290,7 +28259,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 = 9709;
+  fra.me.line = 9707;
   fra.me.meth = LOCATE_parser___ReduceAction199___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -28306,65 +28275,65 @@ void parser___ReduceAction199___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:9711 */
+  /* parser/parser.nit:9709 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9712 */
+  /* parser/parser.nit:9710 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9713 */
+  /* parser/parser.nit:9711 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9714 */
+  /* parser/parser.nit:9712 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9715 */
+  /* parser/parser.nit:9713 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9716 */
+  /* parser/parser.nit:9714 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9717 */
+  /* parser/parser.nit:9715 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9719 */
+  /* parser/parser.nit:9717 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9717);
+  }
+  /* parser/parser.nit:9719 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9719);
   }
   /* parser/parser.nit:9721 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9721);
   }
   /* parser/parser.nit:9723 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9723);
   }
   /* parser/parser.nit:9725 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9725);
   }
   /* parser/parser.nit:9727 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9727);
-  }
-  /* parser/parser.nit:9729 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9729);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9727);
   }
-  /* parser/parser.nit:9730 */
+  /* parser/parser.nit:9728 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9743 */
+  /* parser/parser.nit:9741 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9744 */
+  /* parser/parser.nit:9742 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9744);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9742);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28379,7 +28348,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 = 9749;
+  fra.me.line = 9747;
   fra.me.meth = LOCATE_parser___ReduceAction200___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -28396,73 +28365,73 @@ void parser___ReduceAction200___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:9751 */
+  /* parser/parser.nit:9749 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9752 */
+  /* parser/parser.nit:9750 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9753 */
+  /* parser/parser.nit:9751 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9754 */
+  /* parser/parser.nit:9752 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9755 */
+  /* parser/parser.nit:9753 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9756 */
+  /* parser/parser.nit:9754 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9757 */
+  /* parser/parser.nit:9755 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9758 */
+  /* parser/parser.nit:9756 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9760 */
+  /* parser/parser.nit:9758 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9758);
+  }
+  /* parser/parser.nit:9760 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9760);
   }
   /* parser/parser.nit:9762 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9762);
   }
   /* parser/parser.nit:9764 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9764);
   }
   /* parser/parser.nit:9766 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9766);
   }
   /* parser/parser.nit:9768 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9768);
   }
   /* parser/parser.nit:9770 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9770);
-  }
-  /* parser/parser.nit:9772 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9772);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9770);
   }
-  /* parser/parser.nit:9773 */
+  /* parser/parser.nit:9771 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9786 */
+  /* parser/parser.nit:9784 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9787 */
+  /* parser/parser.nit:9785 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9787);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9785);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28477,7 +28446,7 @@ void parser___ReduceAction201___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9792;
+  fra.me.line = 9790;
   fra.me.meth = LOCATE_parser___ReduceAction201___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -28493,65 +28462,65 @@ void parser___ReduceAction201___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:9794 */
+  /* parser/parser.nit:9792 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9795 */
+  /* parser/parser.nit:9793 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9796 */
+  /* parser/parser.nit:9794 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9797 */
+  /* parser/parser.nit:9795 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9798 */
+  /* parser/parser.nit:9796 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9799 */
+  /* parser/parser.nit:9797 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9800 */
+  /* parser/parser.nit:9798 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9802 */
+  /* parser/parser.nit:9800 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9800);
+  }
+  /* parser/parser.nit:9802 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9802);
   }
   /* parser/parser.nit:9804 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9804);
   }
   /* parser/parser.nit:9806 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9806);
   }
   /* parser/parser.nit:9808 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9808);
   }
   /* parser/parser.nit:9810 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9810);
-  }
-  /* parser/parser.nit:9812 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9810);
   }
-  /* parser/parser.nit:9813 */
+  /* parser/parser.nit:9811 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9826 */
+  /* parser/parser.nit:9824 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9827 */
+  /* parser/parser.nit:9825 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9827);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9825);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28566,7 +28535,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 = 9832;
+  fra.me.line = 9830;
   fra.me.meth = LOCATE_parser___ReduceAction202___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -28583,73 +28552,73 @@ void parser___ReduceAction202___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:9834 */
+  /* parser/parser.nit:9832 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9835 */
+  /* parser/parser.nit:9833 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9836 */
+  /* parser/parser.nit:9834 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9837 */
+  /* parser/parser.nit:9835 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9838 */
+  /* parser/parser.nit:9836 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9839 */
+  /* parser/parser.nit:9837 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9840 */
+  /* parser/parser.nit:9838 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9841 */
+  /* parser/parser.nit:9839 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9843 */
+  /* parser/parser.nit:9841 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9841);
+  }
+  /* parser/parser.nit:9843 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9843);
   }
   /* parser/parser.nit:9845 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9845);
   }
   /* parser/parser.nit:9847 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9847);
   }
   /* parser/parser.nit:9849 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9849);
   }
   /* parser/parser.nit:9851 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9851);
   }
   /* parser/parser.nit:9853 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9853);
-  }
-  /* parser/parser.nit:9855 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9855);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9853);
   }
-  /* parser/parser.nit:9856 */
+  /* parser/parser.nit:9854 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9869 */
+  /* parser/parser.nit:9867 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9870 */
+  /* parser/parser.nit:9868 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9870);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9868);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28664,7 +28633,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 = 9875;
+  fra.me.line = 9873;
   fra.me.meth = LOCATE_parser___ReduceAction203___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -28681,73 +28650,73 @@ void parser___ReduceAction203___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:9877 */
+  /* parser/parser.nit:9875 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9878 */
+  /* parser/parser.nit:9876 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9879 */
+  /* parser/parser.nit:9877 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9880 */
+  /* parser/parser.nit:9878 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9881 */
+  /* parser/parser.nit:9879 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9882 */
+  /* parser/parser.nit:9880 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9883 */
+  /* parser/parser.nit:9881 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9884 */
+  /* parser/parser.nit:9882 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9886 */
+  /* parser/parser.nit:9884 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9884);
+  }
+  /* parser/parser.nit:9886 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9886);
   }
   /* parser/parser.nit:9888 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9888);
   }
   /* parser/parser.nit:9890 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9890);
   }
   /* parser/parser.nit:9892 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9892);
   }
   /* parser/parser.nit:9894 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9894);
   }
   /* parser/parser.nit:9896 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9896);
-  }
-  /* parser/parser.nit:9898 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9898);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9896);
   }
-  /* parser/parser.nit:9899 */
+  /* parser/parser.nit:9897 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9912 */
+  /* parser/parser.nit:9910 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9913 */
+  /* parser/parser.nit:9911 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9913);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9911);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28762,7 +28731,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 = 9918;
+  fra.me.line = 9916;
   fra.me.meth = LOCATE_parser___ReduceAction204___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -28780,81 +28749,81 @@ void parser___ReduceAction204___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:9920 */
+  /* parser/parser.nit:9918 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9921 */
+  /* parser/parser.nit:9919 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9922 */
+  /* parser/parser.nit:9920 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9923 */
+  /* parser/parser.nit:9921 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9924 */
+  /* parser/parser.nit:9922 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9925 */
+  /* parser/parser.nit:9923 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9926 */
+  /* parser/parser.nit:9924 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9927 */
+  /* parser/parser.nit:9925 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9928 */
+  /* parser/parser.nit:9926 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9930 */
+  /* parser/parser.nit:9928 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9928);
+  }
+  /* parser/parser.nit:9930 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9930);
   }
   /* parser/parser.nit:9932 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9932);
   }
   /* parser/parser.nit:9934 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9934);
   }
   /* parser/parser.nit:9936 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9936);
   }
   /* parser/parser.nit:9938 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9938);
   }
   /* parser/parser.nit:9940 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9940);
   }
   /* parser/parser.nit:9942 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9942);
-  }
-  /* parser/parser.nit:9944 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9944);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9942);
   }
-  /* parser/parser.nit:9945 */
+  /* parser/parser.nit:9943 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:9958 */
+  /* parser/parser.nit:9956 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9959 */
+  /* parser/parser.nit:9957 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9959);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9957);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28869,7 +28838,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 = 9964;
+  fra.me.line = 9962;
   fra.me.meth = LOCATE_parser___ReduceAction205___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -28884,61 +28853,61 @@ void parser___ReduceAction205___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:9966 */
+  /* parser/parser.nit:9964 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9967 */
+  /* parser/parser.nit:9965 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9968 */
+  /* parser/parser.nit:9966 */
   fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9972 */
+  /* parser/parser.nit:9970 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9973 */
+  /* parser/parser.nit:9971 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9975 */
+  /* parser/parser.nit:9973 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9973);
   }
-  /* parser/parser.nit:9977 */
+  /* parser/parser.nit:9975 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9977);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9975);
   }
-  /* parser/parser.nit:9979 */
+  /* parser/parser.nit:9977 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9979);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9977);
   }
-  /* parser/parser.nit:9981 */
+  /* parser/parser.nit:9979 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9981);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9979);
   }
-  /* parser/parser.nit:9983 */
+  /* parser/parser.nit:9981 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9983);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9981);
   }
-  /* parser/parser.nit:9984 */
+  /* parser/parser.nit:9982 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:9997 */
+  /* parser/parser.nit:9995 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9998 */
+  /* parser/parser.nit:9996 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9998);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9996);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28953,7 +28922,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 = 10003;
+  fra.me.line = 10001;
   fra.me.meth = LOCATE_parser___ReduceAction206___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -28969,69 +28938,69 @@ void parser___ReduceAction206___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:10005 */
+  /* parser/parser.nit:10003 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10006 */
+  /* parser/parser.nit:10004 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10007 */
+  /* parser/parser.nit:10005 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10008 */
+  /* parser/parser.nit:10006 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10009 */
+  /* parser/parser.nit:10007 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10010 */
+  /* parser/parser.nit:10008 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10011 */
+  /* parser/parser.nit:10009 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10012 */
+  /* parser/parser.nit:10010 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10013 */
+  /* parser/parser.nit:10011 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10015 */
+  /* parser/parser.nit:10013 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10013);
+  }
+  /* parser/parser.nit:10015 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10015);
   }
   /* parser/parser.nit:10017 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10017);
   }
   /* parser/parser.nit:10019 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10019);
   }
   /* parser/parser.nit:10021 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10021);
   }
   /* parser/parser.nit:10023 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10023);
-  }
-  /* parser/parser.nit:10025 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10025);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10023);
   }
-  /* parser/parser.nit:10026 */
+  /* parser/parser.nit:10024 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10039 */
+  /* parser/parser.nit:10037 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10040 */
+  /* parser/parser.nit:10038 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10040);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10038);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29046,7 +29015,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 = 10045;
+  fra.me.line = 10043;
   fra.me.meth = LOCATE_parser___ReduceAction207___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29062,69 +29031,69 @@ void parser___ReduceAction207___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:10047 */
+  /* parser/parser.nit:10045 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10048 */
+  /* parser/parser.nit:10046 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10049 */
+  /* parser/parser.nit:10047 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10050 */
+  /* parser/parser.nit:10048 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10051 */
+  /* parser/parser.nit:10049 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10052 */
+  /* parser/parser.nit:10050 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10053 */
+  /* parser/parser.nit:10051 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10054 */
+  /* parser/parser.nit:10052 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10055 */
+  /* parser/parser.nit:10053 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10057 */
+  /* parser/parser.nit:10055 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10055);
+  }
+  /* parser/parser.nit:10057 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10057);
   }
   /* parser/parser.nit:10059 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10059);
   }
   /* parser/parser.nit:10061 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10061);
   }
   /* parser/parser.nit:10063 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10063);
   }
   /* parser/parser.nit:10065 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10065);
-  }
-  /* parser/parser.nit:10067 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10067);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10065);
   }
-  /* parser/parser.nit:10068 */
+  /* parser/parser.nit:10066 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10081 */
+  /* parser/parser.nit:10079 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10082 */
+  /* parser/parser.nit:10080 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10082);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10080);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29139,7 +29108,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 = 10087;
+  fra.me.line = 10085;
   fra.me.meth = LOCATE_parser___ReduceAction208___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -29156,77 +29125,77 @@ void parser___ReduceAction208___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:10089 */
+  /* parser/parser.nit:10087 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10090 */
+  /* parser/parser.nit:10088 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10091 */
+  /* parser/parser.nit:10089 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10092 */
+  /* parser/parser.nit:10090 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10093 */
+  /* parser/parser.nit:10091 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10094 */
+  /* parser/parser.nit:10092 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10095 */
+  /* parser/parser.nit:10093 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10096 */
+  /* parser/parser.nit:10094 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10097 */
+  /* parser/parser.nit:10095 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10098 */
+  /* parser/parser.nit:10096 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10100 */
+  /* parser/parser.nit:10098 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10098);
+  }
+  /* parser/parser.nit:10100 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10100);
   }
   /* parser/parser.nit:10102 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10102);
   }
   /* parser/parser.nit:10104 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10104);
   }
   /* parser/parser.nit:10106 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10106);
   }
   /* parser/parser.nit:10108 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10108);
   }
   /* parser/parser.nit:10110 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10110);
-  }
-  /* parser/parser.nit:10112 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10112);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10110);
   }
-  /* parser/parser.nit:10113 */
+  /* parser/parser.nit:10111 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit: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___ReduceAction____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___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29241,7 +29210,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 = 10132;
+  fra.me.line = 10130;
   fra.me.meth = LOCATE_parser___ReduceAction209___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29257,69 +29226,69 @@ void parser___ReduceAction209___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:10134 */
+  /* parser/parser.nit:10132 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10135 */
+  /* parser/parser.nit:10133 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10136 */
+  /* parser/parser.nit:10134 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10137 */
+  /* parser/parser.nit:10135 */
   fra.me.REG[4] = 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:10139 */
+  /* parser/parser.nit:10137 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10140 */
+  /* parser/parser.nit:10138 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10141 */
+  /* parser/parser.nit:10139 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10142 */
+  /* parser/parser.nit:10140 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10144 */
+  /* parser/parser.nit:10142 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10142);
+  }
+  /* parser/parser.nit:10144 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10144);
   }
   /* parser/parser.nit:10146 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10146);
   }
   /* parser/parser.nit:10148 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10148);
   }
   /* parser/parser.nit:10150 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10150);
   }
   /* parser/parser.nit:10152 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10152);
-  }
-  /* parser/parser.nit:10154 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10154);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10152);
   }
-  /* parser/parser.nit:10155 */
+  /* parser/parser.nit:10153 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10168 */
+  /* parser/parser.nit:10166 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10169 */
+  /* parser/parser.nit:10167 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10169);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10167);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29334,7 +29303,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 = 10174;
+  fra.me.line = 10172;
   fra.me.meth = LOCATE_parser___ReduceAction210___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -29351,77 +29320,77 @@ void parser___ReduceAction210___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:10176 */
+  /* parser/parser.nit:10174 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10177 */
+  /* parser/parser.nit:10175 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10178 */
+  /* parser/parser.nit:10176 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10179 */
+  /* parser/parser.nit:10177 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10180 */
+  /* parser/parser.nit:10178 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10181 */
+  /* parser/parser.nit:10179 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10182 */
+  /* parser/parser.nit:10180 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10183 */
+  /* parser/parser.nit:10181 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10184 */
+  /* parser/parser.nit:10182 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10185 */
+  /* parser/parser.nit:10183 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10187 */
+  /* parser/parser.nit:10185 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10185);
+  }
+  /* parser/parser.nit:10187 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10187);
   }
   /* parser/parser.nit:10189 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10189);
   }
   /* parser/parser.nit:10191 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10191);
   }
   /* parser/parser.nit:10193 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10193);
   }
   /* parser/parser.nit:10195 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10195);
   }
   /* parser/parser.nit:10197 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10197);
-  }
-  /* parser/parser.nit:10199 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10199);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10197);
   }
-  /* parser/parser.nit:10200 */
+  /* parser/parser.nit:10198 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10213 */
+  /* parser/parser.nit:10211 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10214 */
+  /* parser/parser.nit:10212 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10214);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10212);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29436,7 +29405,7 @@ void parser___ReduceAction211___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10219;
+  fra.me.line = 10217;
   fra.me.meth = LOCATE_parser___ReduceAction211___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -29453,77 +29422,77 @@ void parser___ReduceAction211___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:10221 */
+  /* parser/parser.nit:10219 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10222 */
+  /* parser/parser.nit:10220 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10223 */
+  /* parser/parser.nit:10221 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10224 */
+  /* parser/parser.nit:10222 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10225 */
+  /* parser/parser.nit:10223 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10226 */
+  /* parser/parser.nit:10224 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10227 */
+  /* parser/parser.nit:10225 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10228 */
+  /* parser/parser.nit:10226 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10229 */
+  /* parser/parser.nit:10227 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10230 */
+  /* parser/parser.nit:10228 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10232 */
+  /* parser/parser.nit:10230 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10230);
+  }
+  /* parser/parser.nit:10232 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10232);
   }
   /* parser/parser.nit:10234 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10234);
   }
   /* parser/parser.nit:10236 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10236);
   }
   /* parser/parser.nit:10238 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10238);
   }
   /* parser/parser.nit:10240 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10240);
   }
   /* parser/parser.nit:10242 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10242);
-  }
-  /* parser/parser.nit:10244 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10244);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10242);
   }
-  /* parser/parser.nit:10245 */
+  /* parser/parser.nit:10243 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10258 */
+  /* parser/parser.nit:10256 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10259 */
+  /* parser/parser.nit:10257 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10259);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10257);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29538,7 +29507,7 @@ void parser___ReduceAction212___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10264;
+  fra.me.line = 10262;
   fra.me.meth = LOCATE_parser___ReduceAction212___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -29556,85 +29525,85 @@ void parser___ReduceAction212___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:10266 */
+  /* parser/parser.nit:10264 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10267 */
+  /* parser/parser.nit:10265 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10268 */
+  /* parser/parser.nit:10266 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10269 */
+  /* parser/parser.nit:10267 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10270 */
+  /* parser/parser.nit:10268 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10271 */
+  /* parser/parser.nit:10269 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10272 */
+  /* parser/parser.nit:10270 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10273 */
+  /* parser/parser.nit:10271 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10274 */
+  /* parser/parser.nit:10272 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10275 */
+  /* parser/parser.nit:10273 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10276 */
+  /* parser/parser.nit:10274 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10278 */
+  /* parser/parser.nit:10276 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10276);
+  }
+  /* parser/parser.nit:10278 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10278);
   }
   /* parser/parser.nit:10280 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10280);
   }
   /* parser/parser.nit:10282 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10282);
   }
   /* parser/parser.nit:10284 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10284);
   }
   /* parser/parser.nit:10286 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10286);
   }
   /* parser/parser.nit:10288 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10288);
   }
   /* parser/parser.nit:10290 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10290);
-  }
-  /* parser/parser.nit:10292 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10292);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10290);
   }
-  /* parser/parser.nit:10293 */
+  /* parser/parser.nit:10291 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10306 */
+  /* parser/parser.nit:10304 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10307 */
+  /* parser/parser.nit:10305 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10307);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10305);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29649,7 +29618,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 = 10312;
+  fra.me.line = 10310;
   fra.me.meth = LOCATE_parser___ReduceAction213___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29665,69 +29634,69 @@ void parser___ReduceAction213___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:10314 */
+  /* parser/parser.nit:10312 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10315 */
+  /* parser/parser.nit:10313 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10316 */
+  /* parser/parser.nit:10314 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10317 */
+  /* parser/parser.nit:10315 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10318 */
+  /* parser/parser.nit:10316 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10319 */
+  /* parser/parser.nit:10317 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10320 */
+  /* parser/parser.nit:10318 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10321 */
+  /* parser/parser.nit:10319 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10322 */
+  /* parser/parser.nit:10320 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10324 */
+  /* parser/parser.nit:10322 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10322);
+  }
+  /* parser/parser.nit:10324 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10324);
   }
   /* parser/parser.nit:10326 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10326);
   }
   /* parser/parser.nit:10328 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10328);
   }
   /* parser/parser.nit:10330 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10330);
   }
   /* parser/parser.nit:10332 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10332);
-  }
-  /* parser/parser.nit:10334 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10334);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10332);
   }
-  /* parser/parser.nit:10335 */
+  /* parser/parser.nit:10333 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10348 */
+  /* parser/parser.nit:10346 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10349 */
+  /* parser/parser.nit:10347 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10349);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10347);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29742,7 +29711,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 = 10354;
+  fra.me.line = 10352;
   fra.me.meth = LOCATE_parser___ReduceAction214___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -29759,77 +29728,77 @@ void parser___ReduceAction214___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:10356 */
+  /* parser/parser.nit:10354 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10357 */
+  /* parser/parser.nit:10355 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10358 */
+  /* parser/parser.nit:10356 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10359 */
+  /* parser/parser.nit:10357 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10360 */
+  /* parser/parser.nit:10358 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10361 */
+  /* parser/parser.nit:10359 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10362 */
+  /* parser/parser.nit:10360 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10363 */
+  /* parser/parser.nit:10361 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10364 */
+  /* parser/parser.nit:10362 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10365 */
+  /* parser/parser.nit:10363 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10367 */
+  /* parser/parser.nit:10365 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10365);
+  }
+  /* parser/parser.nit:10367 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10367);
   }
   /* parser/parser.nit:10369 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10369);
   }
   /* parser/parser.nit:10371 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10371);
   }
   /* parser/parser.nit:10373 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10373);
   }
   /* parser/parser.nit:10375 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10375);
   }
   /* parser/parser.nit:10377 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10377);
-  }
-  /* parser/parser.nit:10379 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10379);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10377);
   }
-  /* parser/parser.nit:10380 */
+  /* parser/parser.nit:10378 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10393 */
+  /* parser/parser.nit:10391 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10394 */
+  /* parser/parser.nit:10392 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10394);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10392);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29844,7 +29813,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 = 10399;
+  fra.me.line = 10397;
   fra.me.meth = LOCATE_parser___ReduceAction215___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -29861,77 +29830,77 @@ void parser___ReduceAction215___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:10401 */
+  /* parser/parser.nit:10399 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10402 */
+  /* parser/parser.nit:10400 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10403 */
+  /* parser/parser.nit:10401 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10404 */
+  /* parser/parser.nit:10402 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10405 */
+  /* parser/parser.nit:10403 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10406 */
+  /* parser/parser.nit:10404 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10407 */
+  /* parser/parser.nit:10405 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10408 */
+  /* parser/parser.nit:10406 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10409 */
+  /* parser/parser.nit:10407 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10410 */
+  /* parser/parser.nit:10408 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10412 */
+  /* parser/parser.nit:10410 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10410);
+  }
+  /* parser/parser.nit:10412 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10412);
   }
   /* parser/parser.nit:10414 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10414);
   }
   /* parser/parser.nit:10416 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10416);
   }
   /* parser/parser.nit:10418 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10418);
   }
   /* parser/parser.nit:10420 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10420);
   }
   /* parser/parser.nit:10422 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10422);
-  }
-  /* parser/parser.nit:10424 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10424);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10422);
   }
-  /* parser/parser.nit:10425 */
+  /* parser/parser.nit:10423 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10438 */
+  /* parser/parser.nit:10436 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10439 */
+  /* parser/parser.nit:10437 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10439);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10437);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29946,7 +29915,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 = 10444;
+  fra.me.line = 10442;
   fra.me.meth = LOCATE_parser___ReduceAction216___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -29964,85 +29933,85 @@ void parser___ReduceAction216___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:10446 */
+  /* parser/parser.nit:10444 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10447 */
+  /* parser/parser.nit:10445 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10448 */
+  /* parser/parser.nit:10446 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10449 */
+  /* parser/parser.nit:10447 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10450 */
+  /* parser/parser.nit:10448 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10451 */
+  /* parser/parser.nit:10449 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10452 */
+  /* parser/parser.nit:10450 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10453 */
+  /* parser/parser.nit:10451 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10454 */
+  /* parser/parser.nit:10452 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10455 */
+  /* parser/parser.nit:10453 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10456 */
+  /* parser/parser.nit:10454 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10458 */
+  /* parser/parser.nit:10456 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10456);
+  }
+  /* parser/parser.nit:10458 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10458);
   }
   /* parser/parser.nit:10460 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10460);
   }
   /* parser/parser.nit:10462 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10462);
   }
   /* parser/parser.nit:10464 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10464);
   }
   /* parser/parser.nit:10466 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10466);
   }
   /* parser/parser.nit:10468 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10468);
   }
   /* parser/parser.nit:10470 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10470);
-  }
-  /* parser/parser.nit:10472 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10472);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10470);
   }
-  /* parser/parser.nit:10473 */
+  /* parser/parser.nit:10471 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10486 */
+  /* parser/parser.nit:10484 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10487 */
+  /* parser/parser.nit:10485 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10487);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10485);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30057,7 +30026,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 = 10492;
+  fra.me.line = 10490;
   fra.me.meth = LOCATE_parser___ReduceAction217___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -30074,77 +30043,77 @@ void parser___ReduceAction217___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:10494 */
+  /* parser/parser.nit:10492 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10495 */
+  /* parser/parser.nit:10493 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10496 */
+  /* parser/parser.nit:10494 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10497 */
+  /* parser/parser.nit:10495 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10498 */
+  /* parser/parser.nit:10496 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10499 */
+  /* parser/parser.nit:10497 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10500 */
+  /* parser/parser.nit:10498 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10501 */
+  /* parser/parser.nit:10499 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10502 */
+  /* parser/parser.nit:10500 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10503 */
+  /* parser/parser.nit:10501 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10505 */
+  /* parser/parser.nit:10503 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10503);
+  }
+  /* parser/parser.nit:10505 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10505);
   }
   /* parser/parser.nit:10507 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10507);
   }
   /* parser/parser.nit:10509 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10509);
   }
   /* parser/parser.nit:10511 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10511);
   }
   /* parser/parser.nit:10513 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10513);
   }
   /* parser/parser.nit:10515 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10515);
-  }
-  /* parser/parser.nit:10517 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10517);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10515);
   }
-  /* parser/parser.nit:10518 */
+  /* parser/parser.nit:10516 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10531 */
+  /* parser/parser.nit:10529 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10532 */
+  /* parser/parser.nit:10530 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10532);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10530);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30159,7 +30128,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 = 10537;
+  fra.me.line = 10535;
   fra.me.meth = LOCATE_parser___ReduceAction218___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -30177,85 +30146,85 @@ void parser___ReduceAction218___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:10539 */
+  /* parser/parser.nit:10537 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10540 */
+  /* parser/parser.nit:10538 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10541 */
+  /* parser/parser.nit:10539 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10542 */
+  /* parser/parser.nit:10540 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10543 */
+  /* parser/parser.nit:10541 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10544 */
+  /* parser/parser.nit:10542 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10545 */
+  /* parser/parser.nit:10543 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10546 */
+  /* parser/parser.nit:10544 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10547 */
+  /* parser/parser.nit:10545 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10548 */
+  /* parser/parser.nit:10546 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10549 */
+  /* parser/parser.nit:10547 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10551 */
+  /* parser/parser.nit:10549 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10549);
+  }
+  /* parser/parser.nit:10551 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10551);
   }
   /* parser/parser.nit:10553 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10553);
   }
   /* parser/parser.nit:10555 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10555);
   }
   /* parser/parser.nit:10557 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10557);
   }
   /* parser/parser.nit:10559 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10559);
   }
   /* parser/parser.nit:10561 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10561);
   }
   /* parser/parser.nit:10563 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10563);
-  }
-  /* parser/parser.nit:10565 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10565);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10563);
   }
-  /* parser/parser.nit:10566 */
+  /* parser/parser.nit:10564 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10579 */
+  /* parser/parser.nit:10577 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10580 */
+  /* parser/parser.nit:10578 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10580);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10578);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30270,7 +30239,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 = 10585;
+  fra.me.line = 10583;
   fra.me.meth = LOCATE_parser___ReduceAction219___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -30288,85 +30257,85 @@ void parser___ReduceAction219___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:10587 */
+  /* parser/parser.nit:10585 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10588 */
+  /* parser/parser.nit:10586 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10589 */
+  /* parser/parser.nit:10587 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10590 */
+  /* parser/parser.nit:10588 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10591 */
+  /* parser/parser.nit:10589 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10592 */
+  /* parser/parser.nit:10590 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10593 */
+  /* parser/parser.nit:10591 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10594 */
+  /* parser/parser.nit:10592 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10595 */
+  /* parser/parser.nit:10593 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10596 */
+  /* parser/parser.nit:10594 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10597 */
+  /* parser/parser.nit:10595 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10599 */
+  /* parser/parser.nit:10597 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10597);
+  }
+  /* parser/parser.nit:10599 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10599);
   }
   /* parser/parser.nit:10601 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10601);
   }
   /* parser/parser.nit:10603 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10603);
   }
   /* parser/parser.nit:10605 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10605);
   }
   /* parser/parser.nit:10607 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10607);
   }
   /* parser/parser.nit:10609 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10609);
   }
   /* parser/parser.nit:10611 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10611);
-  }
-  /* parser/parser.nit:10613 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10613);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10611);
   }
-  /* parser/parser.nit:10614 */
+  /* parser/parser.nit:10612 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit: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___ReduceAction____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___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30381,7 +30350,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 = 10633;
+  fra.me.line = 10631;
   fra.me.meth = LOCATE_parser___ReduceAction220___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -30400,93 +30369,93 @@ void parser___ReduceAction220___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:10635 */
+  /* parser/parser.nit:10633 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10636 */
+  /* parser/parser.nit:10634 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10637 */
+  /* parser/parser.nit:10635 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10638 */
+  /* parser/parser.nit:10636 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10639 */
+  /* parser/parser.nit:10637 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10640 */
+  /* parser/parser.nit:10638 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10641 */
+  /* parser/parser.nit:10639 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10642 */
+  /* parser/parser.nit:10640 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10643 */
+  /* parser/parser.nit:10641 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10644 */
+  /* parser/parser.nit:10642 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10645 */
+  /* parser/parser.nit:10643 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10646 */
+  /* parser/parser.nit:10644 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10648 */
+  /* parser/parser.nit:10646 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10646);
+  }
+  /* parser/parser.nit:10648 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10648);
   }
   /* parser/parser.nit:10650 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10650);
   }
   /* parser/parser.nit:10652 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10652);
   }
   /* parser/parser.nit:10654 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10654);
   }
   /* parser/parser.nit:10656 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10656);
   }
   /* parser/parser.nit:10658 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10658);
   }
   /* parser/parser.nit:10660 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10660);
   }
   /* parser/parser.nit:10662 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10662);
-  }
-  /* parser/parser.nit:10664 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10664);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10662);
   }
-  /* parser/parser.nit:10665 */
+  /* parser/parser.nit:10663 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:10678 */
+  /* parser/parser.nit:10676 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10679 */
+  /* parser/parser.nit:10677 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10679);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10677);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30501,7 +30470,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 = 10684;
+  fra.me.line = 10682;
   fra.me.meth = LOCATE_parser___ReduceAction221___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -30515,49 +30484,49 @@ void parser___ReduceAction221___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:10686 */
+  /* parser/parser.nit:10684 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10687 */
+  /* parser/parser.nit:10685 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10688 */
+  /* parser/parser.nit:10686 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10689 */
+  /* parser/parser.nit:10687 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10690 */
+  /* parser/parser.nit:10688 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10692 */
+  /* parser/parser.nit:10690 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10692);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10690);
   }
-  /* parser/parser.nit:10694 */
+  /* parser/parser.nit:10692 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10694);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10692);
   }
-  /* parser/parser.nit:10696 */
+  /* parser/parser.nit:10694 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10696);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10694);
   }
-  /* parser/parser.nit:10698 */
+  /* parser/parser.nit:10696 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10698);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10696);
   }
-  /* parser/parser.nit:10699 */
+  /* parser/parser.nit:10697 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10712 */
+  /* parser/parser.nit:10710 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10713 */
+  /* parser/parser.nit:10711 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10713);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10711);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30572,7 +30541,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 = 10718;
+  fra.me.line = 10716;
   fra.me.meth = LOCATE_parser___ReduceAction222___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -30587,57 +30556,57 @@ void parser___ReduceAction222___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:10720 */
+  /* parser/parser.nit:10718 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10721 */
+  /* parser/parser.nit:10719 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10722 */
+  /* parser/parser.nit:10720 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10723 */
+  /* parser/parser.nit:10721 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10724 */
+  /* parser/parser.nit:10722 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10725 */
+  /* parser/parser.nit:10723 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10727 */
+  /* parser/parser.nit:10725 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10727);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10725);
   }
-  /* parser/parser.nit:10729 */
+  /* parser/parser.nit:10727 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10729);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10727);
   }
-  /* parser/parser.nit:10731 */
+  /* parser/parser.nit:10729 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10731);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10729);
   }
-  /* parser/parser.nit:10733 */
+  /* parser/parser.nit:10731 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10733);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10731);
   }
-  /* parser/parser.nit:10735 */
+  /* parser/parser.nit:10733 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10735);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10733);
   }
-  /* parser/parser.nit:10736 */
+  /* parser/parser.nit:10734 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10749 */
+  /* parser/parser.nit:10747 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10750 */
+  /* parser/parser.nit:10748 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10750);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10748);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30652,7 +30621,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 = 10755;
+  fra.me.line = 10753;
   fra.me.meth = LOCATE_parser___ReduceAction223___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -30667,57 +30636,57 @@ void parser___ReduceAction223___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:10757 */
+  /* parser/parser.nit:10755 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10758 */
+  /* parser/parser.nit:10756 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10759 */
+  /* parser/parser.nit:10757 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10760 */
+  /* parser/parser.nit:10758 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10761 */
+  /* parser/parser.nit:10759 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10762 */
+  /* parser/parser.nit:10760 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10764 */
+  /* parser/parser.nit:10762 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10764);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10762);
   }
-  /* parser/parser.nit:10766 */
+  /* parser/parser.nit:10764 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10766);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10764);
   }
-  /* parser/parser.nit:10768 */
+  /* parser/parser.nit:10766 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10768);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10766);
   }
-  /* parser/parser.nit:10770 */
+  /* parser/parser.nit:10768 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10770);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10768);
   }
-  /* parser/parser.nit:10772 */
+  /* parser/parser.nit:10770 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10772);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10770);
   }
-  /* parser/parser.nit:10773 */
+  /* parser/parser.nit:10771 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10786 */
+  /* parser/parser.nit:10784 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10787 */
+  /* parser/parser.nit:10785 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10787);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10785);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30732,7 +30701,7 @@ void parser___ReduceAction224___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10792;
+  fra.me.line = 10790;
   fra.me.meth = LOCATE_parser___ReduceAction224___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -30748,65 +30717,65 @@ void parser___ReduceAction224___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:10794 */
+  /* parser/parser.nit:10792 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10795 */
+  /* parser/parser.nit:10793 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10796 */
+  /* parser/parser.nit:10794 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10797 */
+  /* parser/parser.nit:10795 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10798 */
+  /* parser/parser.nit:10796 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10799 */
+  /* parser/parser.nit:10797 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10800 */
+  /* parser/parser.nit:10798 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10802 */
+  /* parser/parser.nit:10800 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10800);
+  }
+  /* parser/parser.nit:10802 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10802);
   }
   /* parser/parser.nit:10804 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10804);
   }
   /* parser/parser.nit:10806 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10806);
   }
   /* parser/parser.nit:10808 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10808);
   }
   /* parser/parser.nit:10810 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10810);
-  }
-  /* parser/parser.nit:10812 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10810);
   }
-  /* parser/parser.nit:10813 */
+  /* parser/parser.nit:10811 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10826 */
+  /* parser/parser.nit:10824 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10827 */
+  /* parser/parser.nit:10825 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10827);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10825);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30821,7 +30790,7 @@ void parser___ReduceAction225___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10832;
+  fra.me.line = 10830;
   fra.me.meth = LOCATE_parser___ReduceAction225___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -30836,57 +30805,57 @@ void parser___ReduceAction225___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:10834 */
+  /* parser/parser.nit:10832 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10835 */
+  /* parser/parser.nit:10833 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10836 */
+  /* parser/parser.nit:10834 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10837 */
+  /* parser/parser.nit:10835 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10838 */
+  /* parser/parser.nit:10836 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10839 */
+  /* parser/parser.nit:10837 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10841 */
+  /* parser/parser.nit:10839 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10841);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10839);
   }
-  /* parser/parser.nit:10843 */
+  /* parser/parser.nit:10841 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10843);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10841);
   }
-  /* parser/parser.nit:10845 */
+  /* parser/parser.nit:10843 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10845);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10843);
   }
-  /* parser/parser.nit:10847 */
+  /* parser/parser.nit:10845 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10847);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10845);
   }
-  /* parser/parser.nit:10849 */
+  /* parser/parser.nit:10847 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10849);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10847);
   }
-  /* parser/parser.nit:10850 */
+  /* parser/parser.nit:10848 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10863 */
+  /* parser/parser.nit:10861 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10864 */
+  /* parser/parser.nit:10862 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10864);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10862);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30901,7 +30870,7 @@ void parser___ReduceAction226___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10869;
+  fra.me.line = 10867;
   fra.me.meth = LOCATE_parser___ReduceAction226___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -30917,65 +30886,65 @@ void parser___ReduceAction226___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:10871 */
+  /* parser/parser.nit:10869 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10872 */
+  /* parser/parser.nit:10870 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10873 */
+  /* parser/parser.nit:10871 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10874 */
+  /* parser/parser.nit:10872 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10875 */
+  /* parser/parser.nit:10873 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10876 */
+  /* parser/parser.nit:10874 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10877 */
+  /* parser/parser.nit:10875 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10879 */
+  /* parser/parser.nit:10877 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10877);
+  }
+  /* parser/parser.nit:10879 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10879);
   }
   /* parser/parser.nit:10881 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10881);
   }
   /* parser/parser.nit:10883 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10883);
   }
   /* parser/parser.nit:10885 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10885);
   }
   /* parser/parser.nit:10887 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10887);
-  }
-  /* parser/parser.nit:10889 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10889);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10887);
   }
-  /* parser/parser.nit:10890 */
+  /* parser/parser.nit:10888 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10903 */
+  /* parser/parser.nit:10901 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10904 */
+  /* parser/parser.nit:10902 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10904);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10902);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30990,7 +30959,7 @@ void parser___ReduceAction227___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10909;
+  fra.me.line = 10907;
   fra.me.meth = LOCATE_parser___ReduceAction227___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -31006,65 +30975,65 @@ void parser___ReduceAction227___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:10911 */
+  /* parser/parser.nit:10909 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10912 */
+  /* parser/parser.nit:10910 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10913 */
+  /* parser/parser.nit:10911 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10914 */
+  /* parser/parser.nit:10912 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10915 */
+  /* parser/parser.nit:10913 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10916 */
+  /* parser/parser.nit:10914 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10917 */
+  /* parser/parser.nit:10915 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10919 */
+  /* parser/parser.nit:10917 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10917);
+  }
+  /* parser/parser.nit:10919 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10919);
   }
   /* parser/parser.nit:10921 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10921);
   }
   /* parser/parser.nit:10923 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10923);
   }
   /* parser/parser.nit:10925 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10925);
   }
   /* parser/parser.nit:10927 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10927);
-  }
-  /* parser/parser.nit:10929 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10929);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10927);
   }
-  /* parser/parser.nit:10930 */
+  /* parser/parser.nit:10928 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10943 */
+  /* parser/parser.nit:10941 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10944 */
+  /* parser/parser.nit:10942 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10944);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10942);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31079,7 +31048,7 @@ void parser___ReduceAction228___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10949;
+  fra.me.line = 10947;
   fra.me.meth = LOCATE_parser___ReduceAction228___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -31096,73 +31065,73 @@ void parser___ReduceAction228___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:10951 */
+  /* parser/parser.nit:10949 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10952 */
+  /* parser/parser.nit:10950 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10953 */
+  /* parser/parser.nit:10951 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10954 */
+  /* parser/parser.nit:10952 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10955 */
+  /* parser/parser.nit:10953 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10956 */
+  /* parser/parser.nit:10954 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10957 */
+  /* parser/parser.nit:10955 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10958 */
+  /* parser/parser.nit:10956 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10960 */
+  /* parser/parser.nit:10958 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10958);
+  }
+  /* parser/parser.nit:10960 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10960);
   }
   /* parser/parser.nit:10962 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10962);
   }
   /* parser/parser.nit:10964 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10964);
   }
   /* parser/parser.nit:10966 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10966);
   }
   /* parser/parser.nit:10968 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 10968);
   }
   /* parser/parser.nit:10970 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10970);
-  }
-  /* parser/parser.nit:10972 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10972);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10970);
   }
-  /* parser/parser.nit:10973 */
+  /* parser/parser.nit:10971 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[3], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:10986 */
+  /* parser/parser.nit:10984 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10987 */
+  /* parser/parser.nit:10985 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10987);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10985);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31177,7 +31146,7 @@ void parser___ReduceAction229___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10992;
+  fra.me.line = 10990;
   fra.me.meth = LOCATE_parser___ReduceAction229___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -31192,57 +31161,57 @@ void parser___ReduceAction229___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:10994 */
+  /* parser/parser.nit:10992 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10995 */
+  /* parser/parser.nit:10993 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10996 */
+  /* parser/parser.nit:10994 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10997 */
+  /* parser/parser.nit:10995 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10998 */
+  /* parser/parser.nit:10996 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10999 */
+  /* parser/parser.nit:10997 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11001 */
+  /* parser/parser.nit:10999 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11001);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10999);
   }
-  /* parser/parser.nit:11003 */
+  /* parser/parser.nit:11001 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11003);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11001);
   }
-  /* parser/parser.nit:11005 */
+  /* parser/parser.nit:11003 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11005);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11003);
   }
-  /* parser/parser.nit:11007 */
+  /* parser/parser.nit:11005 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11007);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11005);
   }
-  /* parser/parser.nit:11009 */
+  /* parser/parser.nit:11007 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11009);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11007);
   }
-  /* parser/parser.nit:11010 */
+  /* parser/parser.nit:11008 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11023 */
+  /* parser/parser.nit:11021 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11024 */
+  /* parser/parser.nit:11022 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11024);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11022);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31257,7 +31226,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 = 11029;
+  fra.me.line = 11027;
   fra.me.meth = LOCATE_parser___ReduceAction230___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -31273,65 +31242,65 @@ void parser___ReduceAction230___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:11031 */
+  /* parser/parser.nit:11029 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11032 */
+  /* parser/parser.nit:11030 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11033 */
+  /* parser/parser.nit:11031 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11034 */
+  /* parser/parser.nit:11032 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11035 */
+  /* parser/parser.nit:11033 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11036 */
+  /* parser/parser.nit:11034 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11037 */
+  /* parser/parser.nit:11035 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11039 */
+  /* parser/parser.nit:11037 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11037);
+  }
+  /* parser/parser.nit:11039 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11039);
   }
   /* parser/parser.nit:11041 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11041);
   }
   /* parser/parser.nit:11043 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11043);
   }
   /* parser/parser.nit:11045 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11045);
   }
   /* parser/parser.nit:11047 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11047);
-  }
-  /* parser/parser.nit:11049 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11049);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11047);
   }
-  /* parser/parser.nit:11050 */
+  /* parser/parser.nit:11048 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11063 */
+  /* parser/parser.nit:11061 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11064 */
+  /* parser/parser.nit:11062 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11064);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11062);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31346,7 +31315,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 = 11069;
+  fra.me.line = 11067;
   fra.me.meth = LOCATE_parser___ReduceAction231___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -31362,65 +31331,65 @@ void parser___ReduceAction231___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:11071 */
+  /* parser/parser.nit:11069 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11072 */
+  /* parser/parser.nit:11070 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11073 */
+  /* parser/parser.nit:11071 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11074 */
+  /* parser/parser.nit:11072 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11075 */
+  /* parser/parser.nit:11073 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11076 */
+  /* parser/parser.nit:11074 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11077 */
+  /* parser/parser.nit:11075 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11079 */
+  /* parser/parser.nit:11077 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11077);
+  }
+  /* parser/parser.nit:11079 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11079);
   }
   /* parser/parser.nit:11081 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11081);
   }
   /* parser/parser.nit:11083 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11083);
   }
   /* parser/parser.nit:11085 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11085);
   }
   /* parser/parser.nit:11087 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11087);
-  }
-  /* parser/parser.nit:11089 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11089);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11087);
   }
-  /* parser/parser.nit:11090 */
+  /* parser/parser.nit:11088 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11103 */
+  /* parser/parser.nit:11101 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11104 */
+  /* parser/parser.nit:11102 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11104);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11102);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31435,7 +31404,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 = 11109;
+  fra.me.line = 11107;
   fra.me.meth = LOCATE_parser___ReduceAction232___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -31452,73 +31421,73 @@ void parser___ReduceAction232___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:11111 */
+  /* parser/parser.nit:11109 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11112 */
+  /* parser/parser.nit:11110 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11113 */
+  /* parser/parser.nit:11111 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11114 */
+  /* parser/parser.nit:11112 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11115 */
+  /* parser/parser.nit:11113 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11116 */
+  /* parser/parser.nit:11114 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11117 */
+  /* parser/parser.nit:11115 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11118 */
+  /* parser/parser.nit:11116 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11120 */
+  /* parser/parser.nit:11118 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11118);
+  }
+  /* parser/parser.nit:11120 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11120);
   }
   /* parser/parser.nit:11122 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11122);
   }
   /* parser/parser.nit:11124 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11124);
   }
   /* parser/parser.nit:11126 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11126);
   }
   /* parser/parser.nit:11128 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11128);
   }
   /* parser/parser.nit:11130 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11130);
-  }
-  /* parser/parser.nit:11132 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11130);
   }
-  /* parser/parser.nit:11133 */
+  /* parser/parser.nit:11131 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11146 */
+  /* parser/parser.nit:11144 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11147 */
+  /* parser/parser.nit:11145 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11147);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11145);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31533,7 +31502,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 = 11152;
+  fra.me.line = 11150;
   fra.me.meth = LOCATE_parser___ReduceAction233___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -31549,65 +31518,65 @@ 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:11154 */
+  /* parser/parser.nit:11152 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11155 */
+  /* parser/parser.nit:11153 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11156 */
+  /* parser/parser.nit:11154 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11157 */
+  /* parser/parser.nit:11155 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11158 */
+  /* parser/parser.nit:11156 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11159 */
+  /* parser/parser.nit:11157 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11160 */
+  /* parser/parser.nit:11158 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11162 */
+  /* parser/parser.nit:11160 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11160);
+  }
+  /* parser/parser.nit:11162 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11162);
   }
   /* parser/parser.nit:11164 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11164);
   }
   /* parser/parser.nit:11166 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11166);
   }
   /* parser/parser.nit:11168 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11168);
   }
   /* parser/parser.nit:11170 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11170);
-  }
-  /* parser/parser.nit:11172 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11172);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11170);
   }
-  /* parser/parser.nit:11173 */
+  /* parser/parser.nit:11171 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11186 */
+  /* parser/parser.nit:11184 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11187 */
+  /* parser/parser.nit:11185 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11187);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11185);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31622,7 +31591,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 = 11192;
+  fra.me.line = 11190;
   fra.me.meth = LOCATE_parser___ReduceAction234___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -31639,73 +31608,73 @@ void parser___ReduceAction234___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:11194 */
+  /* parser/parser.nit:11192 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11195 */
+  /* parser/parser.nit:11193 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11196 */
+  /* parser/parser.nit:11194 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11197 */
+  /* parser/parser.nit:11195 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11198 */
+  /* parser/parser.nit:11196 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11199 */
+  /* parser/parser.nit:11197 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11200 */
+  /* parser/parser.nit:11198 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11201 */
+  /* parser/parser.nit:11199 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11203 */
+  /* parser/parser.nit:11201 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11201);
+  }
+  /* parser/parser.nit:11203 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11203);
   }
   /* parser/parser.nit:11205 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11205);
   }
   /* parser/parser.nit:11207 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11207);
   }
   /* parser/parser.nit:11209 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11209);
   }
   /* parser/parser.nit:11211 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11211);
   }
   /* parser/parser.nit:11213 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11213);
-  }
-  /* parser/parser.nit:11215 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11215);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11213);
   }
-  /* parser/parser.nit:11216 */
+  /* parser/parser.nit:11214 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11229 */
+  /* parser/parser.nit:11227 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11230 */
+  /* parser/parser.nit:11228 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11230);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11228);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31720,7 +31689,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 = 11235;
+  fra.me.line = 11233;
   fra.me.meth = LOCATE_parser___ReduceAction235___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -31737,73 +31706,73 @@ void parser___ReduceAction235___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:11237 */
+  /* parser/parser.nit:11235 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11238 */
+  /* parser/parser.nit:11236 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11239 */
+  /* parser/parser.nit:11237 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11240 */
+  /* parser/parser.nit:11238 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11241 */
+  /* parser/parser.nit:11239 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11242 */
+  /* parser/parser.nit:11240 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11243 */
+  /* parser/parser.nit:11241 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11244 */
+  /* parser/parser.nit:11242 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11246 */
+  /* parser/parser.nit:11244 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11244);
+  }
+  /* parser/parser.nit:11246 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11246);
   }
   /* parser/parser.nit:11248 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11248);
   }
   /* parser/parser.nit:11250 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11250);
   }
   /* parser/parser.nit:11252 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11252);
   }
   /* parser/parser.nit:11254 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11254);
   }
   /* parser/parser.nit:11256 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11256);
-  }
-  /* parser/parser.nit:11258 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11258);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11256);
   }
-  /* parser/parser.nit:11259 */
+  /* parser/parser.nit:11257 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11272 */
+  /* parser/parser.nit:11270 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11273 */
+  /* parser/parser.nit:11271 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11273);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11271);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31818,7 +31787,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 = 11278;
+  fra.me.line = 11276;
   fra.me.meth = LOCATE_parser___ReduceAction236___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -31836,81 +31805,81 @@ void parser___ReduceAction236___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:11280 */
+  /* parser/parser.nit:11278 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11281 */
+  /* parser/parser.nit:11279 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11282 */
+  /* parser/parser.nit:11280 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11283 */
+  /* parser/parser.nit:11281 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11284 */
+  /* parser/parser.nit:11282 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11285 */
+  /* parser/parser.nit:11283 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11286 */
+  /* parser/parser.nit:11284 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11287 */
+  /* parser/parser.nit:11285 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11288 */
+  /* parser/parser.nit:11286 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11290 */
+  /* parser/parser.nit:11288 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11288);
+  }
+  /* parser/parser.nit:11290 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11290);
   }
   /* parser/parser.nit:11292 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11292);
   }
   /* parser/parser.nit:11294 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11294);
   }
   /* parser/parser.nit:11296 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11296);
   }
   /* parser/parser.nit:11298 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11298);
   }
   /* parser/parser.nit:11300 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11300);
   }
   /* parser/parser.nit:11302 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11302);
-  }
-  /* parser/parser.nit:11304 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11304);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11302);
   }
-  /* parser/parser.nit:11305 */
+  /* parser/parser.nit:11303 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:11318 */
+  /* parser/parser.nit:11316 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11319 */
+  /* parser/parser.nit:11317 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11319);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11317);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31925,7 +31894,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 = 11324;
+  fra.me.line = 11322;
   fra.me.meth = LOCATE_parser___ReduceAction237___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -31940,61 +31909,61 @@ void parser___ReduceAction237___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:11326 */
+  /* parser/parser.nit:11324 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11327 */
+  /* parser/parser.nit:11325 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11328 */
+  /* parser/parser.nit:11326 */
   fra.me.REG[4] = 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11331 */
+  /* parser/parser.nit:11329 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11332 */
+  /* parser/parser.nit:11330 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11333 */
+  /* parser/parser.nit:11331 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11335 */
+  /* parser/parser.nit:11333 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11335);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11333);
   }
-  /* parser/parser.nit:11337 */
+  /* parser/parser.nit:11335 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11337);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11335);
   }
-  /* parser/parser.nit:11339 */
+  /* parser/parser.nit:11337 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11339);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11337);
   }
-  /* parser/parser.nit:11341 */
+  /* parser/parser.nit:11339 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11341);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11339);
   }
-  /* parser/parser.nit:11343 */
+  /* parser/parser.nit:11341 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11343);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11341);
   }
-  /* parser/parser.nit:11344 */
+  /* parser/parser.nit:11342 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11357 */
+  /* parser/parser.nit:11355 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11358 */
+  /* parser/parser.nit:11356 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11358);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11356);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32009,7 +31978,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 = 11363;
+  fra.me.line = 11361;
   fra.me.meth = LOCATE_parser___ReduceAction238___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -32025,69 +31994,69 @@ void parser___ReduceAction238___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: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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11369 */
+  /* parser/parser.nit:11367 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11370 */
+  /* parser/parser.nit:11368 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11371 */
+  /* parser/parser.nit:11369 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11372 */
+  /* parser/parser.nit:11370 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11373 */
+  /* parser/parser.nit:11371 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11375 */
+  /* parser/parser.nit:11373 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11373);
+  }
+  /* parser/parser.nit:11375 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11375);
   }
   /* parser/parser.nit:11377 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11377);
   }
   /* parser/parser.nit:11379 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11379);
   }
   /* parser/parser.nit:11381 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11381);
   }
   /* parser/parser.nit:11383 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11383);
-  }
-  /* parser/parser.nit:11385 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11385);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11383);
   }
-  /* parser/parser.nit:11386 */
+  /* parser/parser.nit:11384 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11399 */
+  /* parser/parser.nit:11397 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11400 */
+  /* parser/parser.nit:11398 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11400);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11398);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32102,7 +32071,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 = 11405;
+  fra.me.line = 11403;
   fra.me.meth = LOCATE_parser___ReduceAction239___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -32118,69 +32087,69 @@ void parser___ReduceAction239___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:11407 */
+  /* parser/parser.nit:11405 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11408 */
+  /* parser/parser.nit:11406 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11409 */
+  /* parser/parser.nit:11407 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11410 */
+  /* parser/parser.nit:11408 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11411 */
+  /* parser/parser.nit:11409 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11412 */
+  /* parser/parser.nit:11410 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11413 */
+  /* parser/parser.nit:11411 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11414 */
+  /* parser/parser.nit:11412 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11415 */
+  /* parser/parser.nit:11413 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11417 */
+  /* parser/parser.nit:11415 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11415);
+  }
+  /* parser/parser.nit:11417 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11417);
   }
   /* parser/parser.nit:11419 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11419);
   }
   /* parser/parser.nit:11421 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11421);
   }
   /* parser/parser.nit:11423 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11423);
   }
   /* parser/parser.nit:11425 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11425);
-  }
-  /* parser/parser.nit:11427 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11427);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11425);
   }
-  /* parser/parser.nit:11428 */
+  /* parser/parser.nit:11426 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11441 */
+  /* parser/parser.nit:11439 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11442 */
+  /* parser/parser.nit:11440 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11442);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11440);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32195,7 +32164,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 = 11447;
+  fra.me.line = 11445;
   fra.me.meth = LOCATE_parser___ReduceAction240___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -32212,77 +32181,77 @@ void parser___ReduceAction240___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:11449 */
+  /* parser/parser.nit:11447 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11450 */
+  /* parser/parser.nit:11448 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11451 */
+  /* parser/parser.nit:11449 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11452 */
+  /* parser/parser.nit:11450 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11453 */
+  /* parser/parser.nit:11451 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11454 */
+  /* parser/parser.nit:11452 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11455 */
+  /* parser/parser.nit:11453 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11456 */
+  /* parser/parser.nit:11454 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11457 */
+  /* parser/parser.nit:11455 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11458 */
+  /* parser/parser.nit:11456 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11460 */
+  /* parser/parser.nit:11458 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11458);
+  }
+  /* parser/parser.nit:11460 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11460);
   }
   /* parser/parser.nit:11462 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11462);
   }
   /* parser/parser.nit:11464 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11464);
   }
   /* parser/parser.nit:11466 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11466);
   }
   /* parser/parser.nit:11468 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11468);
   }
   /* parser/parser.nit:11470 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11470);
-  }
-  /* parser/parser.nit:11472 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11472);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11470);
   }
-  /* parser/parser.nit:11473 */
+  /* parser/parser.nit:11471 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11486 */
+  /* parser/parser.nit:11484 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11487 */
+  /* parser/parser.nit:11485 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11487);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11485);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32297,7 +32266,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 = 11492;
+  fra.me.line = 11490;
   fra.me.meth = LOCATE_parser___ReduceAction241___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -32313,69 +32282,69 @@ 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:11494 */
+  /* parser/parser.nit:11492 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11495 */
+  /* parser/parser.nit:11493 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11496 */
+  /* parser/parser.nit:11494 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11497 */
+  /* parser/parser.nit:11495 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11498 */
+  /* parser/parser.nit:11496 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11499 */
+  /* parser/parser.nit:11497 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11500 */
+  /* parser/parser.nit:11498 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11501 */
+  /* parser/parser.nit:11499 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11502 */
+  /* parser/parser.nit:11500 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11504 */
+  /* parser/parser.nit:11502 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11502);
+  }
+  /* parser/parser.nit:11504 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11504);
   }
   /* parser/parser.nit:11506 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11506);
   }
   /* parser/parser.nit:11508 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11508);
   }
   /* parser/parser.nit:11510 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11510);
   }
   /* parser/parser.nit:11512 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11512);
-  }
-  /* parser/parser.nit:11514 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11514);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11512);
   }
-  /* parser/parser.nit:11515 */
+  /* parser/parser.nit:11513 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11528 */
+  /* parser/parser.nit:11526 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11529 */
+  /* parser/parser.nit:11527 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11529);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11527);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32390,7 +32359,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 = 11534;
+  fra.me.line = 11532;
   fra.me.meth = LOCATE_parser___ReduceAction242___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -32407,77 +32376,77 @@ 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:11536 */
+  /* parser/parser.nit:11534 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11537 */
+  /* parser/parser.nit:11535 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11538 */
+  /* parser/parser.nit:11536 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11539 */
+  /* parser/parser.nit:11537 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11540 */
+  /* parser/parser.nit:11538 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11541 */
+  /* parser/parser.nit:11539 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11542 */
+  /* parser/parser.nit:11540 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11543 */
+  /* parser/parser.nit:11541 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11544 */
+  /* parser/parser.nit:11542 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11545 */
+  /* parser/parser.nit:11543 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11547 */
+  /* parser/parser.nit:11545 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11545);
+  }
+  /* parser/parser.nit:11547 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11547);
   }
   /* parser/parser.nit:11549 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11549);
   }
   /* parser/parser.nit:11551 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11551);
   }
   /* parser/parser.nit:11553 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11553);
   }
   /* parser/parser.nit:11555 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11555);
   }
   /* parser/parser.nit:11557 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11557);
-  }
-  /* parser/parser.nit:11559 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11559);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11557);
   }
-  /* parser/parser.nit:11560 */
+  /* parser/parser.nit:11558 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11573 */
+  /* parser/parser.nit:11571 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11574 */
+  /* parser/parser.nit:11572 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11574);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11572);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32492,7 +32461,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 = 11579;
+  fra.me.line = 11577;
   fra.me.meth = LOCATE_parser___ReduceAction243___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -32509,77 +32478,77 @@ void parser___ReduceAction243___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:11581 */
+  /* parser/parser.nit:11579 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11582 */
+  /* parser/parser.nit:11580 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11583 */
+  /* parser/parser.nit:11581 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11584 */
+  /* parser/parser.nit:11582 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11585 */
+  /* parser/parser.nit:11583 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11586 */
+  /* parser/parser.nit:11584 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11587 */
+  /* parser/parser.nit:11585 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11588 */
+  /* parser/parser.nit:11586 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11589 */
+  /* parser/parser.nit:11587 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11590 */
+  /* parser/parser.nit:11588 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11592 */
+  /* parser/parser.nit:11590 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11590);
+  }
+  /* parser/parser.nit:11592 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11592);
   }
   /* parser/parser.nit:11594 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11594);
   }
   /* parser/parser.nit:11596 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11596);
   }
   /* parser/parser.nit:11598 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11598);
   }
   /* parser/parser.nit:11600 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11600);
   }
   /* parser/parser.nit:11602 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11602);
-  }
-  /* parser/parser.nit:11604 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11604);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11602);
   }
-  /* parser/parser.nit:11605 */
+  /* parser/parser.nit:11603 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11618 */
+  /* parser/parser.nit:11616 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11619 */
+  /* parser/parser.nit:11617 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11619);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11617);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32594,7 +32563,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 = 11624;
+  fra.me.line = 11622;
   fra.me.meth = LOCATE_parser___ReduceAction244___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -32612,85 +32581,85 @@ void parser___ReduceAction244___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:11626 */
+  /* parser/parser.nit:11624 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11627 */
+  /* parser/parser.nit:11625 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11628 */
+  /* parser/parser.nit:11626 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11629 */
+  /* parser/parser.nit:11627 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11630 */
+  /* parser/parser.nit:11628 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11631 */
+  /* parser/parser.nit:11629 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11632 */
+  /* parser/parser.nit:11630 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11633 */
+  /* parser/parser.nit:11631 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11634 */
+  /* parser/parser.nit:11632 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11635 */
+  /* parser/parser.nit:11633 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11636 */
+  /* parser/parser.nit:11634 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11638 */
+  /* parser/parser.nit:11636 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11636);
+  }
+  /* parser/parser.nit:11638 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11638);
   }
   /* parser/parser.nit:11640 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11640);
   }
   /* parser/parser.nit:11642 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11642);
   }
   /* parser/parser.nit:11644 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11644);
   }
   /* parser/parser.nit:11646 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11646);
   }
   /* parser/parser.nit:11648 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11648);
   }
   /* parser/parser.nit:11650 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11650);
-  }
-  /* parser/parser.nit:11652 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11652);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11650);
   }
-  /* parser/parser.nit:11653 */
+  /* parser/parser.nit:11651 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:11666 */
+  /* parser/parser.nit:11664 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11667 */
+  /* parser/parser.nit:11665 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11667);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11665);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32705,7 +32674,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 = 11672;
+  fra.me.line = 11670;
   fra.me.meth = LOCATE_parser___ReduceAction245___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -32721,69 +32690,69 @@ void parser___ReduceAction245___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:11674 */
+  /* parser/parser.nit:11672 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11675 */
+  /* parser/parser.nit:11673 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11676 */
+  /* parser/parser.nit:11674 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11677 */
+  /* parser/parser.nit:11675 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11678 */
+  /* parser/parser.nit:11676 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11679 */
+  /* parser/parser.nit:11677 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11680 */
+  /* parser/parser.nit:11678 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11681 */
+  /* parser/parser.nit:11679 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11682 */
+  /* parser/parser.nit:11680 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11684 */
+  /* parser/parser.nit:11682 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11682);
+  }
+  /* parser/parser.nit:11684 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11684);
   }
   /* parser/parser.nit:11686 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11686);
   }
   /* parser/parser.nit:11688 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11688);
   }
   /* parser/parser.nit:11690 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11690);
   }
   /* parser/parser.nit:11692 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11692);
-  }
-  /* parser/parser.nit:11694 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11694);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11692);
   }
-  /* parser/parser.nit:11695 */
+  /* parser/parser.nit:11693 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11708 */
+  /* parser/parser.nit:11706 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11709 */
+  /* parser/parser.nit:11707 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11709);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11707);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32798,7 +32767,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 = 11714;
+  fra.me.line = 11712;
   fra.me.meth = LOCATE_parser___ReduceAction246___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -32815,77 +32784,77 @@ void parser___ReduceAction246___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:11716 */
+  /* parser/parser.nit:11714 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11717 */
+  /* parser/parser.nit:11715 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11718 */
+  /* parser/parser.nit:11716 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11719 */
+  /* parser/parser.nit:11717 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11720 */
+  /* parser/parser.nit:11718 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11721 */
+  /* parser/parser.nit:11719 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11722 */
+  /* parser/parser.nit:11720 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11723 */
+  /* parser/parser.nit:11721 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11724 */
+  /* parser/parser.nit:11722 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11725 */
+  /* parser/parser.nit:11723 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11727 */
+  /* parser/parser.nit:11725 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11725);
+  }
+  /* parser/parser.nit:11727 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11727);
   }
   /* parser/parser.nit:11729 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11729);
   }
   /* parser/parser.nit:11731 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11731);
   }
   /* parser/parser.nit:11733 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11733);
   }
   /* parser/parser.nit:11735 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11735);
   }
   /* parser/parser.nit:11737 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11737);
-  }
-  /* parser/parser.nit:11739 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11739);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11737);
   }
-  /* parser/parser.nit:11740 */
+  /* parser/parser.nit:11738 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11753 */
+  /* parser/parser.nit:11751 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11754 */
+  /* parser/parser.nit:11752 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11754);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11752);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32900,7 +32869,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 = 11759;
+  fra.me.line = 11757;
   fra.me.meth = LOCATE_parser___ReduceAction247___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -32917,77 +32886,77 @@ void parser___ReduceAction247___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:11761 */
+  /* parser/parser.nit:11759 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11762 */
+  /* parser/parser.nit:11760 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11763 */
+  /* parser/parser.nit:11761 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11764 */
+  /* parser/parser.nit:11762 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11765 */
+  /* parser/parser.nit:11763 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11766 */
+  /* parser/parser.nit:11764 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11767 */
+  /* parser/parser.nit:11765 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11768 */
+  /* parser/parser.nit:11766 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11769 */
+  /* parser/parser.nit:11767 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11770 */
+  /* parser/parser.nit:11768 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11772 */
+  /* parser/parser.nit:11770 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11770);
+  }
+  /* parser/parser.nit:11772 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11772);
   }
   /* parser/parser.nit:11774 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11774);
   }
   /* parser/parser.nit:11776 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11776);
   }
   /* parser/parser.nit:11778 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11778);
   }
   /* parser/parser.nit:11780 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11780);
   }
   /* parser/parser.nit:11782 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11782);
-  }
-  /* parser/parser.nit:11784 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11784);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11782);
   }
-  /* parser/parser.nit:11785 */
+  /* parser/parser.nit:11783 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11798 */
+  /* parser/parser.nit:11796 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11799 */
+  /* parser/parser.nit:11797 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11799);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11797);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33002,7 +32971,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 = 11804;
+  fra.me.line = 11802;
   fra.me.meth = LOCATE_parser___ReduceAction248___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -33020,85 +32989,85 @@ void parser___ReduceAction248___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:11806 */
+  /* parser/parser.nit:11804 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11807 */
+  /* parser/parser.nit:11805 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11808 */
+  /* parser/parser.nit:11806 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11809 */
+  /* parser/parser.nit:11807 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11810 */
+  /* parser/parser.nit:11808 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11811 */
+  /* parser/parser.nit:11809 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11812 */
+  /* parser/parser.nit:11810 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11813 */
+  /* parser/parser.nit:11811 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11814 */
+  /* parser/parser.nit:11812 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11815 */
+  /* parser/parser.nit:11813 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11816 */
+  /* parser/parser.nit:11814 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11818 */
+  /* parser/parser.nit:11816 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11816);
+  }
+  /* parser/parser.nit:11818 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11818);
   }
   /* parser/parser.nit:11820 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11820);
   }
   /* parser/parser.nit:11822 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11822);
   }
   /* parser/parser.nit:11824 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11824);
   }
   /* parser/parser.nit:11826 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11826);
   }
   /* parser/parser.nit:11828 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11828);
   }
   /* parser/parser.nit:11830 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11830);
-  }
-  /* parser/parser.nit:11832 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11832);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11830);
   }
-  /* parser/parser.nit:11833 */
+  /* parser/parser.nit:11831 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11846 */
+  /* parser/parser.nit:11844 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11847 */
+  /* parser/parser.nit:11845 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11847);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11845);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33113,7 +33082,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 = 11852;
+  fra.me.line = 11850;
   fra.me.meth = LOCATE_parser___ReduceAction249___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -33130,77 +33099,77 @@ void parser___ReduceAction249___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:11854 */
+  /* parser/parser.nit:11852 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11855 */
+  /* parser/parser.nit:11853 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11856 */
+  /* parser/parser.nit:11854 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11857 */
+  /* parser/parser.nit:11855 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11858 */
+  /* parser/parser.nit:11856 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11859 */
+  /* parser/parser.nit:11857 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11860 */
+  /* parser/parser.nit:11858 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11861 */
+  /* parser/parser.nit:11859 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11862 */
+  /* parser/parser.nit:11860 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11863 */
+  /* parser/parser.nit:11861 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11865 */
+  /* parser/parser.nit:11863 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11863);
+  }
+  /* parser/parser.nit:11865 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11865);
   }
   /* parser/parser.nit:11867 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11867);
   }
   /* parser/parser.nit:11869 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11869);
   }
   /* parser/parser.nit:11871 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11871);
   }
   /* parser/parser.nit:11873 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11873);
   }
   /* parser/parser.nit:11875 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11875);
-  }
-  /* parser/parser.nit:11877 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11877);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11875);
   }
-  /* parser/parser.nit:11878 */
+  /* parser/parser.nit:11876 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11891 */
+  /* parser/parser.nit:11889 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11892 */
+  /* parser/parser.nit:11890 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11892);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11890);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33215,7 +33184,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 = 11897;
+  fra.me.line = 11895;
   fra.me.meth = LOCATE_parser___ReduceAction250___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -33233,85 +33202,85 @@ void parser___ReduceAction250___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:11899 */
+  /* parser/parser.nit:11897 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11900 */
+  /* parser/parser.nit:11898 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11901 */
+  /* parser/parser.nit:11899 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11902 */
+  /* parser/parser.nit:11900 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11903 */
+  /* parser/parser.nit:11901 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11904 */
+  /* parser/parser.nit:11902 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11905 */
+  /* parser/parser.nit:11903 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11906 */
+  /* parser/parser.nit:11904 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11907 */
+  /* parser/parser.nit:11905 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11908 */
+  /* parser/parser.nit:11906 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11909 */
+  /* parser/parser.nit:11907 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11911 */
+  /* parser/parser.nit:11909 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11909);
+  }
+  /* parser/parser.nit:11911 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11911);
   }
   /* parser/parser.nit:11913 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11913);
   }
   /* parser/parser.nit:11915 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11915);
   }
   /* parser/parser.nit:11917 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11917);
   }
   /* parser/parser.nit:11919 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11919);
   }
   /* parser/parser.nit:11921 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11921);
   }
   /* parser/parser.nit:11923 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11923);
-  }
-  /* parser/parser.nit:11925 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11925);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11923);
   }
-  /* parser/parser.nit:11926 */
+  /* parser/parser.nit:11924 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[5], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11939 */
+  /* parser/parser.nit:11937 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11940 */
+  /* parser/parser.nit:11938 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11940);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11938);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33326,7 +33295,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 = 11945;
+  fra.me.line = 11943;
   fra.me.meth = LOCATE_parser___ReduceAction251___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -33344,85 +33313,85 @@ void parser___ReduceAction251___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:11947 */
+  /* parser/parser.nit:11945 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11948 */
+  /* parser/parser.nit:11946 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11949 */
+  /* parser/parser.nit:11947 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11950 */
+  /* parser/parser.nit:11948 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11951 */
+  /* parser/parser.nit:11949 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11952 */
+  /* parser/parser.nit:11950 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11953 */
+  /* parser/parser.nit:11951 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11954 */
+  /* parser/parser.nit:11952 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11955 */
+  /* parser/parser.nit:11953 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11956 */
+  /* parser/parser.nit:11954 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11957 */
+  /* parser/parser.nit:11955 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11959 */
+  /* parser/parser.nit:11957 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11957);
+  }
+  /* parser/parser.nit:11959 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11959);
   }
   /* parser/parser.nit:11961 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11961);
   }
   /* parser/parser.nit:11963 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11963);
   }
   /* parser/parser.nit:11965 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11965);
   }
   /* parser/parser.nit:11967 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11967);
   }
   /* parser/parser.nit:11969 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 11969);
   }
   /* parser/parser.nit:11971 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11971);
-  }
-  /* parser/parser.nit:11973 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11973);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11971);
   }
-  /* parser/parser.nit:11974 */
+  /* parser/parser.nit:11972 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:11987 */
+  /* parser/parser.nit:11985 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11988 */
+  /* parser/parser.nit:11986 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11988);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11986);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33437,7 +33406,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 = 11993;
+  fra.me.line = 11991;
   fra.me.meth = LOCATE_parser___ReduceAction252___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -33456,93 +33425,93 @@ void parser___ReduceAction252___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:11995 */
+  /* parser/parser.nit:11993 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11996 */
+  /* parser/parser.nit:11994 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11997 */
+  /* parser/parser.nit:11995 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11998 */
+  /* parser/parser.nit:11996 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11999 */
+  /* parser/parser.nit:11997 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12000 */
+  /* parser/parser.nit:11998 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12001 */
+  /* parser/parser.nit:11999 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12002 */
+  /* parser/parser.nit:12000 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12003 */
+  /* parser/parser.nit:12001 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12004 */
+  /* parser/parser.nit:12002 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12005 */
+  /* parser/parser.nit:12003 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12006 */
+  /* parser/parser.nit:12004 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12008 */
+  /* parser/parser.nit:12006 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12006);
+  }
+  /* parser/parser.nit:12008 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12008);
   }
   /* parser/parser.nit:12010 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12010);
   }
   /* parser/parser.nit:12012 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12012);
   }
   /* parser/parser.nit:12014 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12014);
   }
   /* parser/parser.nit:12016 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12016);
   }
   /* parser/parser.nit:12018 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12018);
   }
   /* parser/parser.nit:12020 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12020);
   }
   /* parser/parser.nit:12022 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12022);
-  }
-  /* parser/parser.nit:12024 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12024);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12022);
   }
-  /* parser/parser.nit:12025 */
+  /* parser/parser.nit:12023 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], NIT_NULL, fra.me.REG[5], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:12038 */
+  /* parser/parser.nit:12036 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:12039 */
+  /* parser/parser.nit:12037 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12039);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12037);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33557,7 +33526,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 = 12044;
+  fra.me.line = 12042;
   fra.me.meth = LOCATE_parser___ReduceAction253___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -33572,59 +33541,59 @@ void parser___ReduceAction253___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:12046 */
+  /* parser/parser.nit:12044 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12047 */
+  /* parser/parser.nit:12045 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12048 */
+  /* parser/parser.nit:12046 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12049 */
+  /* parser/parser.nit:12047 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12050 */
+  /* parser/parser.nit:12048 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12051 */
+  /* parser/parser.nit:12049 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12052 */
+  /* parser/parser.nit:12050 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12054 */
+  /* parser/parser.nit:12052 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12054);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12052);
   }
-  /* parser/parser.nit:12056 */
+  /* parser/parser.nit:12054 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12056);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12054);
   }
-  /* parser/parser.nit:12058 */
+  /* parser/parser.nit:12056 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12058);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12056);
   }
-  /* parser/parser.nit:12060 */
+  /* parser/parser.nit:12058 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12060);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12058);
   }
-  /* parser/parser.nit:12062 */
+  /* parser/parser.nit:12060 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12062);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12060);
   }
-  /* parser/parser.nit:12063 */
+  /* parser/parser.nit:12061 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12073 */
+  /* parser/parser.nit:12071 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12074 */
+  /* parser/parser.nit:12072 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12074);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12072);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33639,7 +33608,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 = 12079;
+  fra.me.line = 12077;
   fra.me.meth = LOCATE_parser___ReduceAction254___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -33655,67 +33624,67 @@ void parser___ReduceAction254___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:12081 */
+  /* parser/parser.nit:12079 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12082 */
+  /* parser/parser.nit:12080 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12083 */
+  /* parser/parser.nit:12081 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12084 */
+  /* parser/parser.nit:12082 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12085 */
+  /* parser/parser.nit:12083 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12086 */
+  /* parser/parser.nit:12084 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12087 */
+  /* parser/parser.nit:12085 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12088 */
+  /* parser/parser.nit:12086 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12090 */
+  /* parser/parser.nit:12088 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12088);
+  }
+  /* parser/parser.nit:12090 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12090);
   }
   /* parser/parser.nit:12092 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12092);
   }
   /* parser/parser.nit:12094 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12094);
   }
   /* parser/parser.nit:12096 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12096);
   }
   /* parser/parser.nit:12098 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12098);
-  }
-  /* parser/parser.nit:12100 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12100);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12098);
   }
-  /* parser/parser.nit:12101 */
+  /* parser/parser.nit:12099 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12111 */
+  /* parser/parser.nit:12109 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12112 */
+  /* parser/parser.nit:12110 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12112);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12110);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33730,7 +33699,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 = 12117;
+  fra.me.line = 12115;
   fra.me.meth = LOCATE_parser___ReduceAction255___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -33746,67 +33715,67 @@ void parser___ReduceAction255___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:12119 */
+  /* parser/parser.nit:12117 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12120 */
+  /* parser/parser.nit:12118 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12121 */
+  /* parser/parser.nit:12119 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12122 */
+  /* parser/parser.nit:12120 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12123 */
+  /* parser/parser.nit:12121 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12124 */
+  /* parser/parser.nit:12122 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12125 */
+  /* parser/parser.nit:12123 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12126 */
+  /* parser/parser.nit:12124 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12128 */
+  /* parser/parser.nit:12126 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12126);
+  }
+  /* parser/parser.nit:12128 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12128);
   }
   /* parser/parser.nit:12130 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12130);
   }
   /* parser/parser.nit:12132 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12132);
   }
   /* parser/parser.nit:12134 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12134);
   }
   /* parser/parser.nit:12136 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12136);
-  }
-  /* parser/parser.nit:12138 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12138);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12136);
   }
-  /* parser/parser.nit:12139 */
+  /* parser/parser.nit:12137 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12149 */
+  /* parser/parser.nit:12147 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12150 */
+  /* parser/parser.nit:12148 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12150);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12148);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33821,7 +33790,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 = 12155;
+  fra.me.line = 12153;
   fra.me.meth = LOCATE_parser___ReduceAction256___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -33838,75 +33807,75 @@ void parser___ReduceAction256___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:12157 */
+  /* parser/parser.nit:12155 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12158 */
+  /* parser/parser.nit:12156 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12159 */
+  /* parser/parser.nit:12157 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12160 */
+  /* parser/parser.nit:12158 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12161 */
+  /* parser/parser.nit:12159 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12162 */
+  /* parser/parser.nit:12160 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12163 */
+  /* parser/parser.nit:12161 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12164 */
+  /* parser/parser.nit:12162 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12165 */
+  /* parser/parser.nit:12163 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12167 */
+  /* parser/parser.nit:12165 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12165);
+  }
+  /* parser/parser.nit:12167 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12167);
   }
   /* parser/parser.nit:12169 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12169);
   }
   /* parser/parser.nit:12171 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12171);
   }
   /* parser/parser.nit:12173 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12173);
   }
   /* parser/parser.nit:12175 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12175);
   }
   /* parser/parser.nit:12177 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12177);
-  }
-  /* parser/parser.nit:12179 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12179);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12177);
   }
-  /* parser/parser.nit:12180 */
+  /* parser/parser.nit:12178 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12190 */
+  /* parser/parser.nit:12188 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12191 */
+  /* parser/parser.nit:12189 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12191);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12189);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33921,7 +33890,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 = 12196;
+  fra.me.line = 12194;
   fra.me.meth = LOCATE_parser___ReduceAction257___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -33937,67 +33906,67 @@ void parser___ReduceAction257___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:12198 */
+  /* parser/parser.nit:12196 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12199 */
+  /* parser/parser.nit:12197 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12200 */
+  /* parser/parser.nit:12198 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12201 */
+  /* parser/parser.nit:12199 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12202 */
+  /* parser/parser.nit:12200 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12203 */
+  /* parser/parser.nit:12201 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12204 */
+  /* parser/parser.nit:12202 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12205 */
+  /* parser/parser.nit:12203 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12207 */
+  /* parser/parser.nit:12205 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12205);
+  }
+  /* parser/parser.nit:12207 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12207);
   }
   /* parser/parser.nit:12209 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12209);
   }
   /* parser/parser.nit:12211 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12211);
   }
   /* parser/parser.nit:12213 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12213);
   }
   /* parser/parser.nit:12215 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12215);
-  }
-  /* parser/parser.nit:12217 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12217);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12215);
   }
-  /* parser/parser.nit:12218 */
+  /* parser/parser.nit:12216 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12228 */
+  /* parser/parser.nit:12226 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12229 */
+  /* parser/parser.nit:12227 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12229);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12227);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34012,7 +33981,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 = 12234;
+  fra.me.line = 12232;
   fra.me.meth = LOCATE_parser___ReduceAction258___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -34029,75 +33998,75 @@ void parser___ReduceAction258___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:12236 */
+  /* parser/parser.nit:12234 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12237 */
+  /* parser/parser.nit:12235 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12238 */
+  /* parser/parser.nit:12236 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12239 */
+  /* parser/parser.nit:12237 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12240 */
+  /* parser/parser.nit:12238 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12241 */
+  /* parser/parser.nit:12239 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12242 */
+  /* parser/parser.nit:12240 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12243 */
+  /* parser/parser.nit:12241 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12244 */
+  /* parser/parser.nit:12242 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12246 */
+  /* parser/parser.nit:12244 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12244);
+  }
+  /* parser/parser.nit:12246 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12246);
   }
   /* parser/parser.nit:12248 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12248);
   }
   /* parser/parser.nit:12250 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12250);
   }
   /* parser/parser.nit:12252 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12252);
   }
   /* parser/parser.nit:12254 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12254);
   }
   /* parser/parser.nit:12256 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12256);
-  }
-  /* parser/parser.nit:12258 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12258);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12256);
   }
-  /* parser/parser.nit:12259 */
+  /* parser/parser.nit:12257 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12269 */
+  /* parser/parser.nit:12267 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12270 */
+  /* parser/parser.nit:12268 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12270);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12268);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34112,7 +34081,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 = 12275;
+  fra.me.line = 12273;
   fra.me.meth = LOCATE_parser___ReduceAction259___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -34129,75 +34098,75 @@ void parser___ReduceAction259___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:12277 */
+  /* parser/parser.nit:12275 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12278 */
+  /* parser/parser.nit:12276 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12279 */
+  /* parser/parser.nit:12277 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12280 */
+  /* parser/parser.nit:12278 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12281 */
+  /* parser/parser.nit:12279 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12282 */
+  /* parser/parser.nit:12280 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12283 */
+  /* parser/parser.nit:12281 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12284 */
+  /* parser/parser.nit:12282 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12285 */
+  /* parser/parser.nit:12283 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12287 */
+  /* parser/parser.nit:12285 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12285);
+  }
+  /* parser/parser.nit:12287 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12287);
   }
   /* parser/parser.nit:12289 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12289);
   }
   /* parser/parser.nit:12291 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12291);
   }
   /* parser/parser.nit:12293 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12293);
   }
   /* parser/parser.nit:12295 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12295);
   }
   /* parser/parser.nit:12297 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12297);
-  }
-  /* parser/parser.nit:12299 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12299);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12297);
   }
-  /* parser/parser.nit:12300 */
+  /* parser/parser.nit:12298 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12310 */
+  /* parser/parser.nit:12308 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12311 */
+  /* parser/parser.nit:12309 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12311);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12309);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34212,7 +34181,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 = 12316;
+  fra.me.line = 12314;
   fra.me.meth = LOCATE_parser___ReduceAction260___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -34230,83 +34199,83 @@ void parser___ReduceAction260___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:12318 */
+  /* parser/parser.nit:12316 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12319 */
+  /* parser/parser.nit:12317 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12320 */
+  /* parser/parser.nit:12318 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12321 */
+  /* parser/parser.nit:12319 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12322 */
+  /* parser/parser.nit:12320 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12323 */
+  /* parser/parser.nit:12321 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12324 */
+  /* parser/parser.nit:12322 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12325 */
+  /* parser/parser.nit:12323 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12326 */
+  /* parser/parser.nit:12324 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12327 */
+  /* parser/parser.nit:12325 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12329 */
+  /* parser/parser.nit:12327 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12327);
+  }
+  /* parser/parser.nit:12329 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12329);
   }
   /* parser/parser.nit:12331 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12331);
   }
   /* parser/parser.nit:12333 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12333);
   }
   /* parser/parser.nit:12335 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12335);
   }
   /* parser/parser.nit:12337 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12337);
   }
   /* parser/parser.nit:12339 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12339);
   }
   /* parser/parser.nit:12341 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12341);
-  }
-  /* parser/parser.nit:12343 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12343);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12341);
   }
-  /* parser/parser.nit:12344 */
+  /* parser/parser.nit:12342 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12354 */
+  /* parser/parser.nit:12352 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12355 */
+  /* parser/parser.nit:12353 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12355);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12353);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34321,7 +34290,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 = 12360;
+  fra.me.line = 12358;
   fra.me.meth = LOCATE_parser___ReduceAction261___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -34336,61 +34305,61 @@ void parser___ReduceAction261___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:12362 */
+  /* parser/parser.nit:12360 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12363 */
+  /* parser/parser.nit:12361 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12364 */
+  /* parser/parser.nit:12362 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12365 */
+  /* parser/parser.nit:12363 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12366 */
+  /* parser/parser.nit:12364 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12367 */
+  /* parser/parser.nit:12365 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12368 */
+  /* parser/parser.nit:12366 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12369 */
+  /* parser/parser.nit:12367 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12371 */
+  /* parser/parser.nit:12369 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12371);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12369);
   }
-  /* parser/parser.nit:12373 */
+  /* parser/parser.nit:12371 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12373);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12371);
   }
-  /* parser/parser.nit:12375 */
+  /* parser/parser.nit:12373 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12375);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12373);
   }
-  /* parser/parser.nit:12377 */
+  /* parser/parser.nit:12375 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12377);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12375);
   }
-  /* parser/parser.nit:12379 */
+  /* parser/parser.nit:12377 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12379);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12377);
   }
-  /* parser/parser.nit:12380 */
+  /* parser/parser.nit:12378 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12390 */
+  /* parser/parser.nit:12388 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12391 */
+  /* parser/parser.nit:12389 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12391);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12389);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34405,7 +34374,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 = 12396;
+  fra.me.line = 12394;
   fra.me.meth = LOCATE_parser___ReduceAction262___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -34421,69 +34390,69 @@ void parser___ReduceAction262___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:12398 */
+  /* parser/parser.nit:12396 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12399 */
+  /* parser/parser.nit:12397 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12400 */
+  /* parser/parser.nit:12398 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12401 */
+  /* parser/parser.nit:12399 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12402 */
+  /* parser/parser.nit:12400 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12403 */
+  /* parser/parser.nit:12401 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12404 */
+  /* parser/parser.nit:12402 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12405 */
+  /* parser/parser.nit:12403 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12406 */
+  /* parser/parser.nit:12404 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12408 */
+  /* parser/parser.nit:12406 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12406);
+  }
+  /* parser/parser.nit:12408 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12408);
   }
   /* parser/parser.nit:12410 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12410);
   }
   /* parser/parser.nit:12412 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12412);
   }
   /* parser/parser.nit:12414 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12414);
   }
   /* parser/parser.nit:12416 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12416);
-  }
-  /* parser/parser.nit:12418 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12418);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12416);
   }
-  /* parser/parser.nit:12419 */
+  /* parser/parser.nit:12417 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12429 */
+  /* parser/parser.nit:12427 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12430 */
+  /* parser/parser.nit:12428 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12430);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12428);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34498,7 +34467,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 = 12435;
+  fra.me.line = 12433;
   fra.me.meth = LOCATE_parser___ReduceAction263___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -34514,69 +34483,69 @@ void parser___ReduceAction263___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:12437 */
+  /* parser/parser.nit:12435 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12438 */
+  /* parser/parser.nit:12436 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12439 */
+  /* parser/parser.nit:12437 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12440 */
+  /* parser/parser.nit:12438 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12441 */
+  /* parser/parser.nit:12439 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12442 */
+  /* parser/parser.nit:12440 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12443 */
+  /* parser/parser.nit:12441 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12444 */
+  /* parser/parser.nit:12442 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12445 */
+  /* parser/parser.nit:12443 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12447 */
+  /* parser/parser.nit:12445 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12445);
+  }
+  /* parser/parser.nit:12447 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12447);
   }
   /* parser/parser.nit:12449 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12449);
   }
   /* parser/parser.nit:12451 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12451);
   }
   /* parser/parser.nit:12453 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12453);
   }
   /* parser/parser.nit:12455 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12455);
-  }
-  /* parser/parser.nit:12457 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12457);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12455);
   }
-  /* parser/parser.nit:12458 */
+  /* parser/parser.nit:12456 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12468 */
+  /* parser/parser.nit:12466 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12469 */
+  /* parser/parser.nit:12467 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12469);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12467);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34591,7 +34560,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 = 12474;
+  fra.me.line = 12472;
   fra.me.meth = LOCATE_parser___ReduceAction264___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -34608,77 +34577,77 @@ void parser___ReduceAction264___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:12476 */
+  /* parser/parser.nit:12474 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12477 */
+  /* parser/parser.nit:12475 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12478 */
+  /* parser/parser.nit:12476 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12479 */
+  /* parser/parser.nit:12477 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12480 */
+  /* parser/parser.nit:12478 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12481 */
+  /* parser/parser.nit:12479 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12482 */
+  /* parser/parser.nit:12480 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12483 */
+  /* parser/parser.nit:12481 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12484 */
+  /* parser/parser.nit:12482 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12485 */
+  /* parser/parser.nit:12483 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12487 */
+  /* parser/parser.nit:12485 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12485);
+  }
+  /* parser/parser.nit:12487 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12487);
   }
   /* parser/parser.nit:12489 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12489);
   }
   /* parser/parser.nit:12491 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12491);
   }
   /* parser/parser.nit:12493 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12493);
   }
   /* parser/parser.nit:12495 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12495);
   }
   /* parser/parser.nit:12497 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12497);
-  }
-  /* parser/parser.nit:12499 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12499);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12497);
   }
-  /* parser/parser.nit:12500 */
+  /* parser/parser.nit:12498 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:12510 */
+  /* parser/parser.nit:12508 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12511 */
+  /* parser/parser.nit:12509 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12511);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12509);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34693,7 +34662,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 = 12516;
+  fra.me.line = 12514;
   fra.me.meth = LOCATE_parser___ReduceAction265___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -34709,69 +34678,69 @@ 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:12518 */
+  /* parser/parser.nit:12516 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12519 */
+  /* parser/parser.nit:12517 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12520 */
+  /* parser/parser.nit:12518 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12521 */
+  /* parser/parser.nit:12519 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12522 */
+  /* parser/parser.nit:12520 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12523 */
+  /* parser/parser.nit:12521 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12524 */
+  /* parser/parser.nit:12522 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12525 */
+  /* parser/parser.nit:12523 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12526 */
+  /* parser/parser.nit:12524 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12528 */
+  /* parser/parser.nit:12526 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12526);
+  }
+  /* parser/parser.nit:12528 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12528);
   }
   /* parser/parser.nit:12530 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12530);
   }
   /* parser/parser.nit:12532 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12532);
   }
   /* parser/parser.nit:12534 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12534);
   }
   /* parser/parser.nit:12536 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12536);
-  }
-  /* parser/parser.nit:12538 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12538);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12536);
   }
-  /* parser/parser.nit:12539 */
+  /* parser/parser.nit:12537 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12549 */
+  /* parser/parser.nit:12547 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12550 */
+  /* parser/parser.nit:12548 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12550);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12548);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34786,7 +34755,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 = 12555;
+  fra.me.line = 12553;
   fra.me.meth = LOCATE_parser___ReduceAction266___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -34803,77 +34772,77 @@ void parser___ReduceAction266___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:12557 */
+  /* parser/parser.nit:12555 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12558 */
+  /* parser/parser.nit:12556 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12559 */
+  /* parser/parser.nit:12557 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12560 */
+  /* parser/parser.nit:12558 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12561 */
+  /* parser/parser.nit:12559 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12562 */
+  /* parser/parser.nit:12560 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12563 */
+  /* parser/parser.nit:12561 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12564 */
+  /* parser/parser.nit:12562 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12565 */
+  /* parser/parser.nit:12563 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12566 */
+  /* parser/parser.nit:12564 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12568 */
+  /* parser/parser.nit:12566 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12566);
+  }
+  /* parser/parser.nit:12568 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12568);
   }
   /* parser/parser.nit:12570 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12570);
   }
   /* parser/parser.nit:12572 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12572);
   }
   /* parser/parser.nit:12574 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12574);
   }
   /* parser/parser.nit:12576 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12576);
   }
   /* parser/parser.nit:12578 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12578);
-  }
-  /* parser/parser.nit:12580 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12580);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12578);
   }
-  /* parser/parser.nit:12581 */
+  /* parser/parser.nit:12579 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12591 */
+  /* parser/parser.nit:12589 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12592 */
+  /* parser/parser.nit:12590 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12592);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12590);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34888,7 +34857,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 = 12597;
+  fra.me.line = 12595;
   fra.me.meth = LOCATE_parser___ReduceAction267___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -34905,77 +34874,77 @@ void parser___ReduceAction267___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:12599 */
+  /* parser/parser.nit:12597 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12600 */
+  /* parser/parser.nit:12598 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12601 */
+  /* parser/parser.nit:12599 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12602 */
+  /* parser/parser.nit:12600 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12603 */
+  /* parser/parser.nit:12601 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12604 */
+  /* parser/parser.nit:12602 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12605 */
+  /* parser/parser.nit:12603 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12606 */
+  /* parser/parser.nit:12604 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12607 */
+  /* parser/parser.nit:12605 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12608 */
+  /* parser/parser.nit:12606 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12610 */
+  /* parser/parser.nit:12608 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12608);
+  }
+  /* parser/parser.nit:12610 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12610);
   }
   /* parser/parser.nit:12612 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12612);
   }
   /* parser/parser.nit:12614 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12614);
   }
   /* parser/parser.nit:12616 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12616);
   }
   /* parser/parser.nit:12618 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12618);
   }
   /* parser/parser.nit:12620 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12620);
-  }
-  /* parser/parser.nit:12622 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12622);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12620);
   }
-  /* parser/parser.nit:12623 */
+  /* parser/parser.nit:12621 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12633 */
+  /* parser/parser.nit:12631 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12634 */
+  /* parser/parser.nit:12632 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12634);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12632);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34990,7 +34959,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 = 12639;
+  fra.me.line = 12637;
   fra.me.meth = LOCATE_parser___ReduceAction268___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -35008,85 +34977,85 @@ void parser___ReduceAction268___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:12641 */
+  /* parser/parser.nit:12639 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12642 */
+  /* parser/parser.nit:12640 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12643 */
+  /* parser/parser.nit:12641 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12644 */
+  /* parser/parser.nit:12642 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12645 */
+  /* parser/parser.nit:12643 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12646 */
+  /* parser/parser.nit:12644 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12647 */
+  /* parser/parser.nit:12645 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12648 */
+  /* parser/parser.nit:12646 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12649 */
+  /* parser/parser.nit:12647 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12650 */
+  /* parser/parser.nit:12648 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12651 */
+  /* parser/parser.nit:12649 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12653 */
+  /* parser/parser.nit:12651 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12651);
+  }
+  /* parser/parser.nit:12653 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12653);
   }
   /* parser/parser.nit:12655 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12655);
   }
   /* parser/parser.nit:12657 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12657);
   }
   /* parser/parser.nit:12659 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12659);
   }
   /* parser/parser.nit:12661 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12661);
   }
   /* parser/parser.nit:12663 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12663);
   }
   /* parser/parser.nit:12665 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12665);
-  }
-  /* parser/parser.nit:12667 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12667);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12665);
   }
-  /* parser/parser.nit:12668 */
+  /* parser/parser.nit:12666 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12678 */
+  /* parser/parser.nit:12676 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12679 */
+  /* parser/parser.nit:12677 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12679);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12677);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35101,7 +35070,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 = 12684;
+  fra.me.line = 12682;
   fra.me.meth = LOCATE_parser___ReduceAction269___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -35116,57 +35085,57 @@ void parser___ReduceAction269___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:12686 */
+  /* parser/parser.nit:12684 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12687 */
+  /* parser/parser.nit:12685 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12688 */
+  /* parser/parser.nit:12686 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12689 */
+  /* parser/parser.nit:12687 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12690 */
+  /* parser/parser.nit:12688 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12691 */
+  /* parser/parser.nit:12689 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12693 */
+  /* parser/parser.nit:12691 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12693);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12691);
   }
-  /* parser/parser.nit:12695 */
+  /* parser/parser.nit:12693 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12695);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12693);
   }
-  /* parser/parser.nit:12697 */
+  /* parser/parser.nit:12695 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12697);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12695);
   }
-  /* parser/parser.nit:12699 */
+  /* parser/parser.nit:12697 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12699);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12697);
   }
-  /* parser/parser.nit:12701 */
+  /* parser/parser.nit:12699 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12701);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12699);
   }
-  /* parser/parser.nit:12702 */
+  /* parser/parser.nit:12700 */
   fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:12711 */
+  /* parser/parser.nit:12709 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12712 */
+  /* parser/parser.nit:12710 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12712);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12710);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35181,7 +35150,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 = 12717;
+  fra.me.line = 12715;
   fra.me.meth = LOCATE_parser___ReduceAction270___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -35197,65 +35166,65 @@ void parser___ReduceAction270___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:12719 */
+  /* parser/parser.nit:12717 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12720 */
+  /* parser/parser.nit:12718 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12721 */
+  /* parser/parser.nit:12719 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12722 */
+  /* parser/parser.nit:12720 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12723 */
+  /* parser/parser.nit:12721 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12724 */
+  /* parser/parser.nit:12722 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12725 */
+  /* parser/parser.nit:12723 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12727 */
+  /* parser/parser.nit:12725 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12725);
+  }
+  /* parser/parser.nit:12727 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12727);
   }
   /* parser/parser.nit:12729 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12729);
   }
   /* parser/parser.nit:12731 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12731);
   }
   /* parser/parser.nit:12733 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12733);
   }
   /* parser/parser.nit:12735 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12735);
-  }
-  /* parser/parser.nit:12737 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12737);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12735);
   }
-  /* parser/parser.nit:12738 */
+  /* parser/parser.nit:12736 */
   fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:12747 */
+  /* parser/parser.nit:12745 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12748 */
+  /* parser/parser.nit:12746 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12748);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12746);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35270,7 +35239,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 = 12753;
+  fra.me.line = 12751;
   fra.me.meth = LOCATE_parser___ReduceAction271___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -35286,65 +35255,65 @@ void parser___ReduceAction271___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:12755 */
+  /* parser/parser.nit:12753 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12756 */
+  /* parser/parser.nit:12754 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12757 */
+  /* parser/parser.nit:12755 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12758 */
+  /* parser/parser.nit:12756 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12759 */
+  /* parser/parser.nit:12757 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12760 */
+  /* parser/parser.nit:12758 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12761 */
+  /* parser/parser.nit:12759 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12763 */
+  /* parser/parser.nit:12761 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12761);
+  }
+  /* parser/parser.nit:12763 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12763);
   }
   /* parser/parser.nit:12765 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12765);
   }
   /* parser/parser.nit:12767 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12767);
   }
   /* parser/parser.nit:12769 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12769);
   }
   /* parser/parser.nit:12771 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12771);
-  }
-  /* parser/parser.nit:12773 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12773);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12771);
   }
-  /* parser/parser.nit:12774 */
+  /* parser/parser.nit:12772 */
   fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12783 */
+  /* parser/parser.nit:12781 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12784 */
+  /* parser/parser.nit:12782 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12784);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12782);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35359,7 +35328,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 = 12789;
+  fra.me.line = 12787;
   fra.me.meth = LOCATE_parser___ReduceAction272___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -35376,73 +35345,73 @@ void parser___ReduceAction272___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:12791 */
+  /* parser/parser.nit:12789 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12792 */
+  /* parser/parser.nit:12790 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12793 */
+  /* parser/parser.nit:12791 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12794 */
+  /* parser/parser.nit:12792 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12795 */
+  /* parser/parser.nit:12793 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12796 */
+  /* parser/parser.nit:12794 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12797 */
+  /* parser/parser.nit:12795 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12798 */
+  /* parser/parser.nit:12796 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12800 */
+  /* parser/parser.nit:12798 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12798);
+  }
+  /* parser/parser.nit:12800 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12800);
   }
   /* parser/parser.nit:12802 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12802);
   }
   /* parser/parser.nit:12804 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12804);
   }
   /* parser/parser.nit:12806 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12806);
   }
   /* parser/parser.nit:12808 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12808);
   }
   /* parser/parser.nit:12810 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12810);
-  }
-  /* parser/parser.nit:12812 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12810);
   }
-  /* parser/parser.nit:12813 */
+  /* parser/parser.nit:12811 */
   fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:12822 */
+  /* parser/parser.nit:12820 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12823 */
+  /* parser/parser.nit:12821 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12823);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12821);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35457,7 +35426,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 = 12828;
+  fra.me.line = 12826;
   fra.me.meth = LOCATE_parser___ReduceAction273___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -35471,53 +35440,53 @@ void parser___ReduceAction273___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:12830 */
+  /* parser/parser.nit:12828 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12831 */
+  /* parser/parser.nit:12829 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12832 */
+  /* parser/parser.nit:12830 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12833 */
+  /* parser/parser.nit:12831 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12834 */
+  /* parser/parser.nit:12832 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12835 */
+  /* parser/parser.nit:12833 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12836 */
+  /* parser/parser.nit:12834 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12838 */
+  /* parser/parser.nit:12836 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12838);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12836);
   }
-  /* parser/parser.nit:12840 */
+  /* parser/parser.nit:12838 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12840);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12838);
   }
-  /* parser/parser.nit:12842 */
+  /* parser/parser.nit:12840 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12842);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12840);
   }
-  /* parser/parser.nit:12844 */
+  /* parser/parser.nit:12842 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12844);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12842);
   }
-  /* parser/parser.nit:12845 */
+  /* parser/parser.nit:12843 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:12856 */
+  /* parser/parser.nit:12854 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12857 */
+  /* parser/parser.nit:12855 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12857);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12855);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35532,7 +35501,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 = 12862;
+  fra.me.line = 12860;
   fra.me.meth = LOCATE_parser___ReduceAction274___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -35547,61 +35516,61 @@ void parser___ReduceAction274___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:12864 */
+  /* parser/parser.nit:12862 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12865 */
+  /* parser/parser.nit:12863 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12866 */
+  /* parser/parser.nit:12864 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12867 */
+  /* parser/parser.nit:12865 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12868 */
+  /* parser/parser.nit:12866 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12869 */
+  /* parser/parser.nit:12867 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12870 */
+  /* parser/parser.nit:12868 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12871 */
+  /* parser/parser.nit:12869 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12873 */
+  /* parser/parser.nit:12871 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12873);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12871);
   }
-  /* parser/parser.nit:12875 */
+  /* parser/parser.nit:12873 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12875);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12873);
   }
-  /* parser/parser.nit:12877 */
+  /* parser/parser.nit:12875 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12877);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12875);
   }
-  /* parser/parser.nit:12879 */
+  /* parser/parser.nit:12877 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12879);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12877);
   }
-  /* parser/parser.nit:12881 */
+  /* parser/parser.nit:12879 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12881);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12879);
   }
-  /* parser/parser.nit:12882 */
+  /* parser/parser.nit:12880 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:12893 */
+  /* parser/parser.nit:12891 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12894 */
+  /* parser/parser.nit:12892 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12894);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12892);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35616,7 +35585,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 = 12899;
+  fra.me.line = 12897;
   fra.me.meth = LOCATE_parser___ReduceAction275___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -35631,61 +35600,61 @@ void parser___ReduceAction275___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:12901 */
+  /* parser/parser.nit:12899 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12902 */
+  /* parser/parser.nit:12900 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12903 */
+  /* parser/parser.nit:12901 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12904 */
+  /* parser/parser.nit:12902 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12905 */
+  /* parser/parser.nit:12903 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12906 */
+  /* parser/parser.nit:12904 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12907 */
+  /* parser/parser.nit:12905 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12908 */
+  /* parser/parser.nit:12906 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12910 */
+  /* parser/parser.nit:12908 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12910);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12908);
   }
-  /* parser/parser.nit:12912 */
+  /* parser/parser.nit:12910 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12912);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12910);
   }
-  /* parser/parser.nit:12914 */
+  /* parser/parser.nit:12912 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12914);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12912);
   }
-  /* parser/parser.nit:12916 */
+  /* parser/parser.nit:12914 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12916);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12914);
   }
-  /* parser/parser.nit:12918 */
+  /* parser/parser.nit:12916 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12918);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12916);
   }
-  /* parser/parser.nit:12919 */
+  /* parser/parser.nit:12917 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:12930 */
+  /* parser/parser.nit:12928 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12931 */
+  /* parser/parser.nit:12929 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12931);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12929);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35700,7 +35669,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 = 12936;
+  fra.me.line = 12934;
   fra.me.meth = LOCATE_parser___ReduceAction276___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -35716,69 +35685,69 @@ void parser___ReduceAction276___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:12938 */
+  /* parser/parser.nit:12936 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12939 */
+  /* parser/parser.nit:12937 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12940 */
+  /* parser/parser.nit:12938 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12941 */
+  /* parser/parser.nit:12939 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12942 */
+  /* parser/parser.nit:12940 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12943 */
+  /* parser/parser.nit:12941 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12944 */
+  /* parser/parser.nit:12942 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12945 */
+  /* parser/parser.nit:12943 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12946 */
+  /* parser/parser.nit:12944 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12948 */
+  /* parser/parser.nit:12946 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12946);
+  }
+  /* parser/parser.nit:12948 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12948);
   }
   /* parser/parser.nit:12950 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12950);
   }
   /* parser/parser.nit:12952 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12952);
   }
   /* parser/parser.nit:12954 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 12954);
   }
   /* parser/parser.nit:12956 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12956);
-  }
-  /* parser/parser.nit:12958 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12958);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12956);
   }
-  /* parser/parser.nit:12959 */
+  /* parser/parser.nit:12957 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:12970 */
+  /* parser/parser.nit:12968 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12971 */
+  /* parser/parser.nit:12969 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12971);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12969);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35793,7 +35762,7 @@ void parser___ReduceAction277___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 12976;
+  fra.me.line = 12974;
   fra.me.meth = LOCATE_parser___ReduceAction277___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -35808,61 +35777,61 @@ void parser___ReduceAction277___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:12978 */
+  /* parser/parser.nit:12976 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12979 */
+  /* parser/parser.nit:12977 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12980 */
+  /* parser/parser.nit:12978 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12981 */
+  /* parser/parser.nit:12979 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12982 */
+  /* parser/parser.nit:12980 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12983 */
+  /* parser/parser.nit:12981 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12984 */
+  /* parser/parser.nit:12982 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12985 */
+  /* parser/parser.nit:12983 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12987 */
+  /* parser/parser.nit:12985 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12985);
   }
-  /* parser/parser.nit:12989 */
+  /* parser/parser.nit:12987 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12989);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12987);
   }
-  /* parser/parser.nit:12991 */
+  /* parser/parser.nit:12989 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12991);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12989);
   }
-  /* parser/parser.nit:12993 */
+  /* parser/parser.nit:12991 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12993);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12991);
   }
-  /* parser/parser.nit:12995 */
+  /* parser/parser.nit:12993 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 12995);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12993);
   }
-  /* parser/parser.nit:12996 */
+  /* parser/parser.nit:12994 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:13007 */
+  /* parser/parser.nit:13005 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13008 */
+  /* parser/parser.nit:13006 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13008);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13006);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35877,7 +35846,7 @@ void parser___ReduceAction278___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13013;
+  fra.me.line = 13011;
   fra.me.meth = LOCATE_parser___ReduceAction278___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -35893,69 +35862,69 @@ void parser___ReduceAction278___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:13015 */
+  /* parser/parser.nit:13013 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13016 */
+  /* parser/parser.nit:13014 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13017 */
+  /* parser/parser.nit:13015 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13018 */
+  /* parser/parser.nit:13016 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13019 */
+  /* parser/parser.nit:13017 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13020 */
+  /* parser/parser.nit:13018 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13021 */
+  /* parser/parser.nit:13019 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13022 */
+  /* parser/parser.nit:13020 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13023 */
+  /* parser/parser.nit:13021 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13025 */
+  /* parser/parser.nit:13023 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13023);
+  }
+  /* parser/parser.nit:13025 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13025);
   }
   /* parser/parser.nit:13027 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13027);
   }
   /* parser/parser.nit:13029 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13029);
   }
   /* parser/parser.nit:13031 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13031);
   }
   /* parser/parser.nit:13033 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13033);
-  }
-  /* parser/parser.nit:13035 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13035);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13033);
   }
-  /* parser/parser.nit:13036 */
+  /* parser/parser.nit:13034 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:13047 */
+  /* parser/parser.nit:13045 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13048 */
+  /* parser/parser.nit:13046 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13048);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13046);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35970,7 +35939,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 = 13053;
+  fra.me.line = 13051;
   fra.me.meth = LOCATE_parser___ReduceAction279___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -35986,69 +35955,69 @@ void parser___ReduceAction279___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:13055 */
+  /* parser/parser.nit:13053 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13056 */
+  /* parser/parser.nit:13054 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13057 */
+  /* parser/parser.nit:13055 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13058 */
+  /* parser/parser.nit:13056 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13059 */
+  /* parser/parser.nit:13057 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13060 */
+  /* parser/parser.nit:13058 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13061 */
+  /* parser/parser.nit:13059 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13062 */
+  /* parser/parser.nit:13060 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13063 */
+  /* parser/parser.nit:13061 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13065 */
+  /* parser/parser.nit:13063 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13063);
+  }
+  /* parser/parser.nit:13065 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13065);
   }
   /* parser/parser.nit:13067 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13067);
   }
   /* parser/parser.nit:13069 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13069);
   }
   /* parser/parser.nit:13071 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13071);
   }
   /* parser/parser.nit:13073 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13073);
-  }
-  /* parser/parser.nit:13075 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13075);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13073);
   }
-  /* parser/parser.nit:13076 */
+  /* parser/parser.nit:13074 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:13087 */
+  /* parser/parser.nit:13085 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13088 */
+  /* parser/parser.nit:13086 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13088);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13086);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36063,7 +36032,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 = 13093;
+  fra.me.line = 13091;
   fra.me.meth = LOCATE_parser___ReduceAction280___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -36080,77 +36049,77 @@ void parser___ReduceAction280___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:13095 */
+  /* parser/parser.nit:13093 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13096 */
+  /* parser/parser.nit:13094 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13097 */
+  /* parser/parser.nit:13095 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13098 */
+  /* parser/parser.nit:13096 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13099 */
+  /* parser/parser.nit:13097 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13100 */
+  /* parser/parser.nit:13098 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13101 */
+  /* parser/parser.nit:13099 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13102 */
+  /* parser/parser.nit:13100 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13103 */
+  /* parser/parser.nit:13101 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13104 */
+  /* parser/parser.nit:13102 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13106 */
+  /* parser/parser.nit:13104 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13104);
+  }
+  /* parser/parser.nit:13106 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13106);
   }
   /* parser/parser.nit:13108 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13108);
   }
   /* parser/parser.nit:13110 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13110);
   }
   /* parser/parser.nit:13112 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13112);
   }
   /* parser/parser.nit:13114 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13114);
   }
   /* parser/parser.nit:13116 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13116);
-  }
-  /* parser/parser.nit:13118 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13118);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13116);
   }
-  /* parser/parser.nit:13119 */
+  /* parser/parser.nit:13117 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:13130 */
+  /* parser/parser.nit:13128 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13131 */
+  /* parser/parser.nit:13129 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13131);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13129);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36165,7 +36134,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 = 13136;
+  fra.me.line = 13134;
   fra.me.meth = LOCATE_parser___ReduceAction281___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -36180,61 +36149,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:13138 */
+  /* parser/parser.nit:13136 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13139 */
+  /* parser/parser.nit:13137 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13140 */
+  /* parser/parser.nit:13138 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13141 */
+  /* parser/parser.nit:13139 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13142 */
+  /* parser/parser.nit:13140 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13143 */
+  /* parser/parser.nit:13141 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13144 */
+  /* parser/parser.nit:13142 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13145 */
+  /* parser/parser.nit:13143 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13147 */
+  /* parser/parser.nit:13145 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13147);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13145);
   }
-  /* parser/parser.nit:13149 */
+  /* parser/parser.nit:13147 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13149);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13147);
   }
-  /* parser/parser.nit:13151 */
+  /* parser/parser.nit:13149 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13151);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13149);
   }
-  /* parser/parser.nit:13153 */
+  /* parser/parser.nit:13151 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13153);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13151);
   }
-  /* parser/parser.nit:13155 */
+  /* parser/parser.nit:13153 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13155);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13153);
   }
-  /* parser/parser.nit:13156 */
+  /* parser/parser.nit:13154 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13167 */
+  /* parser/parser.nit:13165 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13168 */
+  /* parser/parser.nit:13166 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13168);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13166);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36249,7 +36218,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 = 13173;
+  fra.me.line = 13171;
   fra.me.meth = LOCATE_parser___ReduceAction282___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -36265,69 +36234,69 @@ void parser___ReduceAction282___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:13175 */
+  /* parser/parser.nit:13173 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13176 */
+  /* parser/parser.nit:13174 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13177 */
+  /* parser/parser.nit:13175 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13178 */
+  /* parser/parser.nit:13176 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13179 */
+  /* parser/parser.nit:13177 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13180 */
+  /* parser/parser.nit:13178 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13181 */
+  /* parser/parser.nit:13179 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13182 */
+  /* parser/parser.nit:13180 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13183 */
+  /* parser/parser.nit:13181 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13185 */
+  /* parser/parser.nit:13183 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13183);
+  }
+  /* parser/parser.nit:13185 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13185);
   }
   /* parser/parser.nit:13187 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13187);
   }
   /* parser/parser.nit:13189 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13189);
   }
   /* parser/parser.nit:13191 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13191);
   }
   /* parser/parser.nit:13193 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13193);
-  }
-  /* parser/parser.nit:13195 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13195);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13193);
   }
-  /* parser/parser.nit:13196 */
+  /* parser/parser.nit:13194 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13207 */
+  /* parser/parser.nit:13205 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13208 */
+  /* parser/parser.nit:13206 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13208);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13206);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36342,7 +36311,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 = 13213;
+  fra.me.line = 13211;
   fra.me.meth = LOCATE_parser___ReduceAction283___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -36358,69 +36327,69 @@ 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:13215 */
+  /* parser/parser.nit:13213 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13216 */
+  /* parser/parser.nit:13214 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13217 */
+  /* parser/parser.nit:13215 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13218 */
+  /* parser/parser.nit:13216 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13219 */
+  /* parser/parser.nit:13217 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13220 */
+  /* parser/parser.nit:13218 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13221 */
+  /* parser/parser.nit:13219 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13222 */
+  /* parser/parser.nit:13220 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13223 */
+  /* parser/parser.nit:13221 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13225 */
+  /* parser/parser.nit:13223 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13223);
+  }
+  /* parser/parser.nit:13225 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13225);
   }
   /* parser/parser.nit:13227 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13227);
   }
   /* parser/parser.nit:13229 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13229);
   }
   /* parser/parser.nit:13231 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13231);
   }
   /* parser/parser.nit:13233 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13233);
-  }
-  /* parser/parser.nit:13235 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13235);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13233);
   }
-  /* parser/parser.nit:13236 */
+  /* parser/parser.nit:13234 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13247 */
+  /* parser/parser.nit:13245 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13248 */
+  /* parser/parser.nit:13246 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13248);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13246);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36435,7 +36404,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 = 13253;
+  fra.me.line = 13251;
   fra.me.meth = LOCATE_parser___ReduceAction284___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -36452,77 +36421,77 @@ void parser___ReduceAction284___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:13255 */
+  /* parser/parser.nit:13253 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13256 */
+  /* parser/parser.nit:13254 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13257 */
+  /* parser/parser.nit:13255 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13258 */
+  /* parser/parser.nit:13256 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13259 */
+  /* parser/parser.nit:13257 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13260 */
+  /* parser/parser.nit:13258 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13261 */
+  /* parser/parser.nit:13259 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13262 */
+  /* parser/parser.nit:13260 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13263 */
+  /* parser/parser.nit:13261 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13264 */
+  /* parser/parser.nit:13262 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13266 */
+  /* parser/parser.nit:13264 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13264);
+  }
+  /* parser/parser.nit:13266 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13266);
   }
   /* parser/parser.nit:13268 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13268);
   }
   /* parser/parser.nit:13270 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13270);
   }
   /* parser/parser.nit:13272 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13272);
   }
   /* parser/parser.nit:13274 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13274);
   }
   /* parser/parser.nit:13276 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13276);
-  }
-  /* parser/parser.nit:13278 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13278);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13276);
   }
-  /* parser/parser.nit:13279 */
+  /* parser/parser.nit:13277 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13290 */
+  /* parser/parser.nit:13288 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13291 */
+  /* parser/parser.nit:13289 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13291);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13289);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36537,7 +36506,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 = 13296;
+  fra.me.line = 13294;
   fra.me.meth = LOCATE_parser___ReduceAction285___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -36553,69 +36522,69 @@ void parser___ReduceAction285___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:13298 */
+  /* parser/parser.nit:13296 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13299 */
+  /* parser/parser.nit:13297 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13300 */
+  /* parser/parser.nit:13298 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13301 */
+  /* parser/parser.nit:13299 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13302 */
+  /* parser/parser.nit:13300 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13303 */
+  /* parser/parser.nit:13301 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13304 */
+  /* parser/parser.nit:13302 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13305 */
+  /* parser/parser.nit:13303 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13306 */
+  /* parser/parser.nit:13304 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13308 */
+  /* parser/parser.nit:13306 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13306);
+  }
+  /* parser/parser.nit:13308 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13308);
   }
   /* parser/parser.nit:13310 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13310);
   }
   /* parser/parser.nit:13312 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13312);
   }
   /* parser/parser.nit:13314 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13314);
   }
   /* parser/parser.nit:13316 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13316);
-  }
-  /* parser/parser.nit:13318 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13318);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13316);
   }
-  /* parser/parser.nit:13319 */
+  /* parser/parser.nit:13317 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13330 */
+  /* parser/parser.nit:13328 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13331 */
+  /* parser/parser.nit:13329 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13331);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13329);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36630,7 +36599,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 = 13336;
+  fra.me.line = 13334;
   fra.me.meth = LOCATE_parser___ReduceAction286___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -36647,77 +36616,77 @@ void parser___ReduceAction286___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:13338 */
+  /* parser/parser.nit:13336 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13339 */
+  /* parser/parser.nit:13337 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13340 */
+  /* parser/parser.nit:13338 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13341 */
+  /* parser/parser.nit:13339 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13342 */
+  /* parser/parser.nit:13340 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13343 */
+  /* parser/parser.nit:13341 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13344 */
+  /* parser/parser.nit:13342 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13345 */
+  /* parser/parser.nit:13343 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13346 */
+  /* parser/parser.nit:13344 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13347 */
+  /* parser/parser.nit:13345 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13349 */
+  /* parser/parser.nit:13347 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13347);
+  }
+  /* parser/parser.nit:13349 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13349);
   }
   /* parser/parser.nit:13351 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13351);
   }
   /* parser/parser.nit:13353 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13353);
   }
   /* parser/parser.nit:13355 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13355);
   }
   /* parser/parser.nit:13357 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13357);
   }
   /* parser/parser.nit:13359 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13359);
-  }
-  /* parser/parser.nit:13361 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13361);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13359);
   }
-  /* parser/parser.nit:13362 */
+  /* parser/parser.nit:13360 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13373 */
+  /* parser/parser.nit:13371 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13374 */
+  /* parser/parser.nit:13372 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13374);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13372);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36732,7 +36701,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 = 13379;
+  fra.me.line = 13377;
   fra.me.meth = LOCATE_parser___ReduceAction287___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -36749,77 +36718,77 @@ void parser___ReduceAction287___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:13381 */
+  /* parser/parser.nit:13379 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13382 */
+  /* parser/parser.nit:13380 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13383 */
+  /* parser/parser.nit:13381 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13384 */
+  /* parser/parser.nit:13382 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13385 */
+  /* parser/parser.nit:13383 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13386 */
+  /* parser/parser.nit:13384 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13387 */
+  /* parser/parser.nit:13385 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13388 */
+  /* parser/parser.nit:13386 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13389 */
+  /* parser/parser.nit:13387 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13390 */
+  /* parser/parser.nit:13388 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13392 */
+  /* parser/parser.nit:13390 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13390);
+  }
+  /* parser/parser.nit:13392 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13392);
   }
   /* parser/parser.nit:13394 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13394);
   }
   /* parser/parser.nit:13396 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13396);
   }
   /* parser/parser.nit:13398 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13398);
   }
   /* parser/parser.nit:13400 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13400);
   }
   /* parser/parser.nit:13402 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13402);
-  }
-  /* parser/parser.nit:13404 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13402);
   }
-  /* parser/parser.nit:13405 */
+  /* parser/parser.nit:13403 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13416 */
+  /* parser/parser.nit:13414 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13417 */
+  /* parser/parser.nit:13415 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13417);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13415);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36834,7 +36803,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 = 13422;
+  fra.me.line = 13420;
   fra.me.meth = LOCATE_parser___ReduceAction288___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -36852,85 +36821,85 @@ void parser___ReduceAction288___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:13424 */
+  /* parser/parser.nit:13422 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13425 */
+  /* parser/parser.nit:13423 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13426 */
+  /* parser/parser.nit:13424 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13427 */
+  /* parser/parser.nit:13425 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13428 */
+  /* parser/parser.nit:13426 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13429 */
+  /* parser/parser.nit:13427 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13430 */
+  /* parser/parser.nit:13428 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13431 */
+  /* parser/parser.nit:13429 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13432 */
+  /* parser/parser.nit:13430 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13433 */
+  /* parser/parser.nit:13431 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13434 */
+  /* parser/parser.nit:13432 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13436 */
+  /* parser/parser.nit:13434 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13434);
+  }
+  /* parser/parser.nit:13436 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13436);
   }
   /* parser/parser.nit:13438 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13438);
   }
   /* parser/parser.nit:13440 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13440);
   }
   /* parser/parser.nit:13442 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13442);
   }
   /* parser/parser.nit:13444 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13444);
   }
   /* parser/parser.nit:13446 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13446);
   }
   /* parser/parser.nit:13448 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13448);
-  }
-  /* parser/parser.nit:13450 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13450);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13448);
   }
-  /* parser/parser.nit:13451 */
+  /* parser/parser.nit:13449 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:13462 */
+  /* parser/parser.nit:13460 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13463 */
+  /* parser/parser.nit:13461 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13463);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13461);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36945,7 +36914,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 = 13468;
+  fra.me.line = 13466;
   fra.me.meth = LOCATE_parser___ReduceAction289___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -36960,61 +36929,61 @@ void parser___ReduceAction289___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:13470 */
+  /* parser/parser.nit:13468 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13471 */
+  /* parser/parser.nit:13469 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13472 */
+  /* parser/parser.nit:13470 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13473 */
+  /* parser/parser.nit:13471 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13474 */
+  /* parser/parser.nit:13472 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13475 */
+  /* parser/parser.nit:13473 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13476 */
+  /* parser/parser.nit:13474 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13477 */
+  /* parser/parser.nit:13475 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13479 */
+  /* parser/parser.nit:13477 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13479);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13477);
   }
-  /* parser/parser.nit:13481 */
+  /* parser/parser.nit:13479 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13481);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13479);
   }
-  /* parser/parser.nit:13483 */
+  /* parser/parser.nit:13481 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13483);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13481);
   }
-  /* parser/parser.nit:13485 */
+  /* parser/parser.nit:13483 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13485);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13483);
   }
-  /* parser/parser.nit:13487 */
+  /* parser/parser.nit:13485 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13487);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13485);
   }
-  /* parser/parser.nit:13488 */
+  /* parser/parser.nit:13486 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13499 */
+  /* parser/parser.nit:13497 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13500 */
+  /* parser/parser.nit:13498 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13500);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13498);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37029,7 +36998,7 @@ void parser___ReduceAction290___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13505;
+  fra.me.line = 13503;
   fra.me.meth = LOCATE_parser___ReduceAction290___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -37045,69 +37014,69 @@ void parser___ReduceAction290___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:13507 */
+  /* parser/parser.nit:13505 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13508 */
+  /* parser/parser.nit:13506 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13509 */
+  /* parser/parser.nit:13507 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13510 */
+  /* parser/parser.nit:13508 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13511 */
+  /* parser/parser.nit:13509 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13512 */
+  /* parser/parser.nit:13510 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13513 */
+  /* parser/parser.nit:13511 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13514 */
+  /* parser/parser.nit:13512 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13515 */
+  /* parser/parser.nit:13513 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13517 */
+  /* parser/parser.nit:13515 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13515);
+  }
+  /* parser/parser.nit:13517 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13517);
   }
   /* parser/parser.nit:13519 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13519);
   }
   /* parser/parser.nit:13521 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13521);
   }
   /* parser/parser.nit:13523 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13523);
   }
   /* parser/parser.nit:13525 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13525);
-  }
-  /* parser/parser.nit:13527 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13527);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13525);
   }
-  /* parser/parser.nit:13528 */
+  /* parser/parser.nit:13526 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13539 */
+  /* parser/parser.nit:13537 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13540 */
+  /* parser/parser.nit:13538 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13540);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13538);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37122,7 +37091,7 @@ void parser___ReduceAction291___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13545;
+  fra.me.line = 13543;
   fra.me.meth = LOCATE_parser___ReduceAction291___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -37138,69 +37107,69 @@ void parser___ReduceAction291___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:13547 */
+  /* parser/parser.nit:13545 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13548 */
+  /* parser/parser.nit:13546 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13549 */
+  /* parser/parser.nit:13547 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13550 */
+  /* parser/parser.nit:13548 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13551 */
+  /* parser/parser.nit:13549 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13552 */
+  /* parser/parser.nit:13550 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13553 */
+  /* parser/parser.nit:13551 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13554 */
+  /* parser/parser.nit:13552 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13555 */
+  /* parser/parser.nit:13553 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13557 */
+  /* parser/parser.nit:13555 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13555);
+  }
+  /* parser/parser.nit:13557 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13557);
   }
   /* parser/parser.nit:13559 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13559);
   }
   /* parser/parser.nit:13561 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13561);
   }
   /* parser/parser.nit:13563 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13563);
   }
   /* parser/parser.nit:13565 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13565);
-  }
-  /* parser/parser.nit:13567 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13567);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13565);
   }
-  /* parser/parser.nit:13568 */
+  /* parser/parser.nit:13566 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13579 */
+  /* parser/parser.nit:13577 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13580 */
+  /* parser/parser.nit:13578 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13580);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13578);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37215,7 +37184,7 @@ void parser___ReduceAction292___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13585;
+  fra.me.line = 13583;
   fra.me.meth = LOCATE_parser___ReduceAction292___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -37232,77 +37201,77 @@ void parser___ReduceAction292___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:13587 */
+  /* parser/parser.nit:13585 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13588 */
+  /* parser/parser.nit:13586 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13589 */
+  /* parser/parser.nit:13587 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13590 */
+  /* parser/parser.nit:13588 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13591 */
+  /* parser/parser.nit:13589 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13592 */
+  /* parser/parser.nit:13590 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13593 */
+  /* parser/parser.nit:13591 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13594 */
+  /* parser/parser.nit:13592 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13595 */
+  /* parser/parser.nit:13593 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13596 */
+  /* parser/parser.nit:13594 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13598 */
+  /* parser/parser.nit:13596 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13596);
+  }
+  /* parser/parser.nit:13598 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13598);
   }
   /* parser/parser.nit:13600 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13600);
   }
   /* parser/parser.nit:13602 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13602);
   }
   /* parser/parser.nit:13604 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13604);
   }
   /* parser/parser.nit:13606 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13606);
   }
   /* parser/parser.nit:13608 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13608);
-  }
-  /* parser/parser.nit:13610 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13610);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13608);
   }
-  /* parser/parser.nit:13611 */
+  /* parser/parser.nit:13609 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13622 */
+  /* parser/parser.nit:13620 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13623 */
+  /* parser/parser.nit:13621 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13623);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13621);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37317,7 +37286,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 = 13628;
+  fra.me.line = 13626;
   fra.me.meth = LOCATE_parser___ReduceAction293___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -37333,69 +37302,69 @@ void parser___ReduceAction293___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:13630 */
+  /* parser/parser.nit:13628 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13631 */
+  /* parser/parser.nit:13629 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13632 */
+  /* parser/parser.nit:13630 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13633 */
+  /* parser/parser.nit:13631 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13634 */
+  /* parser/parser.nit:13632 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13635 */
+  /* parser/parser.nit:13633 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13636 */
+  /* parser/parser.nit:13634 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13637 */
+  /* parser/parser.nit:13635 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13638 */
+  /* parser/parser.nit:13636 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13640 */
+  /* parser/parser.nit:13638 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13638);
+  }
+  /* parser/parser.nit:13640 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13640);
   }
   /* parser/parser.nit:13642 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13642);
   }
   /* parser/parser.nit:13644 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13644);
   }
   /* parser/parser.nit:13646 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13646);
   }
   /* parser/parser.nit:13648 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13648);
-  }
-  /* parser/parser.nit:13650 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13650);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13648);
   }
-  /* parser/parser.nit:13651 */
+  /* parser/parser.nit:13649 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13662 */
+  /* parser/parser.nit:13660 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13663 */
+  /* parser/parser.nit:13661 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13663);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13661);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37410,7 +37379,7 @@ void parser___ReduceAction294___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13668;
+  fra.me.line = 13666;
   fra.me.meth = LOCATE_parser___ReduceAction294___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -37427,77 +37396,77 @@ void parser___ReduceAction294___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:13670 */
+  /* parser/parser.nit:13668 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13671 */
+  /* parser/parser.nit:13669 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13672 */
+  /* parser/parser.nit:13670 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13673 */
+  /* parser/parser.nit:13671 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13674 */
+  /* parser/parser.nit:13672 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13675 */
+  /* parser/parser.nit:13673 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13676 */
+  /* parser/parser.nit:13674 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13677 */
+  /* parser/parser.nit:13675 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13678 */
+  /* parser/parser.nit:13676 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13679 */
+  /* parser/parser.nit:13677 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13681 */
+  /* parser/parser.nit:13679 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13679);
+  }
+  /* parser/parser.nit:13681 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13681);
   }
   /* parser/parser.nit:13683 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13683);
   }
   /* parser/parser.nit:13685 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13685);
   }
   /* parser/parser.nit:13687 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13687);
   }
   /* parser/parser.nit:13689 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13689);
   }
   /* parser/parser.nit:13691 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13691);
-  }
-  /* parser/parser.nit:13693 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13693);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13691);
   }
-  /* parser/parser.nit:13694 */
+  /* parser/parser.nit:13692 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13705 */
+  /* parser/parser.nit:13703 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13706 */
+  /* parser/parser.nit:13704 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13706);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13704);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37512,7 +37481,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 = 13711;
+  fra.me.line = 13709;
   fra.me.meth = LOCATE_parser___ReduceAction295___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -37529,77 +37498,77 @@ void parser___ReduceAction295___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:13713 */
+  /* parser/parser.nit:13711 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13714 */
+  /* parser/parser.nit:13712 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13715 */
+  /* parser/parser.nit:13713 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13716 */
+  /* parser/parser.nit:13714 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13717 */
+  /* parser/parser.nit:13715 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13718 */
+  /* parser/parser.nit:13716 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13719 */
+  /* parser/parser.nit:13717 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13720 */
+  /* parser/parser.nit:13718 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13721 */
+  /* parser/parser.nit:13719 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13722 */
+  /* parser/parser.nit:13720 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13724 */
+  /* parser/parser.nit:13722 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13722);
+  }
+  /* parser/parser.nit:13724 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13724);
   }
   /* parser/parser.nit:13726 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13726);
   }
   /* parser/parser.nit:13728 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13728);
   }
   /* parser/parser.nit:13730 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13730);
   }
   /* parser/parser.nit:13732 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13732);
   }
   /* parser/parser.nit:13734 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13734);
-  }
-  /* parser/parser.nit:13736 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13736);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13734);
   }
-  /* parser/parser.nit:13737 */
+  /* parser/parser.nit:13735 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13748 */
+  /* parser/parser.nit:13746 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13749 */
+  /* parser/parser.nit:13747 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13749);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13747);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37614,7 +37583,7 @@ void parser___ReduceAction296___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13754;
+  fra.me.line = 13752;
   fra.me.meth = LOCATE_parser___ReduceAction296___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -37632,85 +37601,85 @@ void parser___ReduceAction296___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:13756 */
+  /* parser/parser.nit:13754 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13757 */
+  /* parser/parser.nit:13755 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13758 */
+  /* parser/parser.nit:13756 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13759 */
+  /* parser/parser.nit:13757 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13760 */
+  /* parser/parser.nit:13758 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13761 */
+  /* parser/parser.nit:13759 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13762 */
+  /* parser/parser.nit:13760 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13763 */
+  /* parser/parser.nit:13761 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13764 */
+  /* parser/parser.nit:13762 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13765 */
+  /* parser/parser.nit:13763 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13766 */
+  /* parser/parser.nit:13764 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13768 */
+  /* parser/parser.nit:13766 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13766);
+  }
+  /* parser/parser.nit:13768 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13768);
   }
   /* parser/parser.nit:13770 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13770);
   }
   /* parser/parser.nit:13772 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13772);
   }
   /* parser/parser.nit:13774 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13774);
   }
   /* parser/parser.nit:13776 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13776);
   }
   /* parser/parser.nit:13778 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13778);
   }
   /* parser/parser.nit:13780 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13780);
-  }
-  /* parser/parser.nit:13782 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13782);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13780);
   }
-  /* parser/parser.nit:13783 */
+  /* parser/parser.nit:13781 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:13794 */
+  /* parser/parser.nit:13792 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13795 */
+  /* parser/parser.nit:13793 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13795);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13793);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37725,7 +37694,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 = 13800;
+  fra.me.line = 13798;
   fra.me.meth = LOCATE_parser___ReduceAction297___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -37741,69 +37710,69 @@ void parser___ReduceAction297___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:13802 */
+  /* parser/parser.nit:13800 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13803 */
+  /* parser/parser.nit:13801 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13804 */
+  /* parser/parser.nit:13802 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13805 */
+  /* parser/parser.nit:13803 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13806 */
+  /* parser/parser.nit:13804 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13807 */
+  /* parser/parser.nit:13805 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13808 */
+  /* parser/parser.nit:13806 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13809 */
+  /* parser/parser.nit:13807 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13810 */
+  /* parser/parser.nit:13808 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13812 */
+  /* parser/parser.nit:13810 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13810);
+  }
+  /* parser/parser.nit:13812 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13812);
   }
   /* parser/parser.nit:13814 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13814);
   }
   /* parser/parser.nit:13816 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13816);
   }
   /* parser/parser.nit:13818 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13818);
   }
   /* parser/parser.nit:13820 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13820);
-  }
-  /* parser/parser.nit:13822 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13822);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13820);
   }
-  /* parser/parser.nit:13823 */
+  /* parser/parser.nit:13821 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:13834 */
+  /* parser/parser.nit:13832 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13835 */
+  /* parser/parser.nit:13833 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13835);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13833);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37818,7 +37787,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 = 13840;
+  fra.me.line = 13838;
   fra.me.meth = LOCATE_parser___ReduceAction298___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -37835,77 +37804,77 @@ void parser___ReduceAction298___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:13842 */
+  /* parser/parser.nit:13840 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13843 */
+  /* parser/parser.nit:13841 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13844 */
+  /* parser/parser.nit:13842 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13845 */
+  /* parser/parser.nit:13843 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13846 */
+  /* parser/parser.nit:13844 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13847 */
+  /* parser/parser.nit:13845 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13848 */
+  /* parser/parser.nit:13846 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13849 */
+  /* parser/parser.nit:13847 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13850 */
+  /* parser/parser.nit:13848 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13851 */
+  /* parser/parser.nit:13849 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13853 */
+  /* parser/parser.nit:13851 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13851);
+  }
+  /* parser/parser.nit:13853 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13853);
   }
   /* parser/parser.nit:13855 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13855);
   }
   /* parser/parser.nit:13857 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13857);
   }
   /* parser/parser.nit:13859 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13859);
   }
   /* parser/parser.nit:13861 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13861);
   }
   /* parser/parser.nit:13863 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13863);
-  }
-  /* parser/parser.nit:13865 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13865);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13863);
   }
-  /* parser/parser.nit:13866 */
+  /* parser/parser.nit:13864 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:13877 */
+  /* parser/parser.nit:13875 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13878 */
+  /* parser/parser.nit:13876 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13878);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13876);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37920,7 +37889,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 = 13883;
+  fra.me.line = 13881;
   fra.me.meth = LOCATE_parser___ReduceAction299___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -37937,77 +37906,77 @@ void parser___ReduceAction299___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:13885 */
+  /* parser/parser.nit:13883 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13886 */
+  /* parser/parser.nit:13884 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13887 */
+  /* parser/parser.nit:13885 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13888 */
+  /* parser/parser.nit:13886 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13889 */
+  /* parser/parser.nit:13887 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13890 */
+  /* parser/parser.nit:13888 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13891 */
+  /* parser/parser.nit:13889 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13892 */
+  /* parser/parser.nit:13890 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13893 */
+  /* parser/parser.nit:13891 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13894 */
+  /* parser/parser.nit:13892 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13896 */
+  /* parser/parser.nit:13894 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13894);
+  }
+  /* parser/parser.nit:13896 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13896);
   }
   /* parser/parser.nit:13898 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13898);
   }
   /* parser/parser.nit:13900 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13900);
   }
   /* parser/parser.nit:13902 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13902);
   }
   /* parser/parser.nit:13904 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13904);
   }
   /* parser/parser.nit:13906 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13906);
-  }
-  /* parser/parser.nit:13908 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13908);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13906);
   }
-  /* parser/parser.nit:13909 */
+  /* parser/parser.nit:13907 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:13920 */
+  /* parser/parser.nit:13918 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13921 */
+  /* parser/parser.nit:13919 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13921);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13919);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38022,7 +37991,7 @@ void parser___ReduceAction300___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 13926;
+  fra.me.line = 13924;
   fra.me.meth = LOCATE_parser___ReduceAction300___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -38040,85 +38009,85 @@ void parser___ReduceAction300___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:13928 */
+  /* parser/parser.nit:13926 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13929 */
+  /* parser/parser.nit:13927 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13930 */
+  /* parser/parser.nit:13928 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13931 */
+  /* parser/parser.nit:13929 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13932 */
+  /* parser/parser.nit:13930 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13933 */
+  /* parser/parser.nit:13931 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13934 */
+  /* parser/parser.nit:13932 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13935 */
+  /* parser/parser.nit:13933 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13936 */
+  /* parser/parser.nit:13934 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13937 */
+  /* parser/parser.nit:13935 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13938 */
+  /* parser/parser.nit:13936 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13940 */
+  /* parser/parser.nit:13938 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13938);
+  }
+  /* parser/parser.nit:13940 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13940);
   }
   /* parser/parser.nit:13942 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13942);
   }
   /* parser/parser.nit:13944 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13944);
   }
   /* parser/parser.nit:13946 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13946);
   }
   /* parser/parser.nit:13948 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13948);
   }
   /* parser/parser.nit:13950 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13950);
   }
   /* parser/parser.nit:13952 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13952);
-  }
-  /* parser/parser.nit:13954 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13954);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13952);
   }
-  /* parser/parser.nit:13955 */
+  /* parser/parser.nit:13953 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:13966 */
+  /* parser/parser.nit:13964 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13967 */
+  /* parser/parser.nit:13965 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13967);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13965);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38133,7 +38102,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 = 13972;
+  fra.me.line = 13970;
   fra.me.meth = LOCATE_parser___ReduceAction301___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -38150,77 +38119,77 @@ void parser___ReduceAction301___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:13974 */
+  /* parser/parser.nit:13972 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13975 */
+  /* parser/parser.nit:13973 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13976 */
+  /* parser/parser.nit:13974 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13977 */
+  /* parser/parser.nit:13975 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13978 */
+  /* parser/parser.nit:13976 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13979 */
+  /* parser/parser.nit:13977 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13980 */
+  /* parser/parser.nit:13978 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13981 */
+  /* parser/parser.nit:13979 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13982 */
+  /* parser/parser.nit:13980 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13983 */
+  /* parser/parser.nit:13981 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13985 */
+  /* parser/parser.nit:13983 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13983);
+  }
+  /* parser/parser.nit:13985 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13985);
   }
   /* parser/parser.nit:13987 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13987);
   }
   /* parser/parser.nit:13989 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13989);
   }
   /* parser/parser.nit:13991 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13991);
   }
   /* parser/parser.nit:13993 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 13993);
   }
   /* parser/parser.nit:13995 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13995);
-  }
-  /* parser/parser.nit:13997 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 13997);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13995);
   }
-  /* parser/parser.nit:13998 */
+  /* parser/parser.nit:13996 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14009 */
+  /* parser/parser.nit:14007 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14010 */
+  /* parser/parser.nit:14008 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14010);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14008);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38235,7 +38204,7 @@ void parser___ReduceAction302___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14015;
+  fra.me.line = 14013;
   fra.me.meth = LOCATE_parser___ReduceAction302___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -38253,85 +38222,85 @@ void parser___ReduceAction302___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:14017 */
+  /* parser/parser.nit:14015 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14018 */
+  /* parser/parser.nit:14016 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14019 */
+  /* parser/parser.nit:14017 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14020 */
+  /* parser/parser.nit:14018 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14021 */
+  /* parser/parser.nit:14019 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14022 */
+  /* parser/parser.nit:14020 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14023 */
+  /* parser/parser.nit:14021 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14024 */
+  /* parser/parser.nit:14022 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14025 */
+  /* parser/parser.nit:14023 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14026 */
+  /* parser/parser.nit:14024 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14027 */
+  /* parser/parser.nit:14025 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14029 */
+  /* parser/parser.nit:14027 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14027);
+  }
+  /* parser/parser.nit:14029 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14029);
   }
   /* parser/parser.nit:14031 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14031);
   }
   /* parser/parser.nit:14033 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14033);
   }
   /* parser/parser.nit:14035 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14035);
   }
   /* parser/parser.nit:14037 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14037);
   }
   /* parser/parser.nit:14039 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14039);
   }
   /* parser/parser.nit:14041 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14041);
-  }
-  /* parser/parser.nit:14043 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14043);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14041);
   }
-  /* parser/parser.nit:14044 */
+  /* parser/parser.nit:14042 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14055 */
+  /* parser/parser.nit:14053 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14056 */
+  /* parser/parser.nit:14054 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14056);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14054);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38346,7 +38315,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 = 14061;
+  fra.me.line = 14059;
   fra.me.meth = LOCATE_parser___ReduceAction303___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -38364,85 +38333,85 @@ void parser___ReduceAction303___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:14063 */
+  /* parser/parser.nit:14061 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14064 */
+  /* parser/parser.nit:14062 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14065 */
+  /* parser/parser.nit:14063 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14066 */
+  /* parser/parser.nit:14064 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14067 */
+  /* parser/parser.nit:14065 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14068 */
+  /* parser/parser.nit:14066 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14069 */
+  /* parser/parser.nit:14067 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14070 */
+  /* parser/parser.nit:14068 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14071 */
+  /* parser/parser.nit:14069 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14072 */
+  /* parser/parser.nit:14070 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14073 */
+  /* parser/parser.nit:14071 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14075 */
+  /* parser/parser.nit:14073 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14073);
+  }
+  /* parser/parser.nit:14075 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14075);
   }
   /* parser/parser.nit:14077 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14077);
   }
   /* parser/parser.nit:14079 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14079);
   }
   /* parser/parser.nit:14081 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14081);
   }
   /* parser/parser.nit:14083 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14083);
   }
   /* parser/parser.nit:14085 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14085);
   }
   /* parser/parser.nit:14087 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14087);
-  }
-  /* parser/parser.nit:14089 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14089);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14087);
   }
-  /* parser/parser.nit:14090 */
+  /* parser/parser.nit:14088 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14101 */
+  /* parser/parser.nit:14099 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14102 */
+  /* parser/parser.nit:14100 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14102);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14100);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38457,7 +38426,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 = 14107;
+  fra.me.line = 14105;
   fra.me.meth = LOCATE_parser___ReduceAction304___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -38476,93 +38445,93 @@ void parser___ReduceAction304___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:14109 */
+  /* parser/parser.nit:14107 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14110 */
+  /* parser/parser.nit:14108 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14111 */
+  /* parser/parser.nit:14109 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14112 */
+  /* parser/parser.nit:14110 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14113 */
+  /* parser/parser.nit:14111 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14114 */
+  /* parser/parser.nit:14112 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14115 */
+  /* parser/parser.nit:14113 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14116 */
+  /* parser/parser.nit:14114 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14117 */
+  /* parser/parser.nit:14115 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14118 */
+  /* parser/parser.nit:14116 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14119 */
+  /* parser/parser.nit:14117 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14120 */
+  /* parser/parser.nit:14118 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14122 */
+  /* parser/parser.nit:14120 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14120);
+  }
+  /* parser/parser.nit:14122 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14122);
   }
   /* parser/parser.nit:14124 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14124);
   }
   /* parser/parser.nit:14126 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14126);
   }
   /* parser/parser.nit:14128 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14128);
   }
   /* parser/parser.nit:14130 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14130);
   }
   /* parser/parser.nit:14132 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14132);
   }
   /* parser/parser.nit:14134 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14134);
   }
   /* parser/parser.nit:14136 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14136);
-  }
-  /* parser/parser.nit:14138 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14138);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14136);
   }
-  /* parser/parser.nit:14139 */
+  /* parser/parser.nit:14137 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14150 */
+  /* parser/parser.nit:14148 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14151 */
+  /* parser/parser.nit:14149 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14151);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14149);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38577,7 +38546,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 = 14156;
+  fra.me.line = 14154;
   fra.me.meth = LOCATE_parser___ReduceAction305___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -38592,57 +38561,57 @@ void parser___ReduceAction305___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:14158 */
+  /* parser/parser.nit:14156 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14159 */
+  /* parser/parser.nit:14157 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14160 */
+  /* parser/parser.nit:14158 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14161 */
+  /* parser/parser.nit:14159 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14162 */
+  /* parser/parser.nit:14160 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14163 */
+  /* parser/parser.nit:14161 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14165 */
+  /* parser/parser.nit:14163 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14165);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14163);
   }
-  /* parser/parser.nit:14167 */
+  /* parser/parser.nit:14165 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14167);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14165);
   }
-  /* parser/parser.nit:14169 */
+  /* parser/parser.nit:14167 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14169);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14167);
   }
-  /* parser/parser.nit:14171 */
+  /* parser/parser.nit:14169 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14171);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14169);
   }
-  /* parser/parser.nit:14173 */
+  /* parser/parser.nit:14171 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14173);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14171);
   }
-  /* parser/parser.nit:14174 */
+  /* parser/parser.nit:14172 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14185 */
+  /* parser/parser.nit:14183 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14186 */
+  /* parser/parser.nit:14184 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14186);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14184);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38657,7 +38626,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 = 14191;
+  fra.me.line = 14189;
   fra.me.meth = LOCATE_parser___ReduceAction306___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -38673,65 +38642,65 @@ void parser___ReduceAction306___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:14193 */
+  /* parser/parser.nit:14191 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14194 */
+  /* parser/parser.nit:14192 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14195 */
+  /* parser/parser.nit:14193 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14196 */
+  /* parser/parser.nit:14194 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14197 */
+  /* parser/parser.nit:14195 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14198 */
+  /* parser/parser.nit:14196 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14199 */
+  /* parser/parser.nit:14197 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14201 */
+  /* parser/parser.nit:14199 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14199);
+  }
+  /* parser/parser.nit:14201 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14201);
   }
   /* parser/parser.nit:14203 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14203);
   }
   /* parser/parser.nit:14205 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14205);
   }
   /* parser/parser.nit:14207 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14207);
   }
   /* parser/parser.nit:14209 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14209);
-  }
-  /* parser/parser.nit:14211 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14211);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14209);
   }
-  /* parser/parser.nit:14212 */
+  /* parser/parser.nit:14210 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14223 */
+  /* parser/parser.nit:14221 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14224 */
+  /* parser/parser.nit:14222 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14224);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14222);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38746,7 +38715,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 = 14229;
+  fra.me.line = 14227;
   fra.me.meth = LOCATE_parser___ReduceAction307___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -38762,65 +38731,65 @@ void parser___ReduceAction307___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:14231 */
+  /* parser/parser.nit:14229 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14232 */
+  /* parser/parser.nit:14230 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14233 */
+  /* parser/parser.nit:14231 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14234 */
+  /* parser/parser.nit:14232 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14235 */
+  /* parser/parser.nit:14233 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14236 */
+  /* parser/parser.nit:14234 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14237 */
+  /* parser/parser.nit:14235 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14239 */
+  /* parser/parser.nit:14237 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14237);
+  }
+  /* parser/parser.nit:14239 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14239);
   }
   /* parser/parser.nit:14241 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14241);
   }
   /* parser/parser.nit:14243 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14243);
   }
   /* parser/parser.nit:14245 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14245);
   }
   /* parser/parser.nit:14247 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14247);
-  }
-  /* parser/parser.nit:14249 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14249);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14247);
   }
-  /* parser/parser.nit:14250 */
+  /* parser/parser.nit:14248 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14261 */
+  /* parser/parser.nit:14259 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14262 */
+  /* parser/parser.nit:14260 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14262);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14260);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38835,7 +38804,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 = 14267;
+  fra.me.line = 14265;
   fra.me.meth = LOCATE_parser___ReduceAction308___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -38852,73 +38821,73 @@ void parser___ReduceAction308___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:14269 */
+  /* parser/parser.nit:14267 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14270 */
+  /* parser/parser.nit:14268 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14271 */
+  /* parser/parser.nit:14269 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14272 */
+  /* parser/parser.nit:14270 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14273 */
+  /* parser/parser.nit:14271 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14274 */
+  /* parser/parser.nit:14272 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14275 */
+  /* parser/parser.nit:14273 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14276 */
+  /* parser/parser.nit:14274 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14278 */
+  /* parser/parser.nit:14276 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14276);
+  }
+  /* parser/parser.nit:14278 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14278);
   }
   /* parser/parser.nit:14280 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14280);
   }
   /* parser/parser.nit:14282 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14282);
   }
   /* parser/parser.nit:14284 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14284);
   }
   /* parser/parser.nit:14286 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14286);
   }
   /* parser/parser.nit:14288 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14288);
-  }
-  /* parser/parser.nit:14290 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14290);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14288);
   }
-  /* parser/parser.nit:14291 */
+  /* parser/parser.nit:14289 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14302 */
+  /* parser/parser.nit:14300 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14303 */
+  /* parser/parser.nit:14301 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14303);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14301);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38933,7 +38902,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 = 14308;
+  fra.me.line = 14306;
   fra.me.meth = LOCATE_parser___ReduceAction309___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -38949,65 +38918,65 @@ void parser___ReduceAction309___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:14310 */
+  /* parser/parser.nit:14308 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14311 */
+  /* parser/parser.nit:14309 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14312 */
+  /* parser/parser.nit:14310 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14313 */
+  /* parser/parser.nit:14311 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14314 */
+  /* parser/parser.nit:14312 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14315 */
+  /* parser/parser.nit:14313 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14316 */
+  /* parser/parser.nit:14314 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14318 */
+  /* parser/parser.nit:14316 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14316);
+  }
+  /* parser/parser.nit:14318 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14318);
   }
   /* parser/parser.nit:14320 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14320);
   }
   /* parser/parser.nit:14322 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14322);
   }
   /* parser/parser.nit:14324 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14324);
   }
   /* parser/parser.nit:14326 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14326);
-  }
-  /* parser/parser.nit:14328 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14328);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14326);
   }
-  /* parser/parser.nit:14329 */
+  /* parser/parser.nit:14327 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14340 */
+  /* parser/parser.nit:14338 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14341 */
+  /* parser/parser.nit:14339 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14341);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14339);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39022,7 +38991,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 = 14346;
+  fra.me.line = 14344;
   fra.me.meth = LOCATE_parser___ReduceAction310___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -39039,73 +39008,73 @@ void parser___ReduceAction310___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:14348 */
+  /* parser/parser.nit:14346 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14349 */
+  /* parser/parser.nit:14347 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14350 */
+  /* parser/parser.nit:14348 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14351 */
+  /* parser/parser.nit:14349 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14352 */
+  /* parser/parser.nit:14350 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14353 */
+  /* parser/parser.nit:14351 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14354 */
+  /* parser/parser.nit:14352 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14355 */
+  /* parser/parser.nit:14353 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14357 */
+  /* parser/parser.nit:14355 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14355);
+  }
+  /* parser/parser.nit:14357 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14357);
   }
   /* parser/parser.nit:14359 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14359);
   }
   /* parser/parser.nit:14361 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14361);
   }
   /* parser/parser.nit:14363 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14363);
   }
   /* parser/parser.nit:14365 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14365);
   }
   /* parser/parser.nit:14367 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14367);
-  }
-  /* parser/parser.nit:14369 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14369);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14367);
   }
-  /* parser/parser.nit:14370 */
+  /* parser/parser.nit:14368 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14381 */
+  /* parser/parser.nit:14379 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14382 */
+  /* parser/parser.nit:14380 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14382);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14380);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39120,7 +39089,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 = 14387;
+  fra.me.line = 14385;
   fra.me.meth = LOCATE_parser___ReduceAction311___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -39137,73 +39106,73 @@ void parser___ReduceAction311___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:14389 */
+  /* parser/parser.nit:14387 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14390 */
+  /* parser/parser.nit:14388 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14391 */
+  /* parser/parser.nit:14389 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14392 */
+  /* parser/parser.nit:14390 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14393 */
+  /* parser/parser.nit:14391 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14394 */
+  /* parser/parser.nit:14392 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14395 */
+  /* parser/parser.nit:14393 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14396 */
+  /* parser/parser.nit:14394 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14398 */
+  /* parser/parser.nit:14396 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14396);
+  }
+  /* parser/parser.nit:14398 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14398);
   }
   /* parser/parser.nit:14400 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14400);
   }
   /* parser/parser.nit:14402 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14402);
   }
   /* parser/parser.nit:14404 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14404);
   }
   /* parser/parser.nit:14406 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14406);
   }
   /* parser/parser.nit:14408 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14408);
-  }
-  /* parser/parser.nit:14410 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14410);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14408);
   }
-  /* parser/parser.nit:14411 */
+  /* parser/parser.nit:14409 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14422 */
+  /* parser/parser.nit:14420 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14423 */
+  /* parser/parser.nit:14421 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14423);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14421);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39218,7 +39187,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 = 14428;
+  fra.me.line = 14426;
   fra.me.meth = LOCATE_parser___ReduceAction312___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -39236,81 +39205,81 @@ void parser___ReduceAction312___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:14430 */
+  /* parser/parser.nit:14428 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14431 */
+  /* parser/parser.nit:14429 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14432 */
+  /* parser/parser.nit:14430 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14433 */
+  /* parser/parser.nit:14431 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14434 */
+  /* parser/parser.nit:14432 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14435 */
+  /* parser/parser.nit:14433 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14436 */
+  /* parser/parser.nit:14434 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14437 */
+  /* parser/parser.nit:14435 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14438 */
+  /* parser/parser.nit:14436 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14440 */
+  /* parser/parser.nit:14438 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14438);
+  }
+  /* parser/parser.nit:14440 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14440);
   }
   /* parser/parser.nit:14442 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14442);
   }
   /* parser/parser.nit:14444 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14444);
   }
   /* parser/parser.nit:14446 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14446);
   }
   /* parser/parser.nit:14448 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14448);
   }
   /* parser/parser.nit:14450 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14450);
   }
   /* parser/parser.nit:14452 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14452);
-  }
-  /* parser/parser.nit:14454 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14454);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14452);
   }
-  /* parser/parser.nit:14455 */
+  /* parser/parser.nit:14453 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14466 */
+  /* parser/parser.nit:14464 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14467 */
+  /* parser/parser.nit:14465 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14467);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14465);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39325,7 +39294,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 = 14472;
+  fra.me.line = 14470;
   fra.me.meth = LOCATE_parser___ReduceAction313___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -39341,65 +39310,65 @@ void parser___ReduceAction313___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:14474 */
+  /* parser/parser.nit:14472 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14475 */
+  /* parser/parser.nit:14473 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14476 */
+  /* parser/parser.nit:14474 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14477 */
+  /* parser/parser.nit:14475 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14478 */
+  /* parser/parser.nit:14476 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14479 */
+  /* parser/parser.nit:14477 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14480 */
+  /* parser/parser.nit:14478 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14482 */
+  /* parser/parser.nit:14480 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14480);
+  }
+  /* parser/parser.nit:14482 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14482);
   }
   /* parser/parser.nit:14484 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14484);
   }
   /* parser/parser.nit:14486 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14486);
   }
   /* parser/parser.nit:14488 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14488);
   }
   /* parser/parser.nit:14490 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14490);
-  }
-  /* parser/parser.nit:14492 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14492);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14490);
   }
-  /* parser/parser.nit:14493 */
+  /* parser/parser.nit:14491 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14504 */
+  /* parser/parser.nit:14502 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14505 */
+  /* parser/parser.nit:14503 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14505);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14503);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39414,7 +39383,7 @@ void parser___ReduceAction314___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14510;
+  fra.me.line = 14508;
   fra.me.meth = LOCATE_parser___ReduceAction314___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -39431,73 +39400,73 @@ void parser___ReduceAction314___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:14512 */
+  /* parser/parser.nit:14510 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14513 */
+  /* parser/parser.nit:14511 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14514 */
+  /* parser/parser.nit:14512 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14515 */
+  /* parser/parser.nit:14513 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14516 */
+  /* parser/parser.nit:14514 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14517 */
+  /* parser/parser.nit:14515 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14518 */
+  /* parser/parser.nit:14516 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14519 */
+  /* parser/parser.nit:14517 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14521 */
+  /* parser/parser.nit:14519 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14519);
+  }
+  /* parser/parser.nit:14521 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14521);
   }
   /* parser/parser.nit:14523 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14523);
   }
   /* parser/parser.nit:14525 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14525);
   }
   /* parser/parser.nit:14527 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14527);
   }
   /* parser/parser.nit:14529 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14529);
   }
   /* parser/parser.nit:14531 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14531);
-  }
-  /* parser/parser.nit:14533 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14533);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14531);
   }
-  /* parser/parser.nit:14534 */
+  /* parser/parser.nit:14532 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14545 */
+  /* parser/parser.nit:14543 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14546 */
+  /* parser/parser.nit:14544 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14546);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14544);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39512,7 +39481,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 = 14551;
+  fra.me.line = 14549;
   fra.me.meth = LOCATE_parser___ReduceAction315___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -39529,73 +39498,73 @@ void parser___ReduceAction315___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:14553 */
+  /* parser/parser.nit:14551 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14554 */
+  /* parser/parser.nit:14552 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14555 */
+  /* parser/parser.nit:14553 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14556 */
+  /* parser/parser.nit:14554 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14557 */
+  /* parser/parser.nit:14555 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14558 */
+  /* parser/parser.nit:14556 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14559 */
+  /* parser/parser.nit:14557 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14560 */
+  /* parser/parser.nit:14558 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14562 */
+  /* parser/parser.nit:14560 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14560);
+  }
+  /* parser/parser.nit:14562 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14562);
   }
   /* parser/parser.nit:14564 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14564);
   }
   /* parser/parser.nit:14566 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14566);
   }
   /* parser/parser.nit:14568 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14568);
   }
   /* parser/parser.nit:14570 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14570);
   }
   /* parser/parser.nit:14572 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14572);
-  }
-  /* parser/parser.nit:14574 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14574);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14572);
   }
-  /* parser/parser.nit:14575 */
+  /* parser/parser.nit:14573 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14586 */
+  /* parser/parser.nit:14584 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14587 */
+  /* parser/parser.nit:14585 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14587);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14585);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39610,7 +39579,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 = 14592;
+  fra.me.line = 14590;
   fra.me.meth = LOCATE_parser___ReduceAction316___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -39628,81 +39597,81 @@ void parser___ReduceAction316___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:14594 */
+  /* parser/parser.nit:14592 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14595 */
+  /* parser/parser.nit:14593 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14596 */
+  /* parser/parser.nit:14594 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14597 */
+  /* parser/parser.nit:14595 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14598 */
+  /* parser/parser.nit:14596 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14599 */
+  /* parser/parser.nit:14597 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14600 */
+  /* parser/parser.nit:14598 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14601 */
+  /* parser/parser.nit:14599 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14602 */
+  /* parser/parser.nit:14600 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14604 */
+  /* parser/parser.nit:14602 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14602);
+  }
+  /* parser/parser.nit:14604 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14604);
   }
   /* parser/parser.nit:14606 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14606);
   }
   /* parser/parser.nit:14608 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14608);
   }
   /* parser/parser.nit:14610 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14610);
   }
   /* parser/parser.nit:14612 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14612);
   }
   /* parser/parser.nit:14614 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14614);
   }
   /* parser/parser.nit:14616 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14616);
-  }
-  /* parser/parser.nit:14618 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14618);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14616);
   }
-  /* parser/parser.nit:14619 */
+  /* parser/parser.nit:14617 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14630 */
+  /* parser/parser.nit:14628 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14631 */
+  /* parser/parser.nit:14629 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14631);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14629);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39717,7 +39686,7 @@ void parser___ReduceAction317___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14636;
+  fra.me.line = 14634;
   fra.me.meth = LOCATE_parser___ReduceAction317___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -39734,73 +39703,73 @@ void parser___ReduceAction317___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:14638 */
+  /* parser/parser.nit:14636 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14639 */
+  /* parser/parser.nit:14637 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14640 */
+  /* parser/parser.nit:14638 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14641 */
+  /* parser/parser.nit:14639 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14642 */
+  /* parser/parser.nit:14640 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14643 */
+  /* parser/parser.nit:14641 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14644 */
+  /* parser/parser.nit:14642 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14645 */
+  /* parser/parser.nit:14643 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14647 */
+  /* parser/parser.nit:14645 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14645);
+  }
+  /* parser/parser.nit:14647 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14647);
   }
   /* parser/parser.nit:14649 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14649);
   }
   /* parser/parser.nit:14651 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14651);
   }
   /* parser/parser.nit:14653 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14653);
   }
   /* parser/parser.nit:14655 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14655);
   }
   /* parser/parser.nit:14657 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14657);
-  }
-  /* parser/parser.nit:14659 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14659);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14657);
   }
-  /* parser/parser.nit:14660 */
+  /* parser/parser.nit:14658 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14671 */
+  /* parser/parser.nit:14669 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14672 */
+  /* parser/parser.nit:14670 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14672);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14670);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39815,7 +39784,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 = 14677;
+  fra.me.line = 14675;
   fra.me.meth = LOCATE_parser___ReduceAction318___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -39833,81 +39802,81 @@ void parser___ReduceAction318___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:14679 */
+  /* parser/parser.nit:14677 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14680 */
+  /* parser/parser.nit:14678 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14681 */
+  /* parser/parser.nit:14679 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14682 */
+  /* parser/parser.nit:14680 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14683 */
+  /* parser/parser.nit:14681 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14684 */
+  /* parser/parser.nit:14682 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14685 */
+  /* parser/parser.nit:14683 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14686 */
+  /* parser/parser.nit:14684 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14687 */
+  /* parser/parser.nit:14685 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14689 */
+  /* parser/parser.nit:14687 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14687);
+  }
+  /* parser/parser.nit:14689 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14689);
   }
   /* parser/parser.nit:14691 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14691);
   }
   /* parser/parser.nit:14693 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14693);
   }
   /* parser/parser.nit:14695 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14695);
   }
   /* parser/parser.nit:14697 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14697);
   }
   /* parser/parser.nit:14699 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14699);
   }
   /* parser/parser.nit:14701 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14701);
-  }
-  /* parser/parser.nit:14703 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14703);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14701);
   }
-  /* parser/parser.nit:14704 */
+  /* parser/parser.nit:14702 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14715 */
+  /* parser/parser.nit:14713 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14716 */
+  /* parser/parser.nit:14714 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14716);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14714);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39922,7 +39891,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 = 14721;
+  fra.me.line = 14719;
   fra.me.meth = LOCATE_parser___ReduceAction319___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -39940,81 +39909,81 @@ void parser___ReduceAction319___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:14723 */
+  /* parser/parser.nit:14721 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14724 */
+  /* parser/parser.nit:14722 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14725 */
+  /* parser/parser.nit:14723 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14726 */
+  /* parser/parser.nit:14724 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14727 */
+  /* parser/parser.nit:14725 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14728 */
+  /* parser/parser.nit:14726 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14729 */
+  /* parser/parser.nit:14727 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14730 */
+  /* parser/parser.nit:14728 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14731 */
+  /* parser/parser.nit:14729 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14733 */
+  /* parser/parser.nit:14731 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14731);
+  }
+  /* parser/parser.nit:14733 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14733);
   }
   /* parser/parser.nit:14735 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14735);
   }
   /* parser/parser.nit:14737 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14737);
   }
   /* parser/parser.nit:14739 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14739);
   }
   /* parser/parser.nit:14741 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14741);
   }
   /* parser/parser.nit:14743 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14743);
   }
   /* parser/parser.nit:14745 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14745);
-  }
-  /* parser/parser.nit:14747 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14747);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14745);
   }
-  /* parser/parser.nit:14748 */
+  /* parser/parser.nit:14746 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14759 */
+  /* parser/parser.nit:14757 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14760 */
+  /* parser/parser.nit:14758 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14760);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14758);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40029,7 +39998,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 = 14765;
+  fra.me.line = 14763;
   fra.me.meth = LOCATE_parser___ReduceAction320___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -40048,89 +40017,89 @@ void parser___ReduceAction320___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:14767 */
+  /* parser/parser.nit:14765 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14768 */
+  /* parser/parser.nit:14766 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14769 */
+  /* parser/parser.nit:14767 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14770 */
+  /* parser/parser.nit:14768 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14771 */
+  /* parser/parser.nit:14769 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14772 */
+  /* parser/parser.nit:14770 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14773 */
+  /* parser/parser.nit:14771 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14774 */
+  /* parser/parser.nit:14772 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14775 */
+  /* parser/parser.nit:14773 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14776 */
+  /* parser/parser.nit:14774 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14778 */
+  /* parser/parser.nit:14776 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14776);
+  }
+  /* parser/parser.nit:14778 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14778);
   }
   /* parser/parser.nit:14780 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14780);
   }
   /* parser/parser.nit:14782 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14782);
   }
   /* parser/parser.nit:14784 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14784);
   }
   /* parser/parser.nit:14786 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14786);
   }
   /* parser/parser.nit:14788 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14788);
   }
   /* parser/parser.nit:14790 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 14790);
   }
   /* parser/parser.nit:14792 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14792);
-  }
-  /* parser/parser.nit:14794 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14794);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14792);
   }
-  /* parser/parser.nit:14795 */
+  /* parser/parser.nit:14793 */
   fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14806 */
+  /* parser/parser.nit:14804 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14807 */
+  /* parser/parser.nit:14805 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14807);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14805);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40145,7 +40114,7 @@ void parser___ReduceAction321___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14812;
+  fra.me.line = 14810;
   fra.me.meth = LOCATE_parser___ReduceAction321___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -40157,19 +40126,19 @@ void parser___ReduceAction321___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:14814 */
+  /* parser/parser.nit:14812 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14815 */
+  /* parser/parser.nit:14813 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14816 */
+  /* parser/parser.nit:14814 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14818 */
+  /* parser/parser.nit:14816 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14819 */
+  /* parser/parser.nit:14817 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14819);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14817);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40184,7 +40153,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 = 14824;
+  fra.me.line = 14822;
   fra.me.meth = LOCATE_parser___ReduceAction322___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -40196,23 +40165,23 @@ 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:14826 */
+  /* parser/parser.nit:14824 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14827 */
+  /* parser/parser.nit:14825 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14828 */
+  /* parser/parser.nit:14826 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14829 */
+  /* parser/parser.nit:14827 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14830 */
+  /* parser/parser.nit:14828 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14832 */
+  /* parser/parser.nit:14830 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14833 */
+  /* parser/parser.nit:14831 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14833);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14831);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40227,7 +40196,7 @@ void parser___ReduceAction324___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14838;
+  fra.me.line = 14836;
   fra.me.meth = LOCATE_parser___ReduceAction324___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -40239,21 +40208,21 @@ void parser___ReduceAction324___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:14840 */
+  /* parser/parser.nit:14838 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14841 */
+  /* parser/parser.nit:14839 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14842 */
+  /* parser/parser.nit:14840 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14843 */
+  /* parser/parser.nit:14841 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14845 */
+  /* parser/parser.nit:14843 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14846 */
+  /* parser/parser.nit:14844 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14846);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14844);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40268,7 +40237,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 = 14851;
+  fra.me.line = 14849;
   fra.me.meth = LOCATE_parser___ReduceAction325___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40279,25 +40248,25 @@ void parser___ReduceAction325___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:14853 */
+  /* parser/parser.nit:14851 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14854 */
+  /* parser/parser.nit:14852 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14856 */
+  /* parser/parser.nit:14854 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14856);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14854);
   }
-  /* parser/parser.nit:14857 */
+  /* parser/parser.nit:14855 */
   fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14861 */
+  /* parser/parser.nit:14859 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14862 */
+  /* parser/parser.nit:14860 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14862);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14860);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40312,7 +40281,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 = 14867;
+  fra.me.line = 14865;
   fra.me.meth = LOCATE_parser___ReduceAction326___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -40324,33 +40293,33 @@ void parser___ReduceAction326___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:14869 */
+  /* parser/parser.nit:14867 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14870 */
+  /* parser/parser.nit:14868 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14871 */
+  /* parser/parser.nit:14869 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14873 */
+  /* parser/parser.nit:14871 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14873);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14871);
   }
-  /* parser/parser.nit:14875 */
+  /* parser/parser.nit:14873 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14875);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14873);
   }
-  /* parser/parser.nit:14876 */
+  /* parser/parser.nit:14874 */
   fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14880 */
+  /* parser/parser.nit:14878 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14881 */
+  /* parser/parser.nit:14879 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14881);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14879);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40365,7 +40334,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 = 14886;
+  fra.me.line = 14884;
   fra.me.meth = LOCATE_parser___ReduceAction327___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40376,25 +40345,25 @@ void parser___ReduceAction327___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:14888 */
+  /* parser/parser.nit:14886 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14889 */
+  /* parser/parser.nit:14887 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14891 */
+  /* parser/parser.nit:14889 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14891);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14889);
   }
-  /* parser/parser.nit:14892 */
+  /* parser/parser.nit:14890 */
   fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14897 */
+  /* parser/parser.nit:14895 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14898 */
+  /* parser/parser.nit:14896 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14898);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14896);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40409,7 +40378,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 = 14903;
+  fra.me.line = 14901;
   fra.me.meth = LOCATE_parser___ReduceAction328___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -40421,33 +40390,33 @@ 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:14905 */
+  /* parser/parser.nit:14903 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14906 */
+  /* parser/parser.nit:14904 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14907 */
+  /* parser/parser.nit:14905 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14909 */
+  /* parser/parser.nit:14907 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14909);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14907);
   }
-  /* parser/parser.nit:14911 */
+  /* parser/parser.nit:14909 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14911);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14909);
   }
-  /* parser/parser.nit:14912 */
+  /* parser/parser.nit:14910 */
   fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14917 */
+  /* parser/parser.nit:14915 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14918 */
+  /* parser/parser.nit:14916 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14918);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14916);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40462,7 +40431,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 = 14923;
+  fra.me.line = 14921;
   fra.me.meth = LOCATE_parser___ReduceAction329___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -40474,33 +40443,33 @@ 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:14925 */
+  /* parser/parser.nit:14923 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14926 */
+  /* parser/parser.nit:14924 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14927 */
+  /* parser/parser.nit:14925 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14929 */
+  /* parser/parser.nit:14927 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14929);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14927);
   }
-  /* parser/parser.nit:14931 */
+  /* parser/parser.nit:14929 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14931);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14929);
   }
-  /* parser/parser.nit:14932 */
+  /* parser/parser.nit:14930 */
   fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14937 */
+  /* parser/parser.nit:14935 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14938 */
+  /* parser/parser.nit:14936 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14938);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14936);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40515,7 +40484,7 @@ void parser___ReduceAction330___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14943;
+  fra.me.line = 14941;
   fra.me.meth = LOCATE_parser___ReduceAction330___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -40528,41 +40497,41 @@ void parser___ReduceAction330___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:14945 */
+  /* parser/parser.nit:14943 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14946 */
+  /* parser/parser.nit:14944 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14947 */
+  /* parser/parser.nit:14945 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14948 */
+  /* parser/parser.nit:14946 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14950 */
+  /* parser/parser.nit:14948 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14950);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14948);
   }
-  /* parser/parser.nit:14952 */
+  /* parser/parser.nit:14950 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14952);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14950);
   }
-  /* parser/parser.nit:14954 */
+  /* parser/parser.nit:14952 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14954);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14952);
   }
-  /* parser/parser.nit:14955 */
+  /* parser/parser.nit:14953 */
   fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14960 */
+  /* parser/parser.nit:14958 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14961 */
+  /* parser/parser.nit:14959 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14961);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14959);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40577,7 +40546,7 @@ void parser___ReduceAction331___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14966;
+  fra.me.line = 14964;
   fra.me.meth = LOCATE_parser___ReduceAction331___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40588,17 +40557,17 @@ void parser___ReduceAction331___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:14968 */
+  /* parser/parser.nit:14966 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14969 */
+  /* parser/parser.nit:14967 */
   fra.me.REG[3] = NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility();
-  /* parser/parser.nit:14970 */
+  /* parser/parser.nit:14968 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14971 */
+  /* parser/parser.nit:14969 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14971);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14969);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40613,7 +40582,7 @@ void parser___ReduceAction332___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14976;
+  fra.me.line = 14974;
   fra.me.meth = LOCATE_parser___ReduceAction332___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40624,27 +40593,27 @@ void parser___ReduceAction332___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:14978 */
+  /* parser/parser.nit:14976 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14979 */
+  /* parser/parser.nit:14977 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14980 */
+  /* parser/parser.nit:14978 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14982 */
+  /* parser/parser.nit:14980 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwprivate, ID_parser___parser_nodes___TKwprivate)) /*cast nullable TKwprivate*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14982);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14980);
   }
-  /* parser/parser.nit:14983 */
+  /* parser/parser.nit:14981 */
   fra.me.REG[3] = NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[3]);
-  /* parser/parser.nit:14986 */
+  /* parser/parser.nit:14984 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14987 */
+  /* parser/parser.nit:14985 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14987);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14985);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40659,7 +40628,7 @@ void parser___ReduceAction333___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 14992;
+  fra.me.line = 14990;
   fra.me.meth = LOCATE_parser___ReduceAction333___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40670,27 +40639,27 @@ void parser___ReduceAction333___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:14994 */
+  /* parser/parser.nit:14992 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14995 */
+  /* parser/parser.nit:14993 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14996 */
+  /* parser/parser.nit:14994 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14998 */
+  /* parser/parser.nit:14996 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwprotected, ID_parser___parser_nodes___TKwprotected)) /*cast nullable TKwprotected*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 14998);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14996);
   }
-  /* parser/parser.nit:14999 */
+  /* parser/parser.nit:14997 */
   fra.me.REG[3] = NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[3]);
-  /* parser/parser.nit:15002 */
+  /* parser/parser.nit:15000 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15003 */
+  /* parser/parser.nit:15001 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15003);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15001);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40705,7 +40674,7 @@ void parser___ReduceAction334___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15008;
+  fra.me.line = 15006;
   fra.me.meth = LOCATE_parser___ReduceAction334___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40716,27 +40685,27 @@ void parser___ReduceAction334___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:15010 */
+  /* parser/parser.nit:15008 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15011 */
+  /* parser/parser.nit:15009 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15012 */
+  /* parser/parser.nit:15010 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15014 */
+  /* parser/parser.nit:15012 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwintrude, ID_parser___parser_nodes___TKwintrude)) /*cast nullable TKwintrude*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15014);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15012);
   }
-  /* parser/parser.nit:15015 */
+  /* parser/parser.nit:15013 */
   fra.me.REG[3] = NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[3]);
-  /* parser/parser.nit:15018 */
+  /* parser/parser.nit:15016 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15019 */
+  /* parser/parser.nit:15017 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15019);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15017);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40751,7 +40720,7 @@ void parser___ReduceAction335___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15024;
+  fra.me.line = 15022;
   fra.me.meth = LOCATE_parser___ReduceAction335___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40762,25 +40731,25 @@ void parser___ReduceAction335___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:15026 */
+  /* parser/parser.nit:15024 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15027 */
+  /* parser/parser.nit:15025 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15029 */
+  /* parser/parser.nit:15027 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15029);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15027);
   }
-  /* parser/parser.nit:15030 */
+  /* parser/parser.nit:15028 */
   fra.me.REG[3] = NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15033 */
+  /* parser/parser.nit:15031 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15034 */
+  /* parser/parser.nit:15032 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15034);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15032);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40795,7 +40764,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 = 15039;
+  fra.me.line = 15037;
   fra.me.meth = LOCATE_parser___ReduceAction336___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40806,25 +40775,25 @@ void parser___ReduceAction336___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:15041 */
+  /* parser/parser.nit:15039 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15042 */
+  /* parser/parser.nit:15040 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15044 */
+  /* parser/parser.nit:15042 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPlus, ID_parser___parser_nodes___TPlus)) /*cast nullable TPlus*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15044);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15042);
   }
-  /* parser/parser.nit:15045 */
+  /* parser/parser.nit:15043 */
   fra.me.REG[3] = NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15048 */
+  /* parser/parser.nit:15046 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15049 */
+  /* parser/parser.nit:15047 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15049);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15047);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40839,7 +40808,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 = 15054;
+  fra.me.line = 15052;
   fra.me.meth = LOCATE_parser___ReduceAction337___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40850,25 +40819,25 @@ void parser___ReduceAction337___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:15056 */
+  /* parser/parser.nit:15054 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15057 */
+  /* parser/parser.nit:15055 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15059 */
+  /* parser/parser.nit:15057 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast nullable TMinus*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15059);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15057);
   }
-  /* parser/parser.nit:15060 */
+  /* parser/parser.nit:15058 */
   fra.me.REG[3] = NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15063 */
+  /* parser/parser.nit:15061 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15064 */
+  /* parser/parser.nit:15062 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15064);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15062);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40883,7 +40852,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 = 15069;
+  fra.me.line = 15067;
   fra.me.meth = LOCATE_parser___ReduceAction338___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40894,25 +40863,25 @@ void parser___ReduceAction338___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:15071 */
+  /* parser/parser.nit:15069 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15072 */
+  /* parser/parser.nit:15070 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15074 */
+  /* parser/parser.nit:15072 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStar, ID_parser___parser_nodes___TStar)) /*cast nullable TStar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15074);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15072);
   }
-  /* parser/parser.nit:15075 */
+  /* parser/parser.nit:15073 */
   fra.me.REG[3] = NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15078 */
+  /* parser/parser.nit:15076 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15079 */
+  /* parser/parser.nit:15077 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15079);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15077);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40927,7 +40896,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 = 15084;
+  fra.me.line = 15082;
   fra.me.meth = LOCATE_parser___ReduceAction339___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40938,25 +40907,25 @@ void parser___ReduceAction339___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:15086 */
+  /* parser/parser.nit:15084 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15087 */
+  /* parser/parser.nit:15085 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15089 */
+  /* parser/parser.nit:15087 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TSlash, ID_parser___parser_nodes___TSlash)) /*cast nullable TSlash*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15089);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15087);
   }
-  /* parser/parser.nit:15090 */
+  /* parser/parser.nit:15088 */
   fra.me.REG[3] = NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15093 */
+  /* parser/parser.nit:15091 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15094 */
+  /* parser/parser.nit:15092 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15094);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15092);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -40971,7 +40940,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 = 15099;
+  fra.me.line = 15097;
   fra.me.meth = LOCATE_parser___ReduceAction340___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40982,25 +40951,25 @@ void parser___ReduceAction340___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:15101 */
+  /* parser/parser.nit:15099 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15102 */
+  /* parser/parser.nit:15100 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15104 */
+  /* parser/parser.nit:15102 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPercent, ID_parser___parser_nodes___TPercent)) /*cast nullable TPercent*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15104);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15102);
   }
-  /* parser/parser.nit:15105 */
+  /* parser/parser.nit:15103 */
   fra.me.REG[3] = NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15108 */
+  /* parser/parser.nit:15106 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15109 */
+  /* parser/parser.nit:15107 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15109);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15107);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41015,7 +40984,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 = 15114;
+  fra.me.line = 15112;
   fra.me.meth = LOCATE_parser___ReduceAction341___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41026,25 +40995,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:15116 */
+  /* parser/parser.nit:15114 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15117 */
+  /* parser/parser.nit:15115 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15119 */
+  /* parser/parser.nit:15117 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TEq, ID_parser___parser_nodes___TEq)) /*cast nullable TEq*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15119);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15117);
   }
-  /* parser/parser.nit:15120 */
+  /* parser/parser.nit:15118 */
   fra.me.REG[3] = NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15123 */
+  /* parser/parser.nit:15121 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15124 */
+  /* parser/parser.nit:15122 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15124);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15122);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41059,7 +41028,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 = 15129;
+  fra.me.line = 15127;
   fra.me.meth = LOCATE_parser___ReduceAction342___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41070,25 +41039,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:15131 */
+  /* parser/parser.nit:15129 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15132 */
+  /* parser/parser.nit:15130 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15134 */
+  /* parser/parser.nit:15132 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TNe, ID_parser___parser_nodes___TNe)) /*cast nullable TNe*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15132);
   }
-  /* parser/parser.nit:15135 */
+  /* parser/parser.nit:15133 */
   fra.me.REG[3] = NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[3]);
-  /* parser/parser.nit:15138 */
+  /* parser/parser.nit:15136 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15139 */
+  /* parser/parser.nit:15137 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15139);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15137);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41103,7 +41072,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 = 15144;
+  fra.me.line = 15142;
   fra.me.meth = LOCATE_parser___ReduceAction343___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41114,25 +41083,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:15146 */
+  /* parser/parser.nit:15144 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15147 */
+  /* parser/parser.nit:15145 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15149 */
+  /* parser/parser.nit:15147 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLe, ID_parser___parser_nodes___TLe)) /*cast nullable TLe*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15149);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15147);
   }
-  /* parser/parser.nit:15150 */
+  /* parser/parser.nit:15148 */
   fra.me.REG[3] = NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[3]);
-  /* parser/parser.nit:15153 */
+  /* parser/parser.nit:15151 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15154 */
+  /* parser/parser.nit:15152 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15154);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15152);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41147,7 +41116,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 = 15159;
+  fra.me.line = 15157;
   fra.me.meth = LOCATE_parser___ReduceAction344___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41158,25 +41127,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:15161 */
+  /* parser/parser.nit:15159 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15162 */
+  /* parser/parser.nit:15160 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15164 */
+  /* parser/parser.nit:15162 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGe, ID_parser___parser_nodes___TGe)) /*cast nullable TGe*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15164);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15162);
   }
-  /* parser/parser.nit:15165 */
+  /* parser/parser.nit:15163 */
   fra.me.REG[3] = NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[3]);
-  /* parser/parser.nit:15168 */
+  /* parser/parser.nit:15166 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15169 */
+  /* parser/parser.nit:15167 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15169);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15167);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41191,7 +41160,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 = 15174;
+  fra.me.line = 15172;
   fra.me.meth = LOCATE_parser___ReduceAction345___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41202,25 +41171,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:15176 */
+  /* parser/parser.nit:15174 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15177 */
+  /* parser/parser.nit:15175 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15179 */
+  /* parser/parser.nit:15177 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLt, ID_parser___parser_nodes___TLt)) /*cast nullable TLt*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15179);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15177);
   }
-  /* parser/parser.nit:15180 */
+  /* parser/parser.nit:15178 */
   fra.me.REG[3] = NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15183 */
+  /* parser/parser.nit:15181 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15184 */
+  /* parser/parser.nit:15182 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15184);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15182);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41235,7 +41204,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 = 15189;
+  fra.me.line = 15187;
   fra.me.meth = LOCATE_parser___ReduceAction346___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41246,25 +41215,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:15191 */
+  /* parser/parser.nit:15189 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15192 */
+  /* parser/parser.nit:15190 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15194 */
+  /* parser/parser.nit:15192 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGt, ID_parser___parser_nodes___TGt)) /*cast nullable TGt*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15194);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15192);
   }
-  /* parser/parser.nit:15195 */
+  /* parser/parser.nit:15193 */
   fra.me.REG[3] = NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15198 */
+  /* parser/parser.nit:15196 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15199 */
+  /* parser/parser.nit:15197 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15199);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15197);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41279,7 +41248,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 = 15204;
+  fra.me.line = 15202;
   fra.me.meth = LOCATE_parser___ReduceAction347___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41290,25 +41259,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:15206 */
+  /* parser/parser.nit:15204 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15207 */
+  /* parser/parser.nit:15205 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15209 */
+  /* parser/parser.nit:15207 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLl, ID_parser___parser_nodes___TLl)) /*cast nullable TLl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15209);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15207);
   }
-  /* parser/parser.nit:15210 */
+  /* parser/parser.nit:15208 */
   fra.me.REG[3] = NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15213 */
+  /* parser/parser.nit:15211 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15214 */
+  /* parser/parser.nit:15212 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15214);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15212);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41323,7 +41292,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 = 15219;
+  fra.me.line = 15217;
   fra.me.meth = LOCATE_parser___ReduceAction348___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41334,25 +41303,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:15221 */
+  /* parser/parser.nit:15219 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15222 */
+  /* parser/parser.nit:15220 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15224 */
+  /* parser/parser.nit:15222 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGg, ID_parser___parser_nodes___TGg)) /*cast nullable TGg*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15224);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15222);
   }
-  /* parser/parser.nit:15225 */
+  /* parser/parser.nit:15223 */
   fra.me.REG[3] = NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15228 */
+  /* parser/parser.nit:15226 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15229 */
+  /* parser/parser.nit:15227 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15229);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15227);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41367,7 +41336,7 @@ void parser___ReduceAction349___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15234;
+  fra.me.line = 15232;
   fra.me.meth = LOCATE_parser___ReduceAction349___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -41379,33 +41348,33 @@ void parser___ReduceAction349___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:15236 */
+  /* parser/parser.nit:15234 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15237 */
+  /* parser/parser.nit:15235 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15238 */
+  /* parser/parser.nit:15236 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15240 */
+  /* parser/parser.nit:15238 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15240);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15238);
   }
-  /* parser/parser.nit:15242 */
+  /* parser/parser.nit:15240 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15242);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15240);
   }
-  /* parser/parser.nit:15243 */
+  /* parser/parser.nit:15241 */
   fra.me.REG[3] = NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:15247 */
+  /* parser/parser.nit:15245 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15248 */
+  /* parser/parser.nit:15246 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15248);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15246);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41420,7 +41389,7 @@ void parser___ReduceAction350___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15253;
+  fra.me.line = 15251;
   fra.me.meth = LOCATE_parser___ReduceAction350___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41431,25 +41400,25 @@ void parser___ReduceAction350___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:15255 */
+  /* parser/parser.nit:15253 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15256 */
+  /* parser/parser.nit:15254 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15258 */
+  /* parser/parser.nit:15256 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStarship, ID_parser___parser_nodes___TStarship)) /*cast nullable TStarship*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15258);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15256);
   }
-  /* parser/parser.nit:15259 */
+  /* parser/parser.nit:15257 */
   fra.me.REG[3] = NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15262 */
+  /* parser/parser.nit:15260 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15263 */
+  /* parser/parser.nit:15261 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15263);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15261);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41464,7 +41433,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 = 15268;
+  fra.me.line = 15266;
   fra.me.meth = LOCATE_parser___ReduceAction351___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -41476,33 +41445,33 @@ void parser___ReduceAction351___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:15270 */
+  /* parser/parser.nit:15268 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15271 */
+  /* parser/parser.nit:15269 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15272 */
+  /* parser/parser.nit:15270 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15274 */
+  /* parser/parser.nit:15272 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15274);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15272);
   }
-  /* parser/parser.nit:15276 */
+  /* parser/parser.nit:15274 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15276);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15274);
   }
-  /* parser/parser.nit:15277 */
+  /* parser/parser.nit:15275 */
   fra.me.REG[3] = NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:15281 */
+  /* parser/parser.nit:15279 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15282 */
+  /* parser/parser.nit:15280 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15282);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15280);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41517,7 +41486,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 = 15287;
+  fra.me.line = 15285;
   fra.me.meth = LOCATE_parser___ReduceAction352___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -41530,41 +41499,41 @@ void parser___ReduceAction352___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:15289 */
+  /* parser/parser.nit:15287 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15290 */
+  /* parser/parser.nit:15288 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15291 */
+  /* parser/parser.nit:15289 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15292 */
+  /* parser/parser.nit:15290 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15294 */
+  /* parser/parser.nit:15292 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15294);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15292);
   }
-  /* parser/parser.nit:15296 */
+  /* parser/parser.nit:15294 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15296);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15294);
   }
-  /* parser/parser.nit:15298 */
+  /* parser/parser.nit:15296 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15298);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15296);
   }
-  /* parser/parser.nit:15299 */
+  /* parser/parser.nit:15297 */
   fra.me.REG[3] = NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:15304 */
+  /* parser/parser.nit:15302 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15305 */
+  /* parser/parser.nit:15303 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15305);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15303);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41579,7 +41548,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 = 15310;
+  fra.me.line = 15308;
   fra.me.meth = LOCATE_parser___ReduceAction353___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -41594,49 +41563,49 @@ void parser___ReduceAction353___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:15312 */
+  /* parser/parser.nit:15310 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15313 */
+  /* parser/parser.nit:15311 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15314 */
+  /* parser/parser.nit:15312 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15315 */
+  /* parser/parser.nit:15313 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15316 */
+  /* parser/parser.nit:15314 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15317 */
+  /* parser/parser.nit:15315 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15318 */
+  /* parser/parser.nit:15316 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15319 */
+  /* parser/parser.nit:15317 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15321 */
+  /* parser/parser.nit:15319 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15321);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15319);
   }
-  /* parser/parser.nit:15323 */
+  /* parser/parser.nit:15321 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15323);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15321);
   }
-  /* parser/parser.nit:15325 */
+  /* parser/parser.nit:15323 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15325);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15323);
   }
-  /* parser/parser.nit:15326 */
+  /* parser/parser.nit:15324 */
   fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7]);
-  /* parser/parser.nit:15333 */
+  /* parser/parser.nit:15331 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15334 */
+  /* parser/parser.nit:15332 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15334);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15332);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41651,7 +41620,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 = 15339;
+  fra.me.line = 15337;
   fra.me.meth = LOCATE_parser___ReduceAction354___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -41667,60 +41636,60 @@ void parser___ReduceAction354___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:15341 */
+  /* parser/parser.nit:15339 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15342 */
+  /* parser/parser.nit:15340 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15343 */
+  /* parser/parser.nit:15341 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15344 */
+  /* parser/parser.nit:15342 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15345 */
+  /* parser/parser.nit:15343 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15346 */
+  /* parser/parser.nit:15344 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15347 */
+  /* parser/parser.nit:15345 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15348 */
+  /* parser/parser.nit:15346 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15349 */
+  /* parser/parser.nit:15347 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15351 */
+  /* parser/parser.nit:15349 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15351);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15349);
   }
-  /* parser/parser.nit:15353 */
+  /* parser/parser.nit:15351 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15353);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15351);
   }
-  /* parser/parser.nit:15354 */
+  /* parser/parser.nit:15352 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:15356 */
+  /* parser/parser.nit:15354 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15356);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15354);
   }
-  /* parser/parser.nit:15358 */
+  /* parser/parser.nit:15356 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15358);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15356);
   }
-  /* parser/parser.nit:15359 */
+  /* parser/parser.nit:15357 */
   fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8]);
-  /* parser/parser.nit:15366 */
+  /* parser/parser.nit:15364 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15367 */
+  /* parser/parser.nit:15365 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15367);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15365);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41735,7 +41704,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 = 15372;
+  fra.me.line = 15370;
   fra.me.meth = LOCATE_parser___ReduceAction355___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -41751,60 +41720,60 @@ void parser___ReduceAction355___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:15374 */
+  /* parser/parser.nit:15372 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15375 */
+  /* parser/parser.nit:15373 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15376 */
+  /* parser/parser.nit:15374 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15377 */
+  /* parser/parser.nit:15375 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15378 */
+  /* parser/parser.nit:15376 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15379 */
+  /* parser/parser.nit:15377 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15380 */
+  /* parser/parser.nit:15378 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15381 */
+  /* parser/parser.nit:15379 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15382 */
+  /* parser/parser.nit:15380 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15384 */
+  /* parser/parser.nit:15382 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15384);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15382);
   }
-  /* parser/parser.nit:15386 */
+  /* parser/parser.nit:15384 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15386);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15384);
   }
-  /* parser/parser.nit:15388 */
+  /* parser/parser.nit:15386 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15388);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15386);
   }
-  /* parser/parser.nit:15390 */
+  /* parser/parser.nit:15388 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15390);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15388);
   }
-  /* parser/parser.nit:15391 */
+  /* parser/parser.nit:15389 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:15392 */
+  /* parser/parser.nit:15390 */
   fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8]);
-  /* parser/parser.nit:15399 */
+  /* parser/parser.nit:15397 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15400 */
+  /* parser/parser.nit:15398 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15400);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15398);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41819,7 +41788,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 = 15405;
+  fra.me.line = 15403;
   fra.me.meth = LOCATE_parser___ReduceAction356___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -41836,71 +41805,71 @@ void parser___ReduceAction356___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:15407 */
+  /* parser/parser.nit:15405 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15408 */
+  /* parser/parser.nit:15406 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15409 */
+  /* parser/parser.nit:15407 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15410 */
+  /* parser/parser.nit:15408 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15411 */
+  /* parser/parser.nit:15409 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15412 */
+  /* parser/parser.nit:15410 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15413 */
+  /* parser/parser.nit:15411 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15414 */
+  /* parser/parser.nit:15412 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15415 */
+  /* parser/parser.nit:15413 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15416 */
+  /* parser/parser.nit:15414 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15418 */
+  /* parser/parser.nit:15416 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15418);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15416);
   }
-  /* parser/parser.nit:15420 */
+  /* parser/parser.nit:15418 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15420);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15418);
   }
-  /* parser/parser.nit:15421 */
+  /* parser/parser.nit:15419 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:15423 */
+  /* parser/parser.nit:15421 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15423);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15421);
   }
-  /* parser/parser.nit:15425 */
+  /* parser/parser.nit:15423 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15425);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15423);
   }
-  /* parser/parser.nit:15427 */
+  /* parser/parser.nit:15425 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15427);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15425);
   }
-  /* parser/parser.nit:15428 */
+  /* parser/parser.nit:15426 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
   fra.me.REG[9] = fra.me.REG[3];
-  /* parser/parser.nit:15429 */
+  /* parser/parser.nit:15427 */
   fra.me.REG[9] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9]);
-  /* parser/parser.nit:15436 */
+  /* parser/parser.nit:15434 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:15437 */
+  /* parser/parser.nit:15435 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15437);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15435);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41915,7 +41884,7 @@ void parser___ReduceAction357___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15442;
+  fra.me.line = 15440;
   fra.me.meth = LOCATE_parser___ReduceAction357___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -41929,41 +41898,41 @@ void parser___ReduceAction357___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:15444 */
+  /* parser/parser.nit:15442 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15445 */
+  /* parser/parser.nit:15443 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15446 */
+  /* parser/parser.nit:15444 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15447 */
+  /* parser/parser.nit:15445 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15448 */
+  /* parser/parser.nit:15446 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15449 */
+  /* parser/parser.nit:15447 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15450 */
+  /* parser/parser.nit:15448 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15452 */
+  /* parser/parser.nit:15450 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15452);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15450);
   }
-  /* parser/parser.nit:15454 */
+  /* parser/parser.nit:15452 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15454);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15452);
   }
-  /* parser/parser.nit:15455 */
+  /* parser/parser.nit:15453 */
   fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[6]);
-  /* parser/parser.nit:15462 */
+  /* parser/parser.nit:15460 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:15463 */
+  /* parser/parser.nit:15461 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15463);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15461);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -41978,7 +41947,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 = 15468;
+  fra.me.line = 15466;
   fra.me.meth = LOCATE_parser___ReduceAction358___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -41993,52 +41962,52 @@ void parser___ReduceAction358___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:15470 */
+  /* parser/parser.nit:15468 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15471 */
+  /* parser/parser.nit:15469 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15472 */
+  /* parser/parser.nit:15470 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15473 */
+  /* parser/parser.nit:15471 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15474 */
+  /* parser/parser.nit:15472 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15475 */
+  /* parser/parser.nit:15473 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15476 */
+  /* parser/parser.nit:15474 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15477 */
+  /* parser/parser.nit:15475 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15479 */
+  /* parser/parser.nit:15477 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15479);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15477);
   }
-  /* parser/parser.nit:15481 */
+  /* parser/parser.nit:15479 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15481);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15479);
   }
-  /* parser/parser.nit:15482 */
+  /* parser/parser.nit:15480 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:15484 */
+  /* parser/parser.nit:15482 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15484);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15482);
   }
-  /* parser/parser.nit:15485 */
+  /* parser/parser.nit:15483 */
   fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3], NIT_NULL, fra.me.REG[7]);
-  /* parser/parser.nit:15492 */
+  /* parser/parser.nit:15490 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15493 */
+  /* parser/parser.nit:15491 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15493);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15491);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42053,7 +42022,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 = 15498;
+  fra.me.line = 15496;
   fra.me.meth = LOCATE_parser___ReduceAction359___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -42068,52 +42037,52 @@ void parser___ReduceAction359___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:15500 */
+  /* parser/parser.nit:15498 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15501 */
+  /* parser/parser.nit:15499 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15502 */
+  /* parser/parser.nit:15500 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15503 */
+  /* parser/parser.nit:15501 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15504 */
+  /* parser/parser.nit:15502 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15505 */
+  /* parser/parser.nit:15503 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15506 */
+  /* parser/parser.nit:15504 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15507 */
+  /* parser/parser.nit:15505 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15509 */
+  /* parser/parser.nit:15507 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15509);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15507);
   }
-  /* parser/parser.nit:15511 */
+  /* parser/parser.nit:15509 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15511);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15509);
   }
-  /* parser/parser.nit:15513 */
+  /* parser/parser.nit:15511 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15513);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15511);
   }
-  /* parser/parser.nit:15514 */
+  /* parser/parser.nit:15512 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:15515 */
+  /* parser/parser.nit:15513 */
   fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], NIT_NULL, fra.me.REG[7]);
-  /* parser/parser.nit:15522 */
+  /* parser/parser.nit:15520 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15523 */
+  /* parser/parser.nit:15521 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15523);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15521);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42128,7 +42097,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 = 15528;
+  fra.me.line = 15526;
   fra.me.meth = LOCATE_parser___ReduceAction360___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -42144,63 +42113,63 @@ void parser___ReduceAction360___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:15530 */
+  /* parser/parser.nit:15528 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15531 */
+  /* parser/parser.nit:15529 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15532 */
+  /* parser/parser.nit:15530 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15533 */
+  /* parser/parser.nit:15531 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15534 */
+  /* parser/parser.nit:15532 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15535 */
+  /* parser/parser.nit:15533 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15536 */
+  /* parser/parser.nit:15534 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15537 */
+  /* parser/parser.nit:15535 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15538 */
+  /* parser/parser.nit:15536 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15540 */
+  /* parser/parser.nit:15538 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15540);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15538);
   }
-  /* parser/parser.nit:15542 */
+  /* parser/parser.nit:15540 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15542);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15540);
   }
-  /* parser/parser.nit:15543 */
+  /* parser/parser.nit:15541 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:15545 */
+  /* parser/parser.nit:15543 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15545);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15543);
   }
-  /* parser/parser.nit:15547 */
+  /* parser/parser.nit:15545 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15547);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15545);
   }
-  /* parser/parser.nit:15548 */
+  /* parser/parser.nit:15546 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* parser/parser.nit:15549 */
+  /* parser/parser.nit:15547 */
   fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], NIT_NULL, fra.me.REG[8]);
-  /* parser/parser.nit:15556 */
+  /* parser/parser.nit:15554 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15557 */
+  /* parser/parser.nit:15555 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15557);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15555);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42215,7 +42184,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 = 15562;
+  fra.me.line = 15560;
   fra.me.meth = LOCATE_parser___ReduceAction361___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -42228,31 +42197,31 @@ 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:15564 */
+  /* parser/parser.nit:15562 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15565 */
+  /* parser/parser.nit:15563 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15566 */
+  /* parser/parser.nit:15564 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15567 */
+  /* parser/parser.nit:15565 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15568 */
+  /* parser/parser.nit:15566 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15570 */
+  /* parser/parser.nit:15568 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15570);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15568);
   }
-  /* parser/parser.nit:15571 */
+  /* parser/parser.nit:15569 */
   fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser.nit:15578 */
+  /* parser/parser.nit:15576 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15579 */
+  /* parser/parser.nit:15577 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15579);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15577);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42267,7 +42236,7 @@ void parser___ReduceAction362___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15584;
+  fra.me.line = 15582;
   fra.me.meth = LOCATE_parser___ReduceAction362___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -42281,42 +42250,42 @@ void parser___ReduceAction362___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:15586 */
+  /* parser/parser.nit:15584 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15587 */
+  /* parser/parser.nit:15585 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15588 */
+  /* parser/parser.nit:15586 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15589 */
+  /* parser/parser.nit:15587 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15590 */
+  /* parser/parser.nit:15588 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15591 */
+  /* parser/parser.nit:15589 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15593 */
+  /* parser/parser.nit:15591 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15593);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15591);
   }
-  /* parser/parser.nit:15595 */
+  /* parser/parser.nit:15593 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15595);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15593);
   }
-  /* parser/parser.nit:15596 */
+  /* parser/parser.nit:15594 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:15597 */
+  /* parser/parser.nit:15595 */
   fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser.nit:15604 */
+  /* parser/parser.nit:15602 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:15605 */
+  /* parser/parser.nit:15603 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15605);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15603);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42331,7 +42300,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 = 15610;
+  fra.me.line = 15608;
   fra.me.meth = LOCATE_parser___ReduceAction363___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -42343,23 +42312,23 @@ void parser___ReduceAction363___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:15612 */
+  /* parser/parser.nit:15610 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15613 */
+  /* parser/parser.nit:15611 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15614 */
+  /* parser/parser.nit:15612 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15615 */
+  /* parser/parser.nit:15613 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15616 */
+  /* parser/parser.nit:15614 */
   fra.me.REG[4] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
-  /* parser/parser.nit:15623 */
+  /* parser/parser.nit:15621 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15624 */
+  /* parser/parser.nit:15622 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15624);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15622);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42374,7 +42343,7 @@ void parser___ReduceAction364___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15629;
+  fra.me.line = 15627;
   fra.me.meth = LOCATE_parser___ReduceAction364___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -42387,34 +42356,34 @@ void parser___ReduceAction364___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:15631 */
+  /* parser/parser.nit:15629 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15632 */
+  /* parser/parser.nit:15630 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15633 */
+  /* parser/parser.nit:15631 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15634 */
+  /* parser/parser.nit:15632 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15635 */
+  /* parser/parser.nit:15633 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15637 */
+  /* parser/parser.nit:15635 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15637);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15635);
   }
-  /* parser/parser.nit:15638 */
+  /* parser/parser.nit:15636 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:15639 */
+  /* parser/parser.nit:15637 */
   fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[5]);
-  /* parser/parser.nit:15646 */
+  /* parser/parser.nit:15644 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15647 */
+  /* parser/parser.nit:15645 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15647);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15645);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42429,7 +42398,7 @@ void parser___ReduceAction365___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15652;
+  fra.me.line = 15650;
   fra.me.meth = LOCATE_parser___ReduceAction365___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -42443,39 +42412,39 @@ void parser___ReduceAction365___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:15654 */
+  /* parser/parser.nit:15652 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15655 */
+  /* parser/parser.nit:15653 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15656 */
+  /* parser/parser.nit:15654 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15657 */
+  /* parser/parser.nit:15655 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15658 */
+  /* parser/parser.nit:15656 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15659 */
+  /* parser/parser.nit:15657 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15661 */
+  /* parser/parser.nit:15659 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15661);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15659);
   }
-  /* parser/parser.nit:15663 */
+  /* parser/parser.nit:15661 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15663);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15661);
   }
-  /* parser/parser.nit:15664 */
+  /* parser/parser.nit:15662 */
   fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[6]);
-  /* parser/parser.nit:15671 */
+  /* parser/parser.nit:15669 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:15672 */
+  /* parser/parser.nit:15670 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15672);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15670);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42490,7 +42459,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 = 15677;
+  fra.me.line = 15675;
   fra.me.meth = LOCATE_parser___ReduceAction366___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -42505,50 +42474,50 @@ void parser___ReduceAction366___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:15679 */
+  /* parser/parser.nit:15677 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15680 */
+  /* parser/parser.nit:15678 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15681 */
+  /* parser/parser.nit:15679 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15682 */
+  /* parser/parser.nit:15680 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15683 */
+  /* parser/parser.nit:15681 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15684 */
+  /* parser/parser.nit:15682 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15685 */
+  /* parser/parser.nit:15683 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15687 */
+  /* parser/parser.nit:15685 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15687);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15685);
   }
-  /* parser/parser.nit:15689 */
+  /* parser/parser.nit:15687 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15689);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15687);
   }
-  /* parser/parser.nit:15690 */
+  /* parser/parser.nit:15688 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:15692 */
+  /* parser/parser.nit:15690 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15692);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15690);
   }
-  /* parser/parser.nit:15693 */
+  /* parser/parser.nit:15691 */
   fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3], NIT_NULL, fra.me.REG[7]);
-  /* parser/parser.nit:15700 */
+  /* parser/parser.nit:15698 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15701 */
+  /* parser/parser.nit:15699 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15701);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15699);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42563,7 +42532,7 @@ void parser___ReduceAction367___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15706;
+  fra.me.line = 15704;
   fra.me.meth = LOCATE_parser___ReduceAction367___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -42578,47 +42547,47 @@ void parser___ReduceAction367___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:15708 */
+  /* parser/parser.nit:15706 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15709 */
+  /* parser/parser.nit:15707 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15710 */
+  /* parser/parser.nit:15708 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15711 */
+  /* parser/parser.nit:15709 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15712 */
+  /* parser/parser.nit:15710 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15713 */
+  /* parser/parser.nit:15711 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15714 */
+  /* parser/parser.nit:15712 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15716 */
+  /* parser/parser.nit:15714 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15716);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15714);
   }
-  /* parser/parser.nit:15718 */
+  /* parser/parser.nit:15716 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15718);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15716);
   }
-  /* parser/parser.nit:15720 */
+  /* parser/parser.nit:15718 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15720);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15718);
   }
-  /* parser/parser.nit:15721 */
+  /* parser/parser.nit:15719 */
   fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7]);
-  /* parser/parser.nit:15728 */
+  /* parser/parser.nit:15726 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15729 */
+  /* parser/parser.nit:15727 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15729);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15727);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42633,7 +42602,7 @@ void parser___ReduceAction368___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15734;
+  fra.me.line = 15732;
   fra.me.meth = LOCATE_parser___ReduceAction368___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -42649,58 +42618,58 @@ void parser___ReduceAction368___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:15736 */
+  /* parser/parser.nit:15734 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15737 */
+  /* parser/parser.nit:15735 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15738 */
+  /* parser/parser.nit:15736 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15739 */
+  /* parser/parser.nit:15737 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15740 */
+  /* parser/parser.nit:15738 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15741 */
+  /* parser/parser.nit:15739 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15742 */
+  /* parser/parser.nit:15740 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15743 */
+  /* parser/parser.nit:15741 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15745 */
+  /* parser/parser.nit:15743 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15745);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15743);
   }
-  /* parser/parser.nit:15747 */
+  /* parser/parser.nit:15745 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15747);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15745);
   }
-  /* parser/parser.nit:15748 */
+  /* parser/parser.nit:15746 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:15750 */
+  /* parser/parser.nit:15748 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15750);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15748);
   }
-  /* parser/parser.nit:15752 */
+  /* parser/parser.nit:15750 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15752);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15750);
   }
-  /* parser/parser.nit:15753 */
+  /* parser/parser.nit:15751 */
   fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8]);
-  /* parser/parser.nit:15760 */
+  /* parser/parser.nit:15758 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15761 */
+  /* parser/parser.nit:15759 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15761);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15759);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42715,7 +42684,7 @@ void parser___ReduceAction369___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15766;
+  fra.me.line = 15764;
   fra.me.meth = LOCATE_parser___ReduceAction369___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -42727,21 +42696,21 @@ void parser___ReduceAction369___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:15768 */
+  /* parser/parser.nit:15766 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15769 */
+  /* parser/parser.nit:15767 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15770 */
+  /* parser/parser.nit:15768 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15771 */
+  /* parser/parser.nit:15769 */
   fra.me.REG[4] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
-  /* parser/parser.nit:15778 */
+  /* parser/parser.nit:15776 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15779 */
+  /* parser/parser.nit:15777 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15779);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15777);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42756,7 +42725,7 @@ void parser___ReduceAction370___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 15784;
+  fra.me.line = 15782;
   fra.me.meth = LOCATE_parser___ReduceAction370___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -42769,29 +42738,29 @@ void parser___ReduceAction370___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:15786 */
+  /* parser/parser.nit:15784 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15787 */
+  /* parser/parser.nit:15785 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15788 */
+  /* parser/parser.nit:15786 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15789 */
+  /* parser/parser.nit:15787 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15791 */
+  /* parser/parser.nit:15789 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15791);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15789);
   }
-  /* parser/parser.nit:15792 */
+  /* parser/parser.nit:15790 */
   fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser.nit:15799 */
+  /* parser/parser.nit:15797 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15800 */
+  /* parser/parser.nit:15798 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15800);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15798);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42807,7 +42776,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 = 15805;
+  fra.me.line = 15803;
   fra.me.meth = LOCATE_parser___ReduceAction371___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -42819,15 +42788,15 @@ 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:15807 */
+  /* parser/parser.nit:15805 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15808 */
+  /* parser/parser.nit:15806 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15809 */
+  /* parser/parser.nit:15807 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15810 */
+  /* parser/parser.nit:15808 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15812 */
+  /* parser/parser.nit:15810 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -42842,16 +42811,16 @@ void parser___ReduceAction371___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:15813 */
+    /* parser/parser.nit:15811 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:15815 */
+  /* parser/parser.nit:15813 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15816 */
+  /* parser/parser.nit:15814 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15816);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15814);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42867,7 +42836,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 = 15821;
+  fra.me.line = 15819;
   fra.me.meth = LOCATE_parser___ReduceAction372___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -42880,23 +42849,23 @@ void parser___ReduceAction372___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:15823 */
+  /* parser/parser.nit:15821 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15824 */
+  /* parser/parser.nit:15822 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15825 */
+  /* parser/parser.nit:15823 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15826 */
+  /* parser/parser.nit:15824 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15827 */
+  /* parser/parser.nit:15825 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15830 */
+  /* parser/parser.nit:15828 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15830);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15828);
   }
-  /* parser/parser.nit:15831 */
+  /* parser/parser.nit:15829 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -42911,19 +42880,19 @@ void parser___ReduceAction372___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:15832 */
+    /* parser/parser.nit:15830 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:15834 */
+  /* parser/parser.nit:15832 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:15835 */
+  /* parser/parser.nit:15833 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15836 */
+  /* parser/parser.nit:15834 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15836);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15834);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42938,7 +42907,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 = 15841;
+  fra.me.line = 15839;
   fra.me.meth = LOCATE_parser___ReduceAction373___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -42950,21 +42919,21 @@ 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:15843 */
+  /* parser/parser.nit:15841 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15844 */
+  /* parser/parser.nit:15842 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15845 */
+  /* parser/parser.nit:15843 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15846 */
+  /* parser/parser.nit:15844 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15848 */
+  /* parser/parser.nit:15846 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15849 */
+  /* parser/parser.nit:15847 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15849);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15847);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -42979,7 +42948,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 = 15854;
+  fra.me.line = 15852;
   fra.me.meth = LOCATE_parser___ReduceAction374___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -42990,25 +42959,25 @@ void parser___ReduceAction374___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:15856 */
+  /* parser/parser.nit:15854 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15857 */
+  /* parser/parser.nit:15855 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15859 */
+  /* parser/parser.nit:15857 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15859);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15857);
   }
-  /* parser/parser.nit:15860 */
+  /* parser/parser.nit:15858 */
   fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:15866 */
+  /* parser/parser.nit:15864 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15867 */
+  /* parser/parser.nit:15865 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15867);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15865);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43023,7 +42992,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 = 15872;
+  fra.me.line = 15870;
   fra.me.meth = LOCATE_parser___ReduceAction375___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -43035,33 +43004,33 @@ void parser___ReduceAction375___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:15874 */
+  /* parser/parser.nit:15872 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15875 */
+  /* parser/parser.nit:15873 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15876 */
+  /* parser/parser.nit:15874 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15878 */
+  /* parser/parser.nit:15876 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15878);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15876);
   }
-  /* parser/parser.nit:15880 */
+  /* parser/parser.nit:15878 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15880);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15878);
   }
-  /* parser/parser.nit:15881 */
+  /* parser/parser.nit:15879 */
   fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:15887 */
+  /* parser/parser.nit:15885 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15888 */
+  /* parser/parser.nit:15886 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15888);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15886);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43076,7 +43045,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 = 15893;
+  fra.me.line = 15891;
   fra.me.meth = LOCATE_parser___ReduceAction376___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -43088,33 +43057,33 @@ 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:15895 */
+  /* parser/parser.nit:15893 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15896 */
+  /* parser/parser.nit:15894 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15897 */
+  /* parser/parser.nit:15895 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15899 */
+  /* parser/parser.nit:15897 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15899);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15897);
   }
-  /* parser/parser.nit:15901 */
+  /* parser/parser.nit:15899 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15901);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15899);
   }
-  /* parser/parser.nit:15902 */
+  /* parser/parser.nit:15900 */
   fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:15908 */
+  /* parser/parser.nit:15906 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15909 */
+  /* parser/parser.nit:15907 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15909);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15907);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43129,7 +43098,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 = 15914;
+  fra.me.line = 15912;
   fra.me.meth = LOCATE_parser___ReduceAction377___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -43142,41 +43111,41 @@ 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:15916 */
+  /* parser/parser.nit:15914 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15917 */
+  /* parser/parser.nit:15915 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15918 */
+  /* parser/parser.nit:15916 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15919 */
+  /* parser/parser.nit:15917 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15921 */
+  /* parser/parser.nit:15919 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15921);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15919);
   }
-  /* parser/parser.nit:15923 */
+  /* parser/parser.nit:15921 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15923);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15921);
   }
-  /* parser/parser.nit:15925 */
+  /* parser/parser.nit:15923 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15925);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15923);
   }
-  /* parser/parser.nit:15926 */
+  /* parser/parser.nit:15924 */
   fra.me.REG[4] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[4]);
-  /* parser/parser.nit:15932 */
+  /* parser/parser.nit:15930 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15933 */
+  /* parser/parser.nit:15931 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15933);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15931);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43191,7 +43160,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 = 15938;
+  fra.me.line = 15936;
   fra.me.meth = LOCATE_parser___ReduceAction378___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -43204,41 +43173,41 @@ void parser___ReduceAction378___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:15940 */
+  /* parser/parser.nit:15938 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15941 */
+  /* parser/parser.nit:15939 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15942 */
+  /* parser/parser.nit:15940 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15943 */
+  /* parser/parser.nit:15941 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15945 */
+  /* parser/parser.nit:15943 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15945);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15943);
   }
-  /* parser/parser.nit:15947 */
+  /* parser/parser.nit:15945 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15947);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15945);
   }
-  /* parser/parser.nit:15949 */
+  /* parser/parser.nit:15947 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast nullable TDotdotdot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15949);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15947);
   }
-  /* parser/parser.nit:15950 */
+  /* parser/parser.nit:15948 */
   fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:15956 */
+  /* parser/parser.nit:15954 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15957 */
+  /* parser/parser.nit:15955 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15957);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15955);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43253,7 +43222,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 = 15962;
+  fra.me.line = 15960;
   fra.me.meth = LOCATE_parser___ReduceAction379___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -43267,49 +43236,49 @@ void parser___ReduceAction379___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:15964 */
+  /* parser/parser.nit:15962 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15965 */
+  /* parser/parser.nit:15963 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15966 */
+  /* parser/parser.nit:15964 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15967 */
+  /* parser/parser.nit:15965 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15968 */
+  /* parser/parser.nit:15966 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15970 */
+  /* parser/parser.nit:15968 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15970);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15968);
   }
-  /* parser/parser.nit:15972 */
+  /* parser/parser.nit:15970 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15972);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15970);
   }
-  /* parser/parser.nit:15974 */
+  /* parser/parser.nit:15972 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast nullable TDotdotdot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15974);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15972);
   }
-  /* parser/parser.nit:15976 */
+  /* parser/parser.nit:15974 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15976);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15974);
   }
-  /* parser/parser.nit:15977 */
+  /* parser/parser.nit:15975 */
   fra.me.REG[5] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser.nit:15983 */
+  /* parser/parser.nit:15981 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15984 */
+  /* parser/parser.nit:15982 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15984);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15982);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43324,7 +43293,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 = 15989;
+  fra.me.line = 15987;
   fra.me.meth = LOCATE_parser___ReduceAction380___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -43336,28 +43305,28 @@ void parser___ReduceAction380___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:15991 */
+  /* parser/parser.nit:15989 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15992 */
+  /* parser/parser.nit:15990 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15993 */
+  /* parser/parser.nit:15991 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15995 */
+  /* parser/parser.nit:15993 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 15995);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15993);
   }
-  /* parser/parser.nit:15996 */
+  /* parser/parser.nit:15994 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:15997 */
+  /* parser/parser.nit:15995 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15998 */
+  /* parser/parser.nit:15996 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15998);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15996);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43372,7 +43341,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 = 16003;
+  fra.me.line = 16001;
   fra.me.meth = LOCATE_parser___ReduceAction381___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -43385,43 +43354,43 @@ void parser___ReduceAction381___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:16005 */
+  /* parser/parser.nit:16003 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16006 */
+  /* parser/parser.nit:16004 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16007 */
+  /* parser/parser.nit:16005 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16008 */
+  /* parser/parser.nit:16006 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16009 */
+  /* parser/parser.nit:16007 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16011 */
+  /* parser/parser.nit:16009 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16011);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16009);
   }
-  /* parser/parser.nit:16013 */
+  /* parser/parser.nit:16011 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16013);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16011);
   }
-  /* parser/parser.nit:16015 */
+  /* parser/parser.nit:16013 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16015);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16013);
   }
-  /* parser/parser.nit:16016 */
+  /* parser/parser.nit:16014 */
   fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:16023 */
+  /* parser/parser.nit:16021 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16024 */
+  /* parser/parser.nit:16022 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16024);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16022);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43436,7 +43405,7 @@ void parser___ReduceAction382___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16029;
+  fra.me.line = 16027;
   fra.me.meth = LOCATE_parser___ReduceAction382___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -43450,51 +43419,51 @@ void parser___ReduceAction382___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:16031 */
+  /* parser/parser.nit:16029 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16032 */
+  /* parser/parser.nit:16030 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16033 */
+  /* parser/parser.nit:16031 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16034 */
+  /* parser/parser.nit:16032 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16035 */
+  /* parser/parser.nit:16033 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16036 */
+  /* parser/parser.nit:16034 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16038 */
+  /* parser/parser.nit:16036 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16038);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16036);
   }
-  /* parser/parser.nit:16040 */
+  /* parser/parser.nit:16038 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16040);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16038);
   }
-  /* parser/parser.nit:16042 */
+  /* parser/parser.nit:16040 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16042);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16040);
   }
-  /* parser/parser.nit:16044 */
+  /* parser/parser.nit:16042 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16044);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16042);
   }
-  /* parser/parser.nit:16045 */
+  /* parser/parser.nit:16043 */
   fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:16052 */
+  /* parser/parser.nit:16050 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16053 */
+  /* parser/parser.nit:16051 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16053);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16051);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43509,7 +43478,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 = 16058;
+  fra.me.line = 16056;
   fra.me.meth = LOCATE_parser___ReduceAction383___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -43523,53 +43492,53 @@ void parser___ReduceAction383___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:16060 */
+  /* parser/parser.nit:16058 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16061 */
+  /* parser/parser.nit:16059 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16062 */
+  /* parser/parser.nit:16060 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16063 */
+  /* parser/parser.nit:16061 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16064 */
+  /* parser/parser.nit:16062 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16065 */
+  /* parser/parser.nit:16063 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16066 */
+  /* parser/parser.nit:16064 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16068 */
+  /* parser/parser.nit:16066 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16068);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16066);
   }
-  /* parser/parser.nit:16070 */
+  /* parser/parser.nit:16068 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16070);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16068);
   }
-  /* parser/parser.nit:16072 */
+  /* parser/parser.nit:16070 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16072);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16070);
   }
-  /* parser/parser.nit:16074 */
+  /* parser/parser.nit:16072 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16074);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16072);
   }
-  /* parser/parser.nit:16075 */
+  /* parser/parser.nit:16073 */
   fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16082 */
+  /* parser/parser.nit:16080 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16083 */
+  /* parser/parser.nit:16081 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16083);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16081);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43584,7 +43553,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 = 16088;
+  fra.me.line = 16086;
   fra.me.meth = LOCATE_parser___ReduceAction384___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -43599,61 +43568,61 @@ void parser___ReduceAction384___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:16090 */
+  /* parser/parser.nit:16088 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16091 */
+  /* parser/parser.nit:16089 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16092 */
+  /* parser/parser.nit:16090 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16093 */
+  /* parser/parser.nit:16091 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16094 */
+  /* parser/parser.nit:16092 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16095 */
+  /* parser/parser.nit:16093 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16096 */
+  /* parser/parser.nit:16094 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16097 */
+  /* parser/parser.nit:16095 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16099 */
+  /* parser/parser.nit:16097 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16099);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16097);
   }
-  /* parser/parser.nit:16101 */
+  /* parser/parser.nit:16099 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16101);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16099);
   }
-  /* parser/parser.nit:16103 */
+  /* parser/parser.nit:16101 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16101);
   }
-  /* parser/parser.nit:16105 */
+  /* parser/parser.nit:16103 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16105);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16103);
   }
-  /* parser/parser.nit:16107 */
+  /* parser/parser.nit:16105 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16107);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16105);
   }
-  /* parser/parser.nit:16108 */
+  /* parser/parser.nit:16106 */
   fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16115 */
+  /* parser/parser.nit:16113 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16116 */
+  /* parser/parser.nit:16114 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16116);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16114);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43668,7 +43637,7 @@ void parser___ReduceAction385___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16121;
+  fra.me.line = 16119;
   fra.me.meth = LOCATE_parser___ReduceAction385___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -43682,55 +43651,55 @@ void parser___ReduceAction385___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:16123 */
+  /* parser/parser.nit:16121 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16124 */
+  /* parser/parser.nit:16122 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16125 */
+  /* parser/parser.nit:16123 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16126 */
+  /* parser/parser.nit:16124 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16127 */
+  /* parser/parser.nit:16125 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16128 */
+  /* parser/parser.nit:16126 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16129 */
+  /* parser/parser.nit:16127 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16130 */
+  /* parser/parser.nit:16128 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16132 */
+  /* parser/parser.nit:16130 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16130);
   }
-  /* parser/parser.nit:16134 */
+  /* parser/parser.nit:16132 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16132);
   }
-  /* parser/parser.nit:16136 */
+  /* parser/parser.nit:16134 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16136);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16134);
   }
-  /* parser/parser.nit:16138 */
+  /* parser/parser.nit:16136 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16138);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16136);
   }
-  /* parser/parser.nit:16139 */
+  /* parser/parser.nit:16137 */
   fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16146 */
+  /* parser/parser.nit:16144 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16147 */
+  /* parser/parser.nit:16145 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16147);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16145);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43745,7 +43714,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 = 16152;
+  fra.me.line = 16150;
   fra.me.meth = LOCATE_parser___ReduceAction386___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -43760,63 +43729,63 @@ void parser___ReduceAction386___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:16154 */
+  /* parser/parser.nit:16152 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16155 */
+  /* parser/parser.nit:16153 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16156 */
+  /* parser/parser.nit:16154 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16157 */
+  /* parser/parser.nit:16155 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16158 */
+  /* parser/parser.nit:16156 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16159 */
+  /* parser/parser.nit:16157 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16160 */
+  /* parser/parser.nit:16158 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16161 */
+  /* parser/parser.nit:16159 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16162 */
+  /* parser/parser.nit:16160 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16164 */
+  /* parser/parser.nit:16162 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16164);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16162);
   }
-  /* parser/parser.nit:16166 */
+  /* parser/parser.nit:16164 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16166);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16164);
   }
-  /* parser/parser.nit:16168 */
+  /* parser/parser.nit:16166 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16168);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16166);
   }
-  /* parser/parser.nit:16170 */
+  /* parser/parser.nit:16168 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16170);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16168);
   }
-  /* parser/parser.nit:16172 */
+  /* parser/parser.nit:16170 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16172);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16170);
   }
-  /* parser/parser.nit:16173 */
+  /* parser/parser.nit:16171 */
   fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16180 */
+  /* parser/parser.nit:16178 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16181 */
+  /* parser/parser.nit:16179 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16181);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16179);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43831,7 +43800,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 = 16186;
+  fra.me.line = 16184;
   fra.me.meth = LOCATE_parser___ReduceAction387___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -43842,25 +43811,25 @@ 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:16188 */
+  /* parser/parser.nit:16186 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16189 */
+  /* parser/parser.nit:16187 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16191 */
+  /* parser/parser.nit:16189 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16191);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16189);
   }
-  /* parser/parser.nit:16192 */
+  /* parser/parser.nit:16190 */
   fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:16196 */
+  /* parser/parser.nit:16194 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16197 */
+  /* parser/parser.nit:16195 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16197);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16195);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43876,7 +43845,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 = 16202;
+  fra.me.line = 16200;
   fra.me.meth = LOCATE_parser___ReduceAction388___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -43889,29 +43858,29 @@ void parser___ReduceAction388___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:16204 */
+  /* parser/parser.nit:16202 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16205 */
+  /* parser/parser.nit:16203 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16206 */
+  /* parser/parser.nit:16204 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16207 */
+  /* parser/parser.nit:16205 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16208 */
+  /* parser/parser.nit:16206 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16210 */
+  /* parser/parser.nit:16208 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16210);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16208);
   }
-  /* parser/parser.nit:16212 */
+  /* parser/parser.nit:16210 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast nullable AExternCall*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16212);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16210);
   }
-  /* parser/parser.nit:16213 */
+  /* parser/parser.nit:16211 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -43926,18 +43895,18 @@ void parser___ReduceAction388___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16214 */
+    /* parser/parser.nit:16212 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:16216 */
+  /* parser/parser.nit:16214 */
   fra.me.REG[5] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[4], fra.me.REG[5]);
-  /* parser/parser.nit:16220 */
+  /* parser/parser.nit:16218 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16221 */
+  /* parser/parser.nit:16219 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16221);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16219);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -43953,7 +43922,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 = 16226;
+  fra.me.line = 16224;
   fra.me.meth = LOCATE_parser___ReduceAction389___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -43967,37 +43936,37 @@ void parser___ReduceAction389___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:16228 */
+  /* parser/parser.nit:16226 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16229 */
+  /* parser/parser.nit:16227 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16230 */
+  /* parser/parser.nit:16228 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16231 */
+  /* parser/parser.nit:16229 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16232 */
+  /* parser/parser.nit:16230 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16233 */
+  /* parser/parser.nit:16231 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16235 */
+  /* parser/parser.nit:16233 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16235);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16233);
   }
-  /* parser/parser.nit:16237 */
+  /* parser/parser.nit:16235 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast nullable AExternCall*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16237);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16235);
   }
-  /* parser/parser.nit:16239 */
+  /* parser/parser.nit:16237 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16239);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16237);
   }
-  /* parser/parser.nit:16240 */
+  /* parser/parser.nit:16238 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -44012,21 +43981,21 @@ void parser___ReduceAction389___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16241 */
+    /* parser/parser.nit:16239 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
   }
-  /* parser/parser.nit:16243 */
+  /* parser/parser.nit:16241 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:16244 */
+  /* parser/parser.nit:16242 */
   fra.me.REG[6] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:16248 */
+  /* parser/parser.nit:16246 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:16249 */
+  /* parser/parser.nit:16247 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16249);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16247);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44041,7 +44010,7 @@ void parser___ReduceAction390___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16254;
+  fra.me.line = 16252;
   fra.me.meth = LOCATE_parser___ReduceAction390___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -44053,21 +44022,21 @@ void parser___ReduceAction390___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:16256 */
+  /* parser/parser.nit:16254 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16257 */
+  /* parser/parser.nit:16255 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16258 */
+  /* parser/parser.nit:16256 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16259 */
+  /* parser/parser.nit:16257 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16261 */
+  /* parser/parser.nit:16259 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16262 */
+  /* parser/parser.nit:16260 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16262);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16260);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44082,7 +44051,7 @@ void parser___ReduceAction391___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16267;
+  fra.me.line = 16265;
   fra.me.meth = LOCATE_parser___ReduceAction391___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44093,17 +44062,17 @@ void parser___ReduceAction391___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:16269 */
+  /* parser/parser.nit:16267 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16270 */
+  /* parser/parser.nit:16268 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16272 */
+  /* parser/parser.nit:16270 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16273 */
+  /* parser/parser.nit:16271 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16273);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16271);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44118,7 +44087,7 @@ void parser___ReduceAction393___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16278;
+  fra.me.line = 16276;
   fra.me.meth = LOCATE_parser___ReduceAction393___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44129,25 +44098,25 @@ void parser___ReduceAction393___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:16280 */
+  /* parser/parser.nit:16278 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16281 */
+  /* parser/parser.nit:16279 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16283 */
+  /* parser/parser.nit:16281 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16283);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16281);
   }
-  /* parser/parser.nit:16284 */
+  /* parser/parser.nit:16282 */
   fra.me.REG[3] = NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[3]);
-  /* parser/parser.nit:16287 */
+  /* parser/parser.nit:16285 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16288 */
+  /* parser/parser.nit:16286 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16288);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16286);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44162,7 +44131,7 @@ void parser___ReduceAction394___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16293;
+  fra.me.line = 16291;
   fra.me.meth = LOCATE_parser___ReduceAction394___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44173,25 +44142,25 @@ void parser___ReduceAction394___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:16295 */
+  /* parser/parser.nit:16293 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16296 */
+  /* parser/parser.nit:16294 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16298 */
+  /* parser/parser.nit:16296 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16298);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16296);
   }
-  /* parser/parser.nit:16299 */
+  /* parser/parser.nit:16297 */
   fra.me.REG[3] = NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[3]);
-  /* parser/parser.nit:16302 */
+  /* parser/parser.nit:16300 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16303 */
+  /* parser/parser.nit:16301 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16303);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16301);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44206,7 +44175,7 @@ void parser___ReduceAction395___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16308;
+  fra.me.line = 16306;
   fra.me.meth = LOCATE_parser___ReduceAction395___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -44219,41 +44188,41 @@ void parser___ReduceAction395___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:16310 */
+  /* parser/parser.nit:16308 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16311 */
+  /* parser/parser.nit:16309 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16312 */
+  /* parser/parser.nit:16310 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16313 */
+  /* parser/parser.nit:16311 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16315 */
+  /* parser/parser.nit:16313 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16315);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16313);
   }
-  /* parser/parser.nit:16317 */
+  /* parser/parser.nit:16315 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16317);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16315);
   }
-  /* parser/parser.nit:16319 */
+  /* parser/parser.nit:16317 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16319);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16317);
   }
-  /* parser/parser.nit:16320 */
+  /* parser/parser.nit:16318 */
   fra.me.REG[3] = NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16325 */
+  /* parser/parser.nit:16323 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16326 */
+  /* parser/parser.nit:16324 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16326);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16324);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44268,7 +44237,7 @@ void parser___ReduceAction396___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16331;
+  fra.me.line = 16329;
   fra.me.meth = LOCATE_parser___ReduceAction396___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44279,25 +44248,25 @@ void parser___ReduceAction396___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:16333 */
+  /* parser/parser.nit:16331 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16334 */
+  /* parser/parser.nit:16332 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16336 */
+  /* parser/parser.nit:16334 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16336);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16334);
   }
-  /* parser/parser.nit:16337 */
+  /* parser/parser.nit:16335 */
   fra.me.REG[3] = NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[3]);
-  /* parser/parser.nit:16340 */
+  /* parser/parser.nit:16338 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16341 */
+  /* parser/parser.nit:16339 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16341);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16339);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44312,7 +44281,7 @@ void parser___ReduceAction397___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16346;
+  fra.me.line = 16344;
   fra.me.meth = LOCATE_parser___ReduceAction397___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -44325,51 +44294,51 @@ void parser___ReduceAction397___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:16348 */
+  /* parser/parser.nit:16346 */
   fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16347 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16348 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16349 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16350 */
-  fra.me.REG[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:16351 */
-  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:16352 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16353 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16354 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16355 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16356 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16358 */
+  /* parser/parser.nit:16356 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16358);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16356);
   }
-  /* parser/parser.nit:16360 */
+  /* parser/parser.nit:16358 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16360);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16358);
   }
-  /* parser/parser.nit:16362 */
+  /* parser/parser.nit:16360 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16362);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16360);
   }
-  /* parser/parser.nit:16363 */
+  /* parser/parser.nit:16361 */
   fra.me.REG[3] = NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16368 */
+  /* parser/parser.nit:16366 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16369 */
+  /* parser/parser.nit:16367 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16369);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16367);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44384,7 +44353,7 @@ void parser___ReduceAction398___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16374;
+  fra.me.line = 16372;
   fra.me.meth = LOCATE_parser___ReduceAction398___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -44397,43 +44366,43 @@ void parser___ReduceAction398___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:16376 */
+  /* parser/parser.nit:16374 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16377 */
+  /* parser/parser.nit:16375 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16378 */
+  /* parser/parser.nit:16376 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16379 */
+  /* parser/parser.nit:16377 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16380 */
+  /* parser/parser.nit:16378 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16382 */
+  /* parser/parser.nit:16380 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16382);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16380);
   }
-  /* parser/parser.nit:16384 */
+  /* parser/parser.nit:16382 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16384);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16382);
   }
-  /* parser/parser.nit:16386 */
+  /* parser/parser.nit:16384 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16386);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16384);
   }
-  /* parser/parser.nit:16387 */
+  /* parser/parser.nit:16385 */
   fra.me.REG[3] = NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16392 */
+  /* parser/parser.nit:16390 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16393 */
+  /* parser/parser.nit:16391 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16393);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16391);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44448,7 +44417,7 @@ void parser___ReduceAction399___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16398;
+  fra.me.line = 16396;
   fra.me.meth = LOCATE_parser___ReduceAction399___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -44462,53 +44431,53 @@ void parser___ReduceAction399___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:16400 */
+  /* parser/parser.nit:16398 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16401 */
+  /* parser/parser.nit:16399 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16402 */
+  /* parser/parser.nit:16400 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16403 */
+  /* parser/parser.nit:16401 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16404 */
+  /* parser/parser.nit:16402 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16405 */
+  /* parser/parser.nit:16403 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16406 */
+  /* parser/parser.nit:16404 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16408 */
+  /* parser/parser.nit:16406 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16408);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16406);
   }
-  /* parser/parser.nit:16410 */
+  /* parser/parser.nit:16408 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16410);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16408);
   }
-  /* parser/parser.nit:16412 */
+  /* parser/parser.nit:16410 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16412);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16410);
   }
-  /* parser/parser.nit:16414 */
+  /* parser/parser.nit:16412 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16414);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16412);
   }
-  /* parser/parser.nit:16415 */
+  /* parser/parser.nit:16413 */
   fra.me.REG[3] = NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16421 */
+  /* parser/parser.nit:16419 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16422 */
+  /* parser/parser.nit:16420 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16422);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16420);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44523,7 +44492,7 @@ void parser___ReduceAction400___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16427;
+  fra.me.line = 16425;
   fra.me.meth = LOCATE_parser___ReduceAction400___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -44535,33 +44504,33 @@ void parser___ReduceAction400___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:16429 */
+  /* parser/parser.nit:16427 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16430 */
+  /* parser/parser.nit:16428 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16431 */
+  /* parser/parser.nit:16429 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16433 */
+  /* parser/parser.nit:16431 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwin, ID_parser___parser_nodes___TKwin)) /*cast nullable TKwin*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16433);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16431);
   }
-  /* parser/parser.nit:16435 */
+  /* parser/parser.nit:16433 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16435);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16433);
   }
-  /* parser/parser.nit:16436 */
+  /* parser/parser.nit:16434 */
   fra.me.REG[3] = NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16440 */
+  /* parser/parser.nit:16438 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16441 */
+  /* parser/parser.nit:16439 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16441);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16439);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44576,7 +44545,7 @@ void parser___ReduceAction401___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16446;
+  fra.me.line = 16444;
   fra.me.meth = LOCATE_parser___ReduceAction401___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44587,25 +44556,25 @@ void parser___ReduceAction401___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:16448 */
+  /* parser/parser.nit:16446 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16449 */
+  /* parser/parser.nit:16447 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16451 */
+  /* parser/parser.nit:16449 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast nullable TExternCodeSegment*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16451);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16449);
   }
-  /* parser/parser.nit:16452 */
+  /* parser/parser.nit:16450 */
   fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:16456 */
+  /* parser/parser.nit:16454 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16457 */
+  /* parser/parser.nit:16455 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16457);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16455);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44620,7 +44589,7 @@ void parser___ReduceAction402___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16462;
+  fra.me.line = 16460;
   fra.me.meth = LOCATE_parser___ReduceAction402___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -44632,33 +44601,33 @@ void parser___ReduceAction402___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:16464 */
+  /* parser/parser.nit:16462 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16465 */
+  /* parser/parser.nit:16463 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16466 */
+  /* parser/parser.nit:16464 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16468 */
+  /* parser/parser.nit:16466 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AInLanguage, ID_parser___parser_nodes___AInLanguage)) /*cast nullable AInLanguage*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16468);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16466);
   }
-  /* parser/parser.nit:16470 */
+  /* parser/parser.nit:16468 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast nullable TExternCodeSegment*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16470);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16468);
   }
-  /* parser/parser.nit:16471 */
+  /* parser/parser.nit:16469 */
   fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16475 */
+  /* parser/parser.nit:16473 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16476 */
+  /* parser/parser.nit:16474 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16476);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16474);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44673,7 +44642,7 @@ void parser___ReduceAction403___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16481;
+  fra.me.line = 16479;
   fra.me.meth = LOCATE_parser___ReduceAction403___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -44685,19 +44654,19 @@ void parser___ReduceAction403___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:16483 */
+  /* parser/parser.nit:16481 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16484 */
+  /* parser/parser.nit:16482 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16485 */
+  /* parser/parser.nit:16483 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16487 */
+  /* parser/parser.nit:16485 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16488 */
+  /* parser/parser.nit:16486 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16488);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16486);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44712,7 +44681,7 @@ void parser___ReduceAction404___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16493;
+  fra.me.line = 16491;
   fra.me.meth = LOCATE_parser___ReduceAction404___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -44724,27 +44693,27 @@ void parser___ReduceAction404___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:16495 */
+  /* parser/parser.nit:16493 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16496 */
+  /* parser/parser.nit:16494 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16497 */
+  /* parser/parser.nit:16495 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16499 */
+  /* parser/parser.nit:16497 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16499);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16497);
   }
-  /* parser/parser.nit:16500 */
+  /* parser/parser.nit:16498 */
   fra.me.REG[4] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[3], fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:16506 */
+  /* parser/parser.nit:16504 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16507 */
+  /* parser/parser.nit:16505 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16507);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16505);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44759,7 +44728,7 @@ void parser___ReduceAction405___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16512;
+  fra.me.line = 16510;
   fra.me.meth = LOCATE_parser___ReduceAction405___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -44772,35 +44741,35 @@ void parser___ReduceAction405___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:16514 */
+  /* parser/parser.nit:16512 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16515 */
+  /* parser/parser.nit:16513 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16516 */
+  /* parser/parser.nit:16514 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16517 */
+  /* parser/parser.nit:16515 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16519 */
+  /* parser/parser.nit:16517 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16517);
   }
-  /* parser/parser.nit:16521 */
+  /* parser/parser.nit:16519 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16521);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16519);
   }
-  /* parser/parser.nit:16522 */
+  /* parser/parser.nit:16520 */
   fra.me.REG[5] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:16528 */
+  /* parser/parser.nit:16526 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16529 */
+  /* parser/parser.nit:16527 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16529);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16527);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44815,7 +44784,7 @@ void parser___ReduceAction406___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16534;
+  fra.me.line = 16532;
   fra.me.meth = LOCATE_parser___ReduceAction406___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -44828,35 +44797,35 @@ void parser___ReduceAction406___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:16536 */
+  /* parser/parser.nit:16534 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16537 */
+  /* parser/parser.nit:16535 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16538 */
+  /* parser/parser.nit:16536 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16539 */
+  /* parser/parser.nit:16537 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16541 */
+  /* parser/parser.nit:16539 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16541);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16539);
   }
-  /* parser/parser.nit:16543 */
+  /* parser/parser.nit:16541 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16543);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16541);
   }
-  /* parser/parser.nit:16544 */
+  /* parser/parser.nit:16542 */
   fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:16550 */
+  /* parser/parser.nit:16548 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16551 */
+  /* parser/parser.nit:16549 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16551);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16549);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44871,7 +44840,7 @@ void parser___ReduceAction407___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16556;
+  fra.me.line = 16554;
   fra.me.meth = LOCATE_parser___ReduceAction407___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -44885,43 +44854,43 @@ void parser___ReduceAction407___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:16558 */
+  /* parser/parser.nit:16556 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16559 */
+  /* parser/parser.nit:16557 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16560 */
+  /* parser/parser.nit:16558 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16561 */
+  /* parser/parser.nit:16559 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16562 */
+  /* parser/parser.nit:16560 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16564 */
+  /* parser/parser.nit:16562 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16564);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16562);
   }
-  /* parser/parser.nit:16566 */
+  /* parser/parser.nit:16564 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16566);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16564);
   }
-  /* parser/parser.nit:16568 */
+  /* parser/parser.nit:16566 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16568);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16566);
   }
-  /* parser/parser.nit:16569 */
+  /* parser/parser.nit:16567 */
   fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:16575 */
+  /* parser/parser.nit:16573 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16576 */
+  /* parser/parser.nit:16574 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16576);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16574);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -44936,7 +44905,7 @@ void parser___ReduceAction408___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16581;
+  fra.me.line = 16579;
   fra.me.meth = LOCATE_parser___ReduceAction408___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -44949,46 +44918,46 @@ void parser___ReduceAction408___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:16583 */
+  /* parser/parser.nit:16581 */
   fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16582 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16583 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16584 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16585 */
-  fra.me.REG[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:16586 */
-  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:16587 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16588 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16589 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16590 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16592 */
+  /* parser/parser.nit:16590 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16592);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16590);
   }
-  /* parser/parser.nit:16594 */
+  /* parser/parser.nit:16592 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16594);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16592);
   }
-  /* parser/parser.nit:16595 */
+  /* parser/parser.nit:16593 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:16596 */
+  /* parser/parser.nit:16594 */
   fra.me.REG[5] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:16602 */
+  /* parser/parser.nit:16600 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16603 */
+  /* parser/parser.nit:16601 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16603);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16601);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45003,7 +44972,7 @@ void parser___ReduceAction409___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16608;
+  fra.me.line = 16606;
   fra.me.meth = LOCATE_parser___ReduceAction409___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -45017,54 +44986,54 @@ void parser___ReduceAction409___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:16610 */
+  /* parser/parser.nit:16608 */
   fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16609 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16610 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16611 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16612 */
-  fra.me.REG[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:16613 */
-  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:16614 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16615 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16616 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16617 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16618 */
+  /* parser/parser.nit:16616 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16620 */
+  /* parser/parser.nit:16618 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16620);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16618);
   }
-  /* parser/parser.nit:16622 */
+  /* parser/parser.nit:16620 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16622);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16620);
   }
-  /* parser/parser.nit:16624 */
+  /* parser/parser.nit:16622 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16624);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16622);
   }
-  /* parser/parser.nit:16625 */
+  /* parser/parser.nit:16623 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:16626 */
+  /* parser/parser.nit:16624 */
   fra.me.REG[6] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:16632 */
+  /* parser/parser.nit:16630 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:16633 */
+  /* parser/parser.nit:16631 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16633);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16631);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45079,7 +45048,7 @@ void parser___ReduceAction410___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16638;
+  fra.me.line = 16636;
   fra.me.meth = LOCATE_parser___ReduceAction410___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -45093,54 +45062,54 @@ void parser___ReduceAction410___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:16640 */
+  /* parser/parser.nit:16638 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16641 */
+  /* parser/parser.nit:16639 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16640 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16641 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16642 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16643 */
-  fra.me.REG[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:16644 */
-  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:16645 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16646 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16647 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16648 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16650 */
+  /* parser/parser.nit:16648 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16650);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16648);
   }
-  /* parser/parser.nit:16652 */
+  /* parser/parser.nit:16650 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16652);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16650);
   }
-  /* parser/parser.nit:16653 */
+  /* parser/parser.nit:16651 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:16655 */
+  /* parser/parser.nit:16653 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16655);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16653);
   }
-  /* parser/parser.nit:16656 */
+  /* parser/parser.nit:16654 */
   fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:16662 */
+  /* parser/parser.nit:16660 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16663 */
+  /* parser/parser.nit:16661 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16663);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16661);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45155,7 +45124,7 @@ void parser___ReduceAction411___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16668;
+  fra.me.line = 16666;
   fra.me.meth = LOCATE_parser___ReduceAction411___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -45170,62 +45139,62 @@ void parser___ReduceAction411___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:16670 */
+  /* parser/parser.nit:16668 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16671 */
+  /* parser/parser.nit:16669 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16670 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16671 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16672 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16673 */
-  fra.me.REG[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:16674 */
-  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:16675 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:16676 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16677 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16678 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16679 */
+  /* parser/parser.nit:16677 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16681 */
+  /* parser/parser.nit:16679 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16681);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16679);
   }
-  /* parser/parser.nit:16683 */
+  /* parser/parser.nit:16681 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16683);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16681);
   }
-  /* parser/parser.nit:16685 */
+  /* parser/parser.nit:16683 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16685);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16683);
   }
-  /* parser/parser.nit:16686 */
+  /* parser/parser.nit:16684 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:16688 */
+  /* parser/parser.nit:16686 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16688);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16686);
   }
-  /* parser/parser.nit:16689 */
+  /* parser/parser.nit:16687 */
   fra.me.REG[3] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3]);
-  /* parser/parser.nit:16695 */
+  /* parser/parser.nit:16693 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16696 */
+  /* parser/parser.nit:16694 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16696);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16694);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45241,7 +45210,7 @@ void parser___ReduceAction412___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16701;
+  fra.me.line = 16699;
   fra.me.meth = LOCATE_parser___ReduceAction412___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45253,13 +45222,13 @@ void parser___ReduceAction412___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:16703 */
+  /* parser/parser.nit:16701 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16704 */
+  /* parser/parser.nit:16702 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16705 */
+  /* parser/parser.nit:16703 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16707 */
+  /* parser/parser.nit:16705 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45274,16 +45243,16 @@ void parser___ReduceAction412___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16708 */
+    /* parser/parser.nit:16706 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:16710 */
+  /* parser/parser.nit:16708 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16711 */
+  /* parser/parser.nit:16709 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16711);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16709);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45299,7 +45268,7 @@ void parser___ReduceAction413___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16716;
+  fra.me.line = 16714;
   fra.me.meth = LOCATE_parser___ReduceAction413___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -45312,21 +45281,21 @@ void parser___ReduceAction413___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:16718 */
+  /* parser/parser.nit:16716 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16719 */
+  /* parser/parser.nit:16717 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16720 */
+  /* parser/parser.nit:16718 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16721 */
+  /* parser/parser.nit:16719 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16724 */
+  /* parser/parser.nit:16722 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16724);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16722);
   }
-  /* parser/parser.nit:16725 */
+  /* parser/parser.nit:16723 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45341,19 +45310,19 @@ void parser___ReduceAction413___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16726 */
+    /* parser/parser.nit:16724 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:16728 */
+  /* parser/parser.nit:16726 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:16729 */
+  /* parser/parser.nit:16727 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16730 */
+  /* parser/parser.nit:16728 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16730);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16728);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45368,7 +45337,7 @@ void parser___ReduceAction414___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16735;
+  fra.me.line = 16733;
   fra.me.meth = LOCATE_parser___ReduceAction414___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45380,21 +45349,21 @@ void parser___ReduceAction414___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:16737 */
+  /* parser/parser.nit:16735 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16738 */
+  /* parser/parser.nit:16736 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16739 */
+  /* parser/parser.nit:16737 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16740 */
+  /* parser/parser.nit:16738 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16742 */
+  /* parser/parser.nit:16740 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16743 */
+  /* parser/parser.nit:16741 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16743);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16741);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45409,7 +45378,7 @@ void parser___ReduceAction416___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16748;
+  fra.me.line = 16746;
   fra.me.meth = LOCATE_parser___ReduceAction416___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45421,19 +45390,19 @@ void parser___ReduceAction416___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:16750 */
+  /* parser/parser.nit:16748 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16751 */
+  /* parser/parser.nit:16749 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16752 */
+  /* parser/parser.nit:16750 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16754 */
+  /* parser/parser.nit:16752 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16755 */
+  /* parser/parser.nit:16753 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16755);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16753);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45448,7 +45417,7 @@ void parser___ReduceAction417___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16760;
+  fra.me.line = 16758;
   fra.me.meth = LOCATE_parser___ReduceAction417___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45460,29 +45429,29 @@ void parser___ReduceAction417___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:16762 */
+  /* parser/parser.nit:16760 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16763 */
+  /* parser/parser.nit:16761 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16764 */
+  /* parser/parser.nit:16762 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16765 */
+  /* parser/parser.nit:16763 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16767 */
+  /* parser/parser.nit:16765 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16767);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16765);
   }
-  /* parser/parser.nit:16768 */
+  /* parser/parser.nit:16766 */
   fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16772 */
+  /* parser/parser.nit:16770 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16773 */
+  /* parser/parser.nit:16771 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16773);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16771);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45497,7 +45466,7 @@ void parser___ReduceAction418___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16778;
+  fra.me.line = 16776;
   fra.me.meth = LOCATE_parser___ReduceAction418___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45509,27 +45478,27 @@ void parser___ReduceAction418___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:16780 */
+  /* parser/parser.nit:16778 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16781 */
+  /* parser/parser.nit:16779 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16782 */
+  /* parser/parser.nit:16780 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16784 */
+  /* parser/parser.nit:16782 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16784);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16782);
   }
-  /* parser/parser.nit:16785 */
+  /* parser/parser.nit:16783 */
   fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16789 */
+  /* parser/parser.nit:16787 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16790 */
+  /* parser/parser.nit:16788 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16790);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16788);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45544,7 +45513,7 @@ void parser___ReduceAction419___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16795;
+  fra.me.line = 16793;
   fra.me.meth = LOCATE_parser___ReduceAction419___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -45555,17 +45524,17 @@ void parser___ReduceAction419___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:16797 */
+  /* parser/parser.nit:16795 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16798 */
+  /* parser/parser.nit:16796 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16800 */
+  /* parser/parser.nit:16798 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16801 */
+  /* parser/parser.nit:16799 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16801);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16799);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45581,7 +45550,7 @@ void parser___ReduceAction420___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16806;
+  fra.me.line = 16804;
   fra.me.meth = LOCATE_parser___ReduceAction420___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45593,19 +45562,19 @@ void parser___ReduceAction420___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:16808 */
+  /* parser/parser.nit:16806 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16809 */
+  /* parser/parser.nit:16807 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16810 */
+  /* parser/parser.nit:16808 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16812 */
+  /* parser/parser.nit:16810 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16810);
   }
-  /* parser/parser.nit:16813 */
+  /* parser/parser.nit:16811 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45620,18 +45589,18 @@ void parser___ReduceAction420___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16814 */
+    /* parser/parser.nit:16812 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:16816 */
+  /* parser/parser.nit:16814 */
   fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:16820 */
+  /* parser/parser.nit:16818 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16821 */
+  /* parser/parser.nit:16819 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16821);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16819);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45647,7 +45616,7 @@ void parser___ReduceAction421___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16826;
+  fra.me.line = 16824;
   fra.me.meth = LOCATE_parser___ReduceAction421___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -45660,27 +45629,27 @@ void parser___ReduceAction421___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:16828 */
+  /* parser/parser.nit:16826 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16829 */
+  /* parser/parser.nit:16827 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16830 */
+  /* parser/parser.nit:16828 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16831 */
+  /* parser/parser.nit:16829 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16833 */
+  /* parser/parser.nit:16831 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16833);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16831);
   }
-  /* parser/parser.nit:16835 */
+  /* parser/parser.nit:16833 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16835);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16833);
   }
-  /* parser/parser.nit:16836 */
+  /* parser/parser.nit:16834 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45695,21 +45664,21 @@ void parser___ReduceAction421___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16837 */
+    /* parser/parser.nit:16835 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:16839 */
+  /* parser/parser.nit:16837 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:16840 */
+  /* parser/parser.nit:16838 */
   fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:16844 */
+  /* parser/parser.nit:16842 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16845 */
+  /* parser/parser.nit:16843 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16845);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16843);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45725,7 +45694,7 @@ void parser___ReduceAction422___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16850;
+  fra.me.line = 16848;
   fra.me.meth = LOCATE_parser___ReduceAction422___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -45737,21 +45706,21 @@ void parser___ReduceAction422___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:16852 */
+  /* parser/parser.nit:16850 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16853 */
+  /* parser/parser.nit:16851 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16854 */
+  /* parser/parser.nit:16852 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16855 */
+  /* parser/parser.nit:16853 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16857 */
+  /* parser/parser.nit:16855 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16857);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16855);
   }
-  /* parser/parser.nit:16858 */
+  /* parser/parser.nit:16856 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45766,18 +45735,18 @@ void parser___ReduceAction422___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16859 */
+    /* parser/parser.nit:16857 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:16861 */
+  /* parser/parser.nit:16859 */
   fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:16865 */
+  /* parser/parser.nit:16863 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16866 */
+  /* parser/parser.nit:16864 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16866);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16864);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45793,7 +45762,7 @@ void parser___ReduceAction423___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16871;
+  fra.me.line = 16869;
   fra.me.meth = LOCATE_parser___ReduceAction423___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -45806,29 +45775,29 @@ void parser___ReduceAction423___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:16873 */
+  /* parser/parser.nit:16871 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16874 */
+  /* parser/parser.nit:16872 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16875 */
+  /* parser/parser.nit:16873 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16876 */
+  /* parser/parser.nit:16874 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16877 */
+  /* parser/parser.nit:16875 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16879 */
+  /* parser/parser.nit:16877 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16879);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16877);
   }
-  /* parser/parser.nit:16881 */
+  /* parser/parser.nit:16879 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16881);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16879);
   }
-  /* parser/parser.nit:16882 */
+  /* parser/parser.nit:16880 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45843,21 +45812,21 @@ void parser___ReduceAction423___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16883 */
+    /* parser/parser.nit:16881 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:16885 */
+  /* parser/parser.nit:16883 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:16886 */
+  /* parser/parser.nit:16884 */
   fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:16890 */
+  /* parser/parser.nit:16888 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16891 */
+  /* parser/parser.nit:16889 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16891);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16889);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45873,7 +45842,7 @@ void parser___ReduceAction424___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16896;
+  fra.me.line = 16894;
   fra.me.meth = LOCATE_parser___ReduceAction424___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -45886,23 +45855,23 @@ void parser___ReduceAction424___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:16898 */
+  /* parser/parser.nit:16896 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16899 */
+  /* parser/parser.nit:16897 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16900 */
+  /* parser/parser.nit:16898 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16901 */
+  /* parser/parser.nit:16899 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16902 */
+  /* parser/parser.nit:16900 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16904 */
+  /* parser/parser.nit:16902 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16904);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16902);
   }
-  /* parser/parser.nit:16905 */
+  /* parser/parser.nit:16903 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45917,24 +45886,24 @@ void parser___ReduceAction424___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16906 */
+    /* parser/parser.nit:16904 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:16909 */
+  /* parser/parser.nit:16907 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16909);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16907);
   }
-  /* parser/parser.nit:16910 */
+  /* parser/parser.nit:16908 */
   fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:16914 */
+  /* parser/parser.nit:16912 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16915 */
+  /* parser/parser.nit:16913 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16915);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16913);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -45950,7 +45919,7 @@ void parser___ReduceAction425___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16920;
+  fra.me.line = 16918;
   fra.me.meth = LOCATE_parser___ReduceAction425___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -45964,31 +45933,31 @@ void parser___ReduceAction425___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:16922 */
+  /* parser/parser.nit:16920 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16923 */
+  /* parser/parser.nit:16921 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16924 */
+  /* parser/parser.nit:16922 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16925 */
+  /* parser/parser.nit:16923 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16926 */
+  /* parser/parser.nit:16924 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16927 */
+  /* parser/parser.nit:16925 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16929 */
+  /* parser/parser.nit:16927 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16929);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16927);
   }
-  /* parser/parser.nit:16931 */
+  /* parser/parser.nit:16929 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16931);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16929);
   }
-  /* parser/parser.nit:16932 */
+  /* parser/parser.nit:16930 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -46003,27 +45972,27 @@ void parser___ReduceAction425___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:16933 */
+    /* parser/parser.nit:16931 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   }
-  /* parser/parser.nit:16935 */
+  /* parser/parser.nit:16933 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:16937 */
+  /* parser/parser.nit:16935 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16937);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16935);
   }
-  /* parser/parser.nit:16938 */
+  /* parser/parser.nit:16936 */
   fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:16942 */
+  /* parser/parser.nit:16940 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16943 */
+  /* parser/parser.nit:16941 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16943);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16941);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46038,7 +46007,7 @@ void parser___ReduceAction429___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16948;
+  fra.me.line = 16946;
   fra.me.meth = LOCATE_parser___ReduceAction429___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46049,25 +46018,25 @@ void parser___ReduceAction429___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:16950 */
+  /* parser/parser.nit:16948 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16951 */
+  /* parser/parser.nit:16949 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16953 */
+  /* parser/parser.nit:16951 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast nullable TKwreturn*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16953);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16951);
   }
-  /* parser/parser.nit:16954 */
+  /* parser/parser.nit:16952 */
   fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:16958 */
+  /* parser/parser.nit:16956 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16959 */
+  /* parser/parser.nit:16957 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16959);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16957);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46082,7 +46051,7 @@ void parser___ReduceAction430___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16964;
+  fra.me.line = 16962;
   fra.me.meth = LOCATE_parser___ReduceAction430___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46094,33 +46063,33 @@ void parser___ReduceAction430___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:16966 */
+  /* parser/parser.nit:16964 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16967 */
+  /* parser/parser.nit:16965 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16968 */
+  /* parser/parser.nit:16966 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16970 */
+  /* parser/parser.nit:16968 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast nullable TKwreturn*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16970);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16968);
   }
-  /* parser/parser.nit:16972 */
+  /* parser/parser.nit:16970 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16972);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16970);
   }
-  /* parser/parser.nit:16973 */
+  /* parser/parser.nit:16971 */
   fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16977 */
+  /* parser/parser.nit:16975 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16978 */
+  /* parser/parser.nit:16976 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16978);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16976);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46135,7 +46104,7 @@ void parser___ReduceAction431___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 16983;
+  fra.me.line = 16981;
   fra.me.meth = LOCATE_parser___ReduceAction431___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46146,25 +46115,25 @@ void parser___ReduceAction431___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:16985 */
+  /* parser/parser.nit:16983 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16986 */
+  /* parser/parser.nit:16984 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16988 */
+  /* parser/parser.nit:16986 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 16988);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16986);
   }
-  /* parser/parser.nit:16989 */
+  /* parser/parser.nit:16987 */
   fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:16994 */
+  /* parser/parser.nit:16992 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16995 */
+  /* parser/parser.nit:16993 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16995);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16993);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46179,7 +46148,7 @@ void parser___ReduceAction432___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17000;
+  fra.me.line = 16998;
   fra.me.meth = LOCATE_parser___ReduceAction432___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46191,33 +46160,33 @@ void parser___ReduceAction432___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:17002 */
+  /* parser/parser.nit:17000 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17003 */
+  /* parser/parser.nit:17001 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17004 */
+  /* parser/parser.nit:17002 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17006 */
+  /* parser/parser.nit:17004 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17006);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17004);
   }
-  /* parser/parser.nit:17008 */
+  /* parser/parser.nit:17006 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17008);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17006);
   }
-  /* parser/parser.nit:17009 */
+  /* parser/parser.nit:17007 */
   fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17014 */
+  /* parser/parser.nit:17012 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17015 */
+  /* parser/parser.nit:17013 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17015);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17013);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46232,7 +46201,7 @@ void parser___ReduceAction433___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17020;
+  fra.me.line = 17018;
   fra.me.meth = LOCATE_parser___ReduceAction433___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46244,33 +46213,33 @@ void parser___ReduceAction433___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:17022 */
+  /* parser/parser.nit:17020 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17023 */
+  /* parser/parser.nit:17021 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17024 */
+  /* parser/parser.nit:17022 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17026 */
+  /* parser/parser.nit:17024 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17026);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17024);
   }
-  /* parser/parser.nit:17028 */
+  /* parser/parser.nit:17026 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17028);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17026);
   }
-  /* parser/parser.nit:17029 */
+  /* parser/parser.nit:17027 */
   fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:17034 */
+  /* parser/parser.nit:17032 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17035 */
+  /* parser/parser.nit:17033 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17035);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17033);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46285,7 +46254,7 @@ void parser___ReduceAction434___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17040;
+  fra.me.line = 17038;
   fra.me.meth = LOCATE_parser___ReduceAction434___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -46298,41 +46267,41 @@ void parser___ReduceAction434___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:17042 */
+  /* parser/parser.nit:17040 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17043 */
+  /* parser/parser.nit:17041 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17044 */
+  /* parser/parser.nit:17042 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17045 */
+  /* parser/parser.nit:17043 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17047 */
+  /* parser/parser.nit:17045 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17047);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17045);
   }
-  /* parser/parser.nit:17049 */
+  /* parser/parser.nit:17047 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17049);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17047);
   }
-  /* parser/parser.nit:17051 */
+  /* parser/parser.nit:17049 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17051);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17049);
   }
-  /* parser/parser.nit:17052 */
+  /* parser/parser.nit:17050 */
   fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17057 */
+  /* parser/parser.nit:17055 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17058 */
+  /* parser/parser.nit:17056 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17058);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17056);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46347,7 +46316,7 @@ void parser___ReduceAction435___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17063;
+  fra.me.line = 17061;
   fra.me.meth = LOCATE_parser___ReduceAction435___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46358,25 +46327,25 @@ void parser___ReduceAction435___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:17065 */
+  /* parser/parser.nit:17063 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17066 */
+  /* parser/parser.nit:17064 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17068 */
+  /* parser/parser.nit:17066 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwabort, ID_parser___parser_nodes___TKwabort)) /*cast nullable TKwabort*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17068);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17066);
   }
-  /* parser/parser.nit:17069 */
+  /* parser/parser.nit:17067 */
   fra.me.REG[3] = NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[3]);
-  /* parser/parser.nit:17072 */
+  /* parser/parser.nit:17070 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17073 */
+  /* parser/parser.nit:17071 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17073);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17071);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46391,7 +46360,7 @@ void parser___ReduceAction436___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17078;
+  fra.me.line = 17076;
   fra.me.meth = LOCATE_parser___ReduceAction436___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46402,25 +46371,25 @@ void parser___ReduceAction436___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:17080 */
+  /* parser/parser.nit:17078 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17081 */
+  /* parser/parser.nit:17079 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17083 */
+  /* parser/parser.nit:17081 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17083);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17081);
   }
-  /* parser/parser.nit:17084 */
+  /* parser/parser.nit:17082 */
   fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:17089 */
+  /* parser/parser.nit:17087 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17090 */
+  /* parser/parser.nit:17088 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17090);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17088);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46435,7 +46404,7 @@ void parser___ReduceAction437___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17095;
+  fra.me.line = 17093;
   fra.me.meth = LOCATE_parser___ReduceAction437___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46447,33 +46416,33 @@ void parser___ReduceAction437___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:17097 */
+  /* parser/parser.nit:17095 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17098 */
+  /* parser/parser.nit:17096 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17099 */
+  /* parser/parser.nit:17097 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17101 */
+  /* parser/parser.nit:17099 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17101);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17099);
   }
-  /* parser/parser.nit:17103 */
+  /* parser/parser.nit:17101 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17101);
   }
-  /* parser/parser.nit:17104 */
+  /* parser/parser.nit:17102 */
   fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17109 */
+  /* parser/parser.nit:17107 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17110 */
+  /* parser/parser.nit:17108 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17110);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17108);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46488,7 +46457,7 @@ void parser___ReduceAction438___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17115;
+  fra.me.line = 17113;
   fra.me.meth = LOCATE_parser___ReduceAction438___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46500,33 +46469,33 @@ void parser___ReduceAction438___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:17117 */
+  /* parser/parser.nit:17115 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17118 */
+  /* parser/parser.nit:17116 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17119 */
+  /* parser/parser.nit:17117 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17121 */
+  /* parser/parser.nit:17119 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17121);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17119);
   }
-  /* parser/parser.nit:17123 */
+  /* parser/parser.nit:17121 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17123);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17121);
   }
-  /* parser/parser.nit:17124 */
+  /* parser/parser.nit:17122 */
   fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:17129 */
+  /* parser/parser.nit:17127 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17130 */
+  /* parser/parser.nit:17128 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17130);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17128);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46541,7 +46510,7 @@ void parser___ReduceAction439___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17135;
+  fra.me.line = 17133;
   fra.me.meth = LOCATE_parser___ReduceAction439___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -46554,41 +46523,41 @@ void parser___ReduceAction439___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:17137 */
+  /* parser/parser.nit:17135 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17138 */
+  /* parser/parser.nit:17136 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17139 */
+  /* parser/parser.nit:17137 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17140 */
+  /* parser/parser.nit:17138 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17142 */
+  /* parser/parser.nit:17140 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17142);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17140);
   }
-  /* parser/parser.nit:17144 */
+  /* parser/parser.nit:17142 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17144);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17142);
   }
-  /* parser/parser.nit:17146 */
+  /* parser/parser.nit:17144 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17146);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17144);
   }
-  /* parser/parser.nit:17147 */
+  /* parser/parser.nit:17145 */
   fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17152 */
+  /* parser/parser.nit:17150 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17153 */
+  /* parser/parser.nit:17151 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17153);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17151);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46603,7 +46572,7 @@ void parser___ReduceAction446___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17158;
+  fra.me.line = 17156;
   fra.me.meth = LOCATE_parser___ReduceAction446___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -46617,47 +46586,47 @@ void parser___ReduceAction446___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:17160 */
+  /* parser/parser.nit:17158 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17161 */
+  /* parser/parser.nit:17159 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17162 */
+  /* parser/parser.nit:17160 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17163 */
+  /* parser/parser.nit:17161 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17164 */
+  /* parser/parser.nit:17162 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17165 */
+  /* parser/parser.nit:17163 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17166 */
+  /* parser/parser.nit:17164 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17168 */
+  /* parser/parser.nit:17166 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17168);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17166);
   }
-  /* parser/parser.nit:17170 */
+  /* parser/parser.nit:17168 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17170);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17168);
   }
-  /* parser/parser.nit:17172 */
+  /* parser/parser.nit:17170 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17172);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17170);
   }
-  /* parser/parser.nit:17173 */
+  /* parser/parser.nit:17171 */
   fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser.nit:17179 */
+  /* parser/parser.nit:17177 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:17180 */
+  /* parser/parser.nit:17178 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17180);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17178);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46672,7 +46641,7 @@ void parser___ReduceAction447___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17185;
+  fra.me.line = 17183;
   fra.me.meth = LOCATE_parser___ReduceAction447___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -46686,37 +46655,37 @@ void parser___ReduceAction447___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:17187 */
+  /* parser/parser.nit:17185 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17188 */
+  /* parser/parser.nit:17186 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17189 */
+  /* parser/parser.nit:17187 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17190 */
+  /* parser/parser.nit:17188 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17191 */
+  /* parser/parser.nit:17189 */
   fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:17193 */
+  /* parser/parser.nit:17191 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17193);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17191);
   }
-  /* parser/parser.nit:17195 */
+  /* parser/parser.nit:17193 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17195);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17193);
   }
-  /* parser/parser.nit:17196 */
+  /* parser/parser.nit:17194 */
   fra.me.REG[5] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser.nit:17202 */
+  /* parser/parser.nit:17200 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:17203 */
+  /* parser/parser.nit:17201 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17203);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17201);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46731,7 +46700,7 @@ void parser___ReduceAction448___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17208;
+  fra.me.line = 17206;
   fra.me.meth = LOCATE_parser___ReduceAction448___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -46746,58 +46715,58 @@ void parser___ReduceAction448___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:17210 */
+  /* parser/parser.nit:17208 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17211 */
+  /* parser/parser.nit:17209 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17212 */
+  /* parser/parser.nit:17210 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17213 */
+  /* parser/parser.nit:17211 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17214 */
+  /* parser/parser.nit:17212 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17215 */
+  /* parser/parser.nit:17213 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17216 */
+  /* parser/parser.nit:17214 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17217 */
+  /* parser/parser.nit:17215 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17219 */
+  /* parser/parser.nit:17217 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17219);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17217);
   }
-  /* parser/parser.nit:17221 */
+  /* parser/parser.nit:17219 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17221);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17219);
   }
-  /* parser/parser.nit:17223 */
+  /* parser/parser.nit:17221 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17223);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17221);
   }
-  /* parser/parser.nit:17225 */
+  /* parser/parser.nit:17223 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17225);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17223);
   }
-  /* parser/parser.nit:17226 */
+  /* parser/parser.nit:17224 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* parser/parser.nit:17227 */
+  /* parser/parser.nit:17225 */
   fra.me.REG[7] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[7]);
-  /* parser/parser.nit:17233 */
+  /* parser/parser.nit:17231 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:17234 */
+  /* parser/parser.nit:17232 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17234);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17232);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46812,7 +46781,7 @@ void parser___ReduceAction449___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17239;
+  fra.me.line = 17237;
   fra.me.meth = LOCATE_parser___ReduceAction449___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -46827,48 +46796,48 @@ void parser___ReduceAction449___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:17241 */
+  /* parser/parser.nit:17239 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17242 */
+  /* parser/parser.nit:17240 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17243 */
+  /* parser/parser.nit:17241 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17244 */
+  /* parser/parser.nit:17242 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17245 */
+  /* parser/parser.nit:17243 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17246 */
+  /* parser/parser.nit:17244 */
   fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:17248 */
+  /* parser/parser.nit:17246 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17248);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17246);
   }
-  /* parser/parser.nit:17250 */
+  /* parser/parser.nit:17248 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17250);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17248);
   }
-  /* parser/parser.nit:17252 */
+  /* parser/parser.nit:17250 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17252);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17250);
   }
-  /* parser/parser.nit:17253 */
+  /* parser/parser.nit:17251 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:17254 */
+  /* parser/parser.nit:17252 */
   fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser.nit:17260 */
+  /* parser/parser.nit:17258 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:17261 */
+  /* parser/parser.nit:17259 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17261);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17259);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46883,7 +46852,7 @@ void parser___ReduceAction450___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17266;
+  fra.me.line = 17264;
   fra.me.meth = LOCATE_parser___ReduceAction450___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46895,33 +46864,33 @@ void parser___ReduceAction450___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:17268 */
+  /* parser/parser.nit:17266 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17269 */
+  /* parser/parser.nit:17267 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17270 */
+  /* parser/parser.nit:17268 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17272 */
+  /* parser/parser.nit:17270 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17272);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17270);
   }
-  /* parser/parser.nit:17274 */
+  /* parser/parser.nit:17272 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17274);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17272);
   }
-  /* parser/parser.nit:17275 */
+  /* parser/parser.nit:17273 */
   fra.me.REG[3] = NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17280 */
+  /* parser/parser.nit:17278 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17281 */
+  /* parser/parser.nit:17279 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17281);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17279);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46936,7 +46905,7 @@ void parser___ReduceAction451___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17286;
+  fra.me.line = 17284;
   fra.me.meth = LOCATE_parser___ReduceAction451___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -46949,41 +46918,41 @@ void parser___ReduceAction451___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:17288 */
+  /* parser/parser.nit:17286 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17289 */
+  /* parser/parser.nit:17287 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17290 */
+  /* parser/parser.nit:17288 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17291 */
+  /* parser/parser.nit:17289 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17293 */
+  /* parser/parser.nit:17291 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AQualified, ID_parser___parser_nodes___AQualified)) /*cast nullable AQualified*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17293);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17291);
   }
-  /* parser/parser.nit:17295 */
+  /* parser/parser.nit:17293 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17295);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17293);
   }
-  /* parser/parser.nit:17297 */
+  /* parser/parser.nit:17295 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17297);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17295);
   }
-  /* parser/parser.nit:17298 */
+  /* parser/parser.nit:17296 */
   fra.me.REG[3] = NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17303 */
+  /* parser/parser.nit:17301 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17304 */
+  /* parser/parser.nit:17302 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17304);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17302);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -46998,7 +46967,7 @@ void parser___ReduceAction452___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17309;
+  fra.me.line = 17307;
   fra.me.meth = LOCATE_parser___ReduceAction452___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -47011,45 +46980,45 @@ void parser___ReduceAction452___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:17311 */
+  /* parser/parser.nit:17309 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17312 */
+  /* parser/parser.nit:17310 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17313 */
+  /* parser/parser.nit:17311 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17314 */
+  /* parser/parser.nit:17312 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17315 */
+  /* parser/parser.nit:17313 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17316 */
+  /* parser/parser.nit:17314 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17318 */
+  /* parser/parser.nit:17316 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17318);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17316);
   }
-  /* parser/parser.nit:17320 */
+  /* parser/parser.nit:17318 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17320);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17318);
   }
-  /* parser/parser.nit:17322 */
+  /* parser/parser.nit:17320 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17322);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17320);
   }
-  /* parser/parser.nit:17323 */
+  /* parser/parser.nit:17321 */
   fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17328 */
+  /* parser/parser.nit:17326 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17329 */
+  /* parser/parser.nit:17327 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17329);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17327);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47064,7 +47033,7 @@ void parser___ReduceAction453___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17334;
+  fra.me.line = 17332;
   fra.me.meth = LOCATE_parser___ReduceAction453___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -47077,35 +47046,35 @@ void parser___ReduceAction453___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:17336 */
+  /* parser/parser.nit:17334 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17337 */
+  /* parser/parser.nit:17335 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17338 */
+  /* parser/parser.nit:17336 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17339 */
+  /* parser/parser.nit:17337 */
   fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:17341 */
+  /* parser/parser.nit:17339 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17341);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17339);
   }
-  /* parser/parser.nit:17343 */
+  /* parser/parser.nit:17341 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17343);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17341);
   }
-  /* parser/parser.nit:17344 */
+  /* parser/parser.nit:17342 */
   fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17349 */
+  /* parser/parser.nit:17347 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17350 */
+  /* parser/parser.nit:17348 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17350);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17348);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47120,7 +47089,7 @@ void parser___ReduceAction454___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17355;
+  fra.me.line = 17353;
   fra.me.meth = LOCATE_parser___ReduceAction454___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -47134,51 +47103,51 @@ void parser___ReduceAction454___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:17357 */
+  /* parser/parser.nit:17355 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17358 */
+  /* parser/parser.nit:17356 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17359 */
+  /* parser/parser.nit:17357 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17360 */
+  /* parser/parser.nit:17358 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17361 */
+  /* parser/parser.nit:17359 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17362 */
+  /* parser/parser.nit:17360 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17364 */
+  /* parser/parser.nit:17362 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwdebug, ID_parser___parser_nodes___TKwdebug)) /*cast nullable TKwdebug*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17364);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17362);
   }
-  /* parser/parser.nit:17366 */
+  /* parser/parser.nit:17364 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17366);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17364);
   }
-  /* parser/parser.nit:17368 */
+  /* parser/parser.nit:17366 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17368);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17366);
   }
-  /* parser/parser.nit:17370 */
+  /* parser/parser.nit:17368 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17370);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17368);
   }
-  /* parser/parser.nit:17371 */
+  /* parser/parser.nit:17369 */
   fra.me.REG[4] = NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
-  /* parser/parser.nit:17377 */
+  /* parser/parser.nit:17375 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:17378 */
+  /* parser/parser.nit:17376 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17378);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17376);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47193,7 +47162,7 @@ void parser___ReduceAction455___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17383;
+  fra.me.line = 17381;
   fra.me.meth = LOCATE_parser___ReduceAction455___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -47205,33 +47174,33 @@ void parser___ReduceAction455___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:17385 */
+  /* parser/parser.nit:17383 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17386 */
+  /* parser/parser.nit:17384 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17387 */
+  /* parser/parser.nit:17385 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17389 */
+  /* parser/parser.nit:17387 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwlabel, ID_parser___parser_nodes___TKwlabel)) /*cast nullable TKwlabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17389);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17387);
   }
-  /* parser/parser.nit:17391 */
+  /* parser/parser.nit:17389 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17391);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17389);
   }
-  /* parser/parser.nit:17392 */
+  /* parser/parser.nit:17390 */
   fra.me.REG[3] = NEW_ALabel_parser___parser_prod___ALabel___init_alabel(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17396 */
+  /* parser/parser.nit:17394 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17397 */
+  /* parser/parser.nit:17395 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17397);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17395);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47247,7 +47216,7 @@ void parser___ReduceAction456___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17402;
+  fra.me.line = 17400;
   fra.me.meth = LOCATE_parser___ReduceAction456___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -47259,13 +47228,13 @@ void parser___ReduceAction456___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:17404 */
+  /* parser/parser.nit:17402 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17405 */
+  /* parser/parser.nit:17403 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17406 */
+  /* parser/parser.nit:17404 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17408 */
+  /* parser/parser.nit:17406 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -47280,16 +47249,16 @@ void parser___ReduceAction456___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:17409 */
+    /* parser/parser.nit:17407 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:17411 */
+  /* parser/parser.nit:17409 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:17412 */
+  /* parser/parser.nit:17410 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17412);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17410);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47305,7 +47274,7 @@ void parser___ReduceAction457___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17417;
+  fra.me.line = 17415;
   fra.me.meth = LOCATE_parser___ReduceAction457___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -47318,21 +47287,21 @@ void parser___ReduceAction457___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:17419 */
+  /* parser/parser.nit:17417 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17420 */
+  /* parser/parser.nit:17418 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17421 */
+  /* parser/parser.nit:17419 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17422 */
+  /* parser/parser.nit:17420 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17425 */
+  /* parser/parser.nit:17423 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17425);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17423);
   }
-  /* parser/parser.nit:17426 */
+  /* parser/parser.nit:17424 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -47347,19 +47316,19 @@ void parser___ReduceAction457___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:17427 */
+    /* parser/parser.nit:17425 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:17429 */
+  /* parser/parser.nit:17427 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:17430 */
+  /* parser/parser.nit:17428 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:17431 */
+  /* parser/parser.nit:17429 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17431);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17429);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47374,7 +47343,7 @@ void parser___ReduceAction458___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17436;
+  fra.me.line = 17434;
   fra.me.meth = LOCATE_parser___ReduceAction458___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -47390,59 +47359,59 @@ void parser___ReduceAction458___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:17438 */
+  /* parser/parser.nit:17436 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17439 */
+  /* parser/parser.nit:17437 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17440 */
+  /* parser/parser.nit:17438 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17441 */
+  /* parser/parser.nit:17439 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17442 */
+  /* parser/parser.nit:17440 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17443 */
+  /* parser/parser.nit:17441 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17444 */
+  /* parser/parser.nit:17442 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17446 */
+  /* parser/parser.nit:17444 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17446);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17444);
   }
-  /* parser/parser.nit:17448 */
+  /* parser/parser.nit:17446 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17448);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17446);
   }
-  /* parser/parser.nit:17450 */
+  /* parser/parser.nit:17448 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17450);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17448);
   }
-  /* parser/parser.nit:17452 */
+  /* parser/parser.nit:17450 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17452);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17450);
   }
-  /* parser/parser.nit:17454 */
+  /* parser/parser.nit:17452 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17454);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17452);
   }
-  /* parser/parser.nit:17455 */
+  /* parser/parser.nit:17453 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17463 */
+  /* parser/parser.nit:17461 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17464 */
+  /* parser/parser.nit:17462 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17464);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17462);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47457,7 +47426,7 @@ void parser___ReduceAction459___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17469;
+  fra.me.line = 17467;
   fra.me.meth = LOCATE_parser___ReduceAction459___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -47474,74 +47443,74 @@ void parser___ReduceAction459___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:17471 */
+  /* parser/parser.nit:17469 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17472 */
+  /* parser/parser.nit:17470 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17473 */
+  /* parser/parser.nit:17471 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17474 */
+  /* parser/parser.nit:17472 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17475 */
+  /* parser/parser.nit:17473 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17476 */
+  /* parser/parser.nit:17474 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17477 */
+  /* parser/parser.nit:17475 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17478 */
+  /* parser/parser.nit:17476 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17479 */
+  /* parser/parser.nit:17477 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17480 */
+  /* parser/parser.nit:17478 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17482 */
+  /* parser/parser.nit:17480 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17482);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17480);
   }
-  /* parser/parser.nit:17484 */
+  /* parser/parser.nit:17482 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17484);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17482);
   }
-  /* parser/parser.nit:17486 */
+  /* parser/parser.nit:17484 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17486);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17484);
   }
-  /* parser/parser.nit:17487 */
+  /* parser/parser.nit:17485 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
   fra.me.REG[9] = fra.me.REG[6];
-  /* parser/parser.nit:17489 */
+  /* parser/parser.nit:17487 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17487);
   }
-  /* parser/parser.nit:17491 */
+  /* parser/parser.nit:17489 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17491);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17489);
   }
-  /* parser/parser.nit:17493 */
+  /* parser/parser.nit:17491 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17493);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17491);
   }
-  /* parser/parser.nit:17494 */
+  /* parser/parser.nit:17492 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17502 */
+  /* parser/parser.nit:17500 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17503 */
+  /* parser/parser.nit:17501 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17503);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17501);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47556,7 +47525,7 @@ void parser___ReduceAction460___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17508;
+  fra.me.line = 17506;
   fra.me.meth = LOCATE_parser___ReduceAction460___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -47573,70 +47542,70 @@ void parser___ReduceAction460___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:17510 */
+  /* parser/parser.nit:17508 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17511 */
+  /* parser/parser.nit:17509 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17512 */
+  /* parser/parser.nit:17510 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17513 */
+  /* parser/parser.nit:17511 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17514 */
+  /* parser/parser.nit:17512 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17515 */
+  /* parser/parser.nit:17513 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17516 */
+  /* parser/parser.nit:17514 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17517 */
+  /* parser/parser.nit:17515 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17519 */
+  /* parser/parser.nit:17517 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17517);
   }
-  /* parser/parser.nit:17521 */
+  /* parser/parser.nit:17519 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17521);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17519);
   }
-  /* parser/parser.nit:17523 */
+  /* parser/parser.nit:17521 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17523);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17521);
   }
-  /* parser/parser.nit:17524 */
+  /* parser/parser.nit:17522 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
   fra.me.REG[9] = fra.me.REG[6];
-  /* parser/parser.nit:17526 */
+  /* parser/parser.nit:17524 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17526);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17524);
   }
-  /* parser/parser.nit:17528 */
+  /* parser/parser.nit:17526 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17528);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17526);
   }
-  /* parser/parser.nit:17530 */
+  /* parser/parser.nit:17528 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17530);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17528);
   }
-  /* parser/parser.nit:17531 */
+  /* parser/parser.nit:17529 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17539 */
+  /* parser/parser.nit:17537 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17540 */
+  /* parser/parser.nit:17538 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17540);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17538);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47651,7 +47620,7 @@ void parser___ReduceAction461___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17545;
+  fra.me.line = 17543;
   fra.me.meth = LOCATE_parser___ReduceAction461___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -47666,51 +47635,51 @@ void parser___ReduceAction461___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:17547 */
+  /* parser/parser.nit:17545 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17548 */
+  /* parser/parser.nit:17546 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17549 */
+  /* parser/parser.nit:17547 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17550 */
+  /* parser/parser.nit:17548 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17551 */
+  /* parser/parser.nit:17549 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17552 */
+  /* parser/parser.nit:17550 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17554 */
+  /* parser/parser.nit:17552 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17554);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17552);
   }
-  /* parser/parser.nit:17556 */
+  /* parser/parser.nit:17554 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17556);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17554);
   }
-  /* parser/parser.nit:17558 */
+  /* parser/parser.nit:17556 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17558);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17556);
   }
-  /* parser/parser.nit:17560 */
+  /* parser/parser.nit:17558 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17560);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17558);
   }
-  /* parser/parser.nit:17561 */
+  /* parser/parser.nit:17559 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17569 */
+  /* parser/parser.nit:17567 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17570 */
+  /* parser/parser.nit:17568 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17570);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17568);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47725,7 +47694,7 @@ void parser___ReduceAction462___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17575;
+  fra.me.line = 17573;
   fra.me.meth = LOCATE_parser___ReduceAction462___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -47741,66 +47710,66 @@ void parser___ReduceAction462___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:17577 */
+  /* parser/parser.nit:17575 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17578 */
+  /* parser/parser.nit:17576 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17579 */
+  /* parser/parser.nit:17577 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17580 */
+  /* parser/parser.nit:17578 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17581 */
+  /* parser/parser.nit:17579 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17582 */
+  /* parser/parser.nit:17580 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17583 */
+  /* parser/parser.nit:17581 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17584 */
+  /* parser/parser.nit:17582 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17585 */
+  /* parser/parser.nit:17583 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17587 */
+  /* parser/parser.nit:17585 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17587);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17585);
   }
-  /* parser/parser.nit:17589 */
+  /* parser/parser.nit:17587 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17589);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17587);
   }
-  /* parser/parser.nit:17591 */
+  /* parser/parser.nit:17589 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17591);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17589);
   }
-  /* parser/parser.nit:17592 */
+  /* parser/parser.nit:17590 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:17594 */
+  /* parser/parser.nit:17592 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17594);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17592);
   }
-  /* parser/parser.nit:17596 */
+  /* parser/parser.nit:17594 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17596);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17594);
   }
-  /* parser/parser.nit:17597 */
+  /* parser/parser.nit:17595 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17605 */
+  /* parser/parser.nit:17603 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17606 */
+  /* parser/parser.nit:17604 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17606);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17604);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47815,7 +47784,7 @@ void parser___ReduceAction463___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17611;
+  fra.me.line = 17609;
   fra.me.meth = LOCATE_parser___ReduceAction463___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -47831,62 +47800,62 @@ void parser___ReduceAction463___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:17613 */
+  /* parser/parser.nit:17611 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17614 */
+  /* parser/parser.nit:17612 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17615 */
+  /* parser/parser.nit:17613 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17616 */
+  /* parser/parser.nit:17614 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17617 */
+  /* parser/parser.nit:17615 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17618 */
+  /* parser/parser.nit:17616 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17619 */
+  /* parser/parser.nit:17617 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17621 */
+  /* parser/parser.nit:17619 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17621);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17619);
   }
-  /* parser/parser.nit:17623 */
+  /* parser/parser.nit:17621 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17623);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17621);
   }
-  /* parser/parser.nit:17625 */
+  /* parser/parser.nit:17623 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17625);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17623);
   }
-  /* parser/parser.nit:17626 */
+  /* parser/parser.nit:17624 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:17628 */
+  /* parser/parser.nit:17626 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17628);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17626);
   }
-  /* parser/parser.nit:17630 */
+  /* parser/parser.nit:17628 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17630);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17628);
   }
-  /* parser/parser.nit:17631 */
+  /* parser/parser.nit:17629 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17639 */
+  /* parser/parser.nit:17637 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17640 */
+  /* parser/parser.nit:17638 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17640);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17638);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47901,7 +47870,7 @@ void parser___ReduceAction464___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17645;
+  fra.me.line = 17643;
   fra.me.meth = LOCATE_parser___ReduceAction464___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -47915,47 +47884,47 @@ void parser___ReduceAction464___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:17647 */
+  /* parser/parser.nit:17645 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17648 */
+  /* parser/parser.nit:17646 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17649 */
+  /* parser/parser.nit:17647 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17650 */
+  /* parser/parser.nit:17648 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17651 */
+  /* parser/parser.nit:17649 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17652 */
+  /* parser/parser.nit:17650 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17653 */
+  /* parser/parser.nit:17651 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17655 */
+  /* parser/parser.nit:17653 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17655);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17653);
   }
-  /* parser/parser.nit:17657 */
+  /* parser/parser.nit:17655 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17657);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17655);
   }
-  /* parser/parser.nit:17659 */
+  /* parser/parser.nit:17657 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17659);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17657);
   }
-  /* parser/parser.nit:17660 */
+  /* parser/parser.nit:17658 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17668 */
+  /* parser/parser.nit:17666 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17669 */
+  /* parser/parser.nit:17667 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17669);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17667);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -47970,7 +47939,7 @@ void parser___ReduceAction465___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17674;
+  fra.me.line = 17672;
   fra.me.meth = LOCATE_parser___ReduceAction465___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -47985,62 +47954,62 @@ void parser___ReduceAction465___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:17676 */
+  /* parser/parser.nit:17674 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17677 */
+  /* parser/parser.nit:17675 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17676 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:17677 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:17678 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:17679 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:17680 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17681 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17682 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17683 */
+  /* parser/parser.nit:17681 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17684 */
+  /* parser/parser.nit:17682 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17685 */
+  /* parser/parser.nit:17683 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17687 */
+  /* parser/parser.nit:17685 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17687);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17685);
   }
-  /* parser/parser.nit:17689 */
+  /* parser/parser.nit:17687 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17689);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17687);
   }
-  /* parser/parser.nit:17691 */
+  /* parser/parser.nit:17689 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17691);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17689);
   }
-  /* parser/parser.nit:17692 */
+  /* parser/parser.nit:17690 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:17694 */
+  /* parser/parser.nit:17692 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17694);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17692);
   }
-  /* parser/parser.nit:17695 */
+  /* parser/parser.nit:17693 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17703 */
+  /* parser/parser.nit:17701 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17704 */
+  /* parser/parser.nit:17702 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17704);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17702);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48055,7 +48024,7 @@ void parser___ReduceAction466___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17709;
+  fra.me.line = 17707;
   fra.me.meth = LOCATE_parser___ReduceAction466___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -48070,58 +48039,58 @@ void parser___ReduceAction466___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:17711 */
+  /* parser/parser.nit:17709 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17712 */
+  /* parser/parser.nit:17710 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17713 */
+  /* parser/parser.nit:17711 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17714 */
+  /* parser/parser.nit:17712 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17715 */
+  /* parser/parser.nit:17713 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17716 */
+  /* parser/parser.nit:17714 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17717 */
+  /* parser/parser.nit:17715 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17718 */
+  /* parser/parser.nit:17716 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17720 */
+  /* parser/parser.nit:17718 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17720);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17718);
   }
-  /* parser/parser.nit:17722 */
+  /* parser/parser.nit:17720 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17722);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17720);
   }
-  /* parser/parser.nit:17724 */
+  /* parser/parser.nit:17722 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17724);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17722);
   }
-  /* parser/parser.nit:17725 */
+  /* parser/parser.nit:17723 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:17727 */
+  /* parser/parser.nit:17725 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17727);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17725);
   }
-  /* parser/parser.nit:17728 */
+  /* parser/parser.nit:17726 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17736 */
+  /* parser/parser.nit:17734 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17737 */
+  /* parser/parser.nit:17735 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17737);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17735);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48136,7 +48105,7 @@ void parser___ReduceAction467___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17742;
+  fra.me.line = 17740;
   fra.me.meth = LOCATE_parser___ReduceAction467___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -48151,53 +48120,53 @@ void parser___ReduceAction467___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:17744 */
+  /* parser/parser.nit:17742 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17745 */
+  /* parser/parser.nit:17743 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17746 */
+  /* parser/parser.nit:17744 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17747 */
+  /* parser/parser.nit:17745 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17748 */
+  /* parser/parser.nit:17746 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17749 */
+  /* parser/parser.nit:17747 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17750 */
+  /* parser/parser.nit:17748 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17752 */
+  /* parser/parser.nit:17750 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17752);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17750);
   }
-  /* parser/parser.nit:17754 */
+  /* parser/parser.nit:17752 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17754);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17752);
   }
-  /* parser/parser.nit:17756 */
+  /* parser/parser.nit:17754 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17756);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17754);
   }
-  /* parser/parser.nit:17758 */
+  /* parser/parser.nit:17756 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17758);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17756);
   }
-  /* parser/parser.nit:17759 */
+  /* parser/parser.nit:17757 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17767 */
+  /* parser/parser.nit:17765 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17768 */
+  /* parser/parser.nit:17766 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17768);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17766);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48212,7 +48181,7 @@ void parser___ReduceAction468___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17773;
+  fra.me.line = 17771;
   fra.me.meth = LOCATE_parser___ReduceAction468___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -48228,68 +48197,68 @@ void parser___ReduceAction468___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:17775 */
+  /* parser/parser.nit:17773 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17776 */
+  /* parser/parser.nit:17774 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17777 */
+  /* parser/parser.nit:17775 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17778 */
+  /* parser/parser.nit:17776 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17779 */
+  /* parser/parser.nit:17777 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17780 */
+  /* parser/parser.nit:17778 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17781 */
+  /* parser/parser.nit:17779 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17782 */
+  /* parser/parser.nit:17780 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17783 */
+  /* parser/parser.nit:17781 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17784 */
+  /* parser/parser.nit:17782 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17786 */
+  /* parser/parser.nit:17784 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17786);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17784);
   }
-  /* parser/parser.nit:17788 */
+  /* parser/parser.nit:17786 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17788);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17786);
   }
-  /* parser/parser.nit:17790 */
+  /* parser/parser.nit:17788 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17790);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17788);
   }
-  /* parser/parser.nit:17791 */
+  /* parser/parser.nit:17789 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:17793 */
+  /* parser/parser.nit:17791 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17793);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17791);
   }
-  /* parser/parser.nit:17795 */
+  /* parser/parser.nit:17793 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17795);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17793);
   }
-  /* parser/parser.nit:17796 */
+  /* parser/parser.nit:17794 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17804 */
+  /* parser/parser.nit:17802 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17805 */
+  /* parser/parser.nit:17803 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17805);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17803);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48304,7 +48273,7 @@ void parser___ReduceAction469___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17810;
+  fra.me.line = 17808;
   fra.me.meth = LOCATE_parser___ReduceAction469___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -48320,64 +48289,64 @@ void parser___ReduceAction469___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:17812 */
+  /* parser/parser.nit:17810 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17813 */
+  /* parser/parser.nit:17811 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17814 */
+  /* parser/parser.nit:17812 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17815 */
+  /* parser/parser.nit:17813 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17816 */
+  /* parser/parser.nit:17814 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17817 */
+  /* parser/parser.nit:17815 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17818 */
+  /* parser/parser.nit:17816 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17819 */
+  /* parser/parser.nit:17817 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17821 */
+  /* parser/parser.nit:17819 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17821);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17819);
   }
-  /* parser/parser.nit:17823 */
+  /* parser/parser.nit:17821 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17823);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17821);
   }
-  /* parser/parser.nit:17825 */
+  /* parser/parser.nit:17823 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17825);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17823);
   }
-  /* parser/parser.nit:17826 */
+  /* parser/parser.nit:17824 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:17828 */
+  /* parser/parser.nit:17826 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17828);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17826);
   }
-  /* parser/parser.nit:17830 */
+  /* parser/parser.nit:17828 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17830);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17828);
   }
-  /* parser/parser.nit:17831 */
+  /* parser/parser.nit:17829 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:17839 */
+  /* parser/parser.nit:17837 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17840 */
+  /* parser/parser.nit:17838 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17840);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17838);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48392,7 +48361,7 @@ void parser___ReduceAction470___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17845;
+  fra.me.line = 17843;
   fra.me.meth = LOCATE_parser___ReduceAction470___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -48406,45 +48375,45 @@ void parser___ReduceAction470___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:17847 */
+  /* parser/parser.nit:17845 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17848 */
+  /* parser/parser.nit:17846 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17849 */
+  /* parser/parser.nit:17847 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17850 */
+  /* parser/parser.nit:17848 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17851 */
+  /* parser/parser.nit:17849 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17852 */
+  /* parser/parser.nit:17850 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17854 */
+  /* parser/parser.nit:17852 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17854);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17852);
   }
-  /* parser/parser.nit:17856 */
+  /* parser/parser.nit:17854 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17856);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17854);
   }
-  /* parser/parser.nit:17858 */
+  /* parser/parser.nit:17856 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17858);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17856);
   }
-  /* parser/parser.nit:17859 */
+  /* parser/parser.nit:17857 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:17867 */
+  /* parser/parser.nit:17865 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17868 */
+  /* parser/parser.nit:17866 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17868);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17866);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48459,7 +48428,7 @@ void parser___ReduceAction471___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17873;
+  fra.me.line = 17871;
   fra.me.meth = LOCATE_parser___ReduceAction471___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -48474,60 +48443,60 @@ void parser___ReduceAction471___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:17875 */
+  /* parser/parser.nit:17873 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17876 */
+  /* parser/parser.nit:17874 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17877 */
+  /* parser/parser.nit:17875 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17878 */
+  /* parser/parser.nit:17876 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17879 */
+  /* parser/parser.nit:17877 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17880 */
+  /* parser/parser.nit:17878 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17881 */
+  /* parser/parser.nit:17879 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17882 */
+  /* parser/parser.nit:17880 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17883 */
+  /* parser/parser.nit:17881 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17885 */
+  /* parser/parser.nit:17883 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17885);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17883);
   }
-  /* parser/parser.nit:17887 */
+  /* parser/parser.nit:17885 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17887);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17885);
   }
-  /* parser/parser.nit:17889 */
+  /* parser/parser.nit:17887 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17889);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17887);
   }
-  /* parser/parser.nit:17890 */
+  /* parser/parser.nit:17888 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:17892 */
+  /* parser/parser.nit:17890 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17892);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17890);
   }
-  /* parser/parser.nit:17893 */
+  /* parser/parser.nit:17891 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:17901 */
+  /* parser/parser.nit:17899 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17902 */
+  /* parser/parser.nit:17900 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17902);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17900);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48542,7 +48511,7 @@ void parser___ReduceAction472___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17907;
+  fra.me.line = 17905;
   fra.me.meth = LOCATE_parser___ReduceAction472___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -48557,56 +48526,56 @@ void parser___ReduceAction472___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:17909 */
+  /* parser/parser.nit:17907 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17910 */
+  /* parser/parser.nit:17908 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17911 */
+  /* parser/parser.nit:17909 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17912 */
+  /* parser/parser.nit:17910 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17913 */
+  /* parser/parser.nit:17911 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17914 */
+  /* parser/parser.nit:17912 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17915 */
+  /* parser/parser.nit:17913 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17917 */
+  /* parser/parser.nit:17915 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17917);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17915);
   }
-  /* parser/parser.nit:17919 */
+  /* parser/parser.nit:17917 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17919);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17917);
   }
-  /* parser/parser.nit:17921 */
+  /* parser/parser.nit:17919 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17921);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17919);
   }
-  /* parser/parser.nit:17922 */
+  /* parser/parser.nit:17920 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:17924 */
+  /* parser/parser.nit:17922 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17924);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17922);
   }
-  /* parser/parser.nit:17925 */
+  /* parser/parser.nit:17923 */
   fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:17933 */
+  /* parser/parser.nit:17931 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17934 */
+  /* parser/parser.nit:17932 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17934);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17932);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48621,7 +48590,7 @@ void parser___ReduceAction473___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17939;
+  fra.me.line = 17937;
   fra.me.meth = LOCATE_parser___ReduceAction473___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48632,25 +48601,25 @@ void parser___ReduceAction473___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:17941 */
+  /* parser/parser.nit:17939 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17942 */
+  /* parser/parser.nit:17940 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17944 */
+  /* parser/parser.nit:17942 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17944);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17942);
   }
-  /* parser/parser.nit:17945 */
+  /* parser/parser.nit:17943 */
   fra.me.REG[3] = NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[3]);
-  /* parser/parser.nit:17948 */
+  /* parser/parser.nit:17946 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17949 */
+  /* parser/parser.nit:17947 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17949);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17947);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48665,7 +48634,7 @@ void parser___ReduceAction474___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17954;
+  fra.me.line = 17952;
   fra.me.meth = LOCATE_parser___ReduceAction474___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48676,25 +48645,25 @@ void parser___ReduceAction474___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:17956 */
+  /* parser/parser.nit:17954 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17957 */
+  /* parser/parser.nit:17955 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17959 */
+  /* parser/parser.nit:17957 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17959);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17957);
   }
-  /* parser/parser.nit:17960 */
+  /* parser/parser.nit:17958 */
   fra.me.REG[3] = NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[3]);
-  /* parser/parser.nit:17963 */
+  /* parser/parser.nit:17961 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17964 */
+  /* parser/parser.nit:17962 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17964);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17962);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48709,7 +48678,7 @@ void parser___ReduceAction475___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17969;
+  fra.me.line = 17967;
   fra.me.meth = LOCATE_parser___ReduceAction475___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48720,25 +48689,25 @@ void parser___ReduceAction475___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:17971 */
+  /* parser/parser.nit:17969 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17972 */
+  /* parser/parser.nit:17970 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17974 */
+  /* parser/parser.nit:17972 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17974);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17972);
   }
-  /* parser/parser.nit:17975 */
+  /* parser/parser.nit:17973 */
   fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:17980 */
+  /* parser/parser.nit:17978 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17981 */
+  /* parser/parser.nit:17979 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17981);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17979);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48753,7 +48722,7 @@ void parser___ReduceAction476___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 17986;
+  fra.me.line = 17984;
   fra.me.meth = LOCATE_parser___ReduceAction476___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -48765,33 +48734,33 @@ void parser___ReduceAction476___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:17988 */
+  /* parser/parser.nit:17986 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17989 */
+  /* parser/parser.nit:17987 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17990 */
+  /* parser/parser.nit:17988 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17992 */
+  /* parser/parser.nit:17990 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17992);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17990);
   }
-  /* parser/parser.nit:17994 */
+  /* parser/parser.nit:17992 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 17994);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 17992);
   }
-  /* parser/parser.nit:17995 */
+  /* parser/parser.nit:17993 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:18003 */
+  /* parser/parser.nit:18001 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18004 */
+  /* parser/parser.nit:18002 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18004);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18002);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48806,7 +48775,7 @@ void parser___ReduceAction477___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18009;
+  fra.me.line = 18007;
   fra.me.meth = LOCATE_parser___ReduceAction477___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -48819,41 +48788,41 @@ void parser___ReduceAction477___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:18011 */
+  /* parser/parser.nit:18009 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18012 */
+  /* parser/parser.nit:18010 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18013 */
+  /* parser/parser.nit:18011 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18014 */
+  /* parser/parser.nit:18012 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18016 */
+  /* parser/parser.nit:18014 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18016);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18014);
   }
-  /* parser/parser.nit:18018 */
+  /* parser/parser.nit:18016 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18018);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18016);
   }
-  /* parser/parser.nit:18020 */
+  /* parser/parser.nit:18018 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18020);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18018);
   }
-  /* parser/parser.nit:18021 */
+  /* parser/parser.nit:18019 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:18029 */
+  /* parser/parser.nit:18027 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18030 */
+  /* parser/parser.nit:18028 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18030);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18028);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48868,7 +48837,7 @@ void parser___ReduceAction478___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18035;
+  fra.me.line = 18033;
   fra.me.meth = LOCATE_parser___ReduceAction478___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -48881,41 +48850,41 @@ void parser___ReduceAction478___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:18037 */
+  /* parser/parser.nit:18035 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18038 */
+  /* parser/parser.nit:18036 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18039 */
+  /* parser/parser.nit:18037 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18040 */
+  /* parser/parser.nit:18038 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18042 */
+  /* parser/parser.nit:18040 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18042);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18040);
   }
-  /* parser/parser.nit:18044 */
+  /* parser/parser.nit:18042 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18044);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18042);
   }
-  /* parser/parser.nit:18046 */
+  /* parser/parser.nit:18044 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18046);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18044);
   }
-  /* parser/parser.nit:18047 */
+  /* parser/parser.nit:18045 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:18055 */
+  /* parser/parser.nit:18053 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18056 */
+  /* parser/parser.nit:18054 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18056);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18054);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -48930,7 +48899,7 @@ void parser___ReduceAction479___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18061;
+  fra.me.line = 18059;
   fra.me.meth = LOCATE_parser___ReduceAction479___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -48944,49 +48913,49 @@ void parser___ReduceAction479___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:18063 */
+  /* parser/parser.nit:18061 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18064 */
+  /* parser/parser.nit:18062 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18065 */
+  /* parser/parser.nit:18063 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18066 */
+  /* parser/parser.nit:18064 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18067 */
+  /* parser/parser.nit:18065 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18069 */
+  /* parser/parser.nit:18067 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18069);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18067);
   }
-  /* parser/parser.nit:18071 */
+  /* parser/parser.nit:18069 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18071);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18069);
   }
-  /* parser/parser.nit:18073 */
+  /* parser/parser.nit:18071 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18073);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18071);
   }
-  /* parser/parser.nit:18075 */
+  /* parser/parser.nit:18073 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18075);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18073);
   }
-  /* parser/parser.nit:18076 */
+  /* parser/parser.nit:18074 */
   fra.me.REG[4] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
-  /* parser/parser.nit:18084 */
+  /* parser/parser.nit:18082 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:18085 */
+  /* parser/parser.nit:18083 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18085);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18083);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49001,7 +48970,7 @@ void parser___ReduceAction480___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18090;
+  fra.me.line = 18088;
   fra.me.meth = LOCATE_parser___ReduceAction480___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -49015,51 +48984,51 @@ void parser___ReduceAction480___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:18092 */
+  /* parser/parser.nit:18090 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18093 */
+  /* parser/parser.nit:18091 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18094 */
+  /* parser/parser.nit:18092 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18095 */
+  /* parser/parser.nit:18093 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18096 */
+  /* parser/parser.nit:18094 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18097 */
+  /* parser/parser.nit:18095 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18099 */
+  /* parser/parser.nit:18097 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18099);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18097);
   }
-  /* parser/parser.nit:18101 */
+  /* parser/parser.nit:18099 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18101);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18099);
   }
-  /* parser/parser.nit:18103 */
+  /* parser/parser.nit:18101 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18101);
   }
-  /* parser/parser.nit:18105 */
+  /* parser/parser.nit:18103 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18105);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18103);
   }
-  /* parser/parser.nit:18106 */
+  /* parser/parser.nit:18104 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18114 */
+  /* parser/parser.nit:18112 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18115 */
+  /* parser/parser.nit:18113 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18115);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18113);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49074,7 +49043,7 @@ void parser___ReduceAction481___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18120;
+  fra.me.line = 18118;
   fra.me.meth = LOCATE_parser___ReduceAction481___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -49089,59 +49058,59 @@ void parser___ReduceAction481___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:18122 */
+  /* parser/parser.nit:18120 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18123 */
+  /* parser/parser.nit:18121 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18124 */
+  /* parser/parser.nit:18122 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18125 */
+  /* parser/parser.nit:18123 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18126 */
+  /* parser/parser.nit:18124 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18127 */
+  /* parser/parser.nit:18125 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18128 */
+  /* parser/parser.nit:18126 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18130 */
+  /* parser/parser.nit:18128 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18130);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18128);
   }
-  /* parser/parser.nit:18132 */
+  /* parser/parser.nit:18130 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18130);
   }
-  /* parser/parser.nit:18134 */
+  /* parser/parser.nit:18132 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18132);
   }
-  /* parser/parser.nit:18136 */
+  /* parser/parser.nit:18134 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18136);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18134);
   }
-  /* parser/parser.nit:18138 */
+  /* parser/parser.nit:18136 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18138);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18136);
   }
-  /* parser/parser.nit:18139 */
+  /* parser/parser.nit:18137 */
   fra.me.REG[5] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser.nit:18147 */
+  /* parser/parser.nit:18145 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:18148 */
+  /* parser/parser.nit:18146 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18148);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18146);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49156,7 +49125,7 @@ void parser___ReduceAction482___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18153;
+  fra.me.line = 18151;
   fra.me.meth = LOCATE_parser___ReduceAction482___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -49171,59 +49140,59 @@ void parser___ReduceAction482___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:18155 */
+  /* parser/parser.nit:18153 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18156 */
+  /* parser/parser.nit:18154 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18157 */
+  /* parser/parser.nit:18155 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18158 */
+  /* parser/parser.nit:18156 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18159 */
+  /* parser/parser.nit:18157 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18160 */
+  /* parser/parser.nit:18158 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18161 */
+  /* parser/parser.nit:18159 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18163 */
+  /* parser/parser.nit:18161 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18163);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18161);
   }
-  /* parser/parser.nit:18165 */
+  /* parser/parser.nit:18163 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18165);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18163);
   }
-  /* parser/parser.nit:18167 */
+  /* parser/parser.nit:18165 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18167);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18165);
   }
-  /* parser/parser.nit:18169 */
+  /* parser/parser.nit:18167 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18169);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18167);
   }
-  /* parser/parser.nit:18171 */
+  /* parser/parser.nit:18169 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18171);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18169);
   }
-  /* parser/parser.nit:18172 */
+  /* parser/parser.nit:18170 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18180 */
+  /* parser/parser.nit:18178 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18181 */
+  /* parser/parser.nit:18179 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18181);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18179);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49238,7 +49207,7 @@ void parser___ReduceAction483___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18186;
+  fra.me.line = 18184;
   fra.me.meth = LOCATE_parser___ReduceAction483___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -49254,67 +49223,67 @@ void parser___ReduceAction483___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:18188 */
+  /* parser/parser.nit:18186 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18189 */
+  /* parser/parser.nit:18187 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18190 */
+  /* parser/parser.nit:18188 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18191 */
+  /* parser/parser.nit:18189 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18192 */
+  /* parser/parser.nit:18190 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18193 */
+  /* parser/parser.nit:18191 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18194 */
+  /* parser/parser.nit:18192 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18195 */
+  /* parser/parser.nit:18193 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18197 */
+  /* parser/parser.nit:18195 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18195);
+  }
+  /* parser/parser.nit:18197 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 18197);
   }
   /* parser/parser.nit:18199 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 18199);
   }
   /* parser/parser.nit:18201 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 18201);
   }
   /* parser/parser.nit:18203 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 18203);
   }
   /* parser/parser.nit:18205 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18205);
-  }
-  /* parser/parser.nit:18207 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18207);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18205);
   }
-  /* parser/parser.nit:18208 */
+  /* parser/parser.nit:18206 */
   fra.me.REG[6] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser.nit:18216 */
+  /* parser/parser.nit:18214 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:18217 */
+  /* parser/parser.nit:18215 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18217);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18215);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49329,7 +49298,7 @@ void parser___ReduceAction484___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18222;
+  fra.me.line = 18220;
   fra.me.meth = LOCATE_parser___ReduceAction484___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -49343,53 +49312,53 @@ void parser___ReduceAction484___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:18224 */
+  /* parser/parser.nit:18222 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18225 */
+  /* parser/parser.nit:18223 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18226 */
+  /* parser/parser.nit:18224 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18227 */
+  /* parser/parser.nit:18225 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18228 */
+  /* parser/parser.nit:18226 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18229 */
+  /* parser/parser.nit:18227 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18230 */
+  /* parser/parser.nit:18228 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18232 */
+  /* parser/parser.nit:18230 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18232);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18230);
   }
-  /* parser/parser.nit:18234 */
+  /* parser/parser.nit:18232 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18234);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18232);
   }
-  /* parser/parser.nit:18236 */
+  /* parser/parser.nit:18234 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18236);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18234);
   }
-  /* parser/parser.nit:18238 */
+  /* parser/parser.nit:18236 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18238);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18236);
   }
-  /* parser/parser.nit:18239 */
+  /* parser/parser.nit:18237 */
   fra.me.REG[3] = NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18245 */
+  /* parser/parser.nit:18243 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18246 */
+  /* parser/parser.nit:18244 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18246);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18244);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49404,7 +49373,7 @@ void parser___ReduceAction485___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18251;
+  fra.me.line = 18249;
   fra.me.meth = LOCATE_parser___ReduceAction485___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -49418,43 +49387,43 @@ void parser___ReduceAction485___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:18253 */
+  /* parser/parser.nit:18251 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18254 */
+  /* parser/parser.nit:18252 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18255 */
+  /* parser/parser.nit:18253 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18256 */
+  /* parser/parser.nit:18254 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18257 */
+  /* parser/parser.nit:18255 */
   fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18259 */
+  /* parser/parser.nit:18257 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18259);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18257);
   }
-  /* parser/parser.nit:18261 */
+  /* parser/parser.nit:18259 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18261);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18259);
   }
-  /* parser/parser.nit:18263 */
+  /* parser/parser.nit:18261 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18263);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18261);
   }
-  /* parser/parser.nit:18264 */
+  /* parser/parser.nit:18262 */
   fra.me.REG[3] = NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18270 */
+  /* parser/parser.nit:18268 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18271 */
+  /* parser/parser.nit:18269 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18271);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18269);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49469,7 +49438,7 @@ void parser___ReduceAction486___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18276;
+  fra.me.line = 18274;
   fra.me.meth = LOCATE_parser___ReduceAction486___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -49484,61 +49453,61 @@ void parser___ReduceAction486___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:18278 */
+  /* parser/parser.nit:18276 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18279 */
+  /* parser/parser.nit:18277 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18280 */
+  /* parser/parser.nit:18278 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18281 */
+  /* parser/parser.nit:18279 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18282 */
+  /* parser/parser.nit:18280 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18283 */
+  /* parser/parser.nit:18281 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18284 */
+  /* parser/parser.nit:18282 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18285 */
+  /* parser/parser.nit:18283 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18287 */
+  /* parser/parser.nit:18285 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18287);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18285);
   }
-  /* parser/parser.nit:18289 */
+  /* parser/parser.nit:18287 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18289);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18287);
   }
-  /* parser/parser.nit:18291 */
+  /* parser/parser.nit:18289 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18291);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18289);
   }
-  /* parser/parser.nit:18293 */
+  /* parser/parser.nit:18291 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18293);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18291);
   }
-  /* parser/parser.nit:18295 */
+  /* parser/parser.nit:18293 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18295);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18293);
   }
-  /* parser/parser.nit:18296 */
+  /* parser/parser.nit:18294 */
   fra.me.REG[3] = NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18303 */
+  /* parser/parser.nit:18301 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18304 */
+  /* parser/parser.nit:18302 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18304);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18302);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49553,7 +49522,7 @@ void parser___ReduceAction487___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18309;
+  fra.me.line = 18307;
   fra.me.meth = LOCATE_parser___ReduceAction487___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -49568,51 +49537,51 @@ void parser___ReduceAction487___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:18311 */
+  /* parser/parser.nit:18309 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18312 */
+  /* parser/parser.nit:18310 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18313 */
+  /* parser/parser.nit:18311 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18314 */
+  /* parser/parser.nit:18312 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18315 */
+  /* parser/parser.nit:18313 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18316 */
+  /* parser/parser.nit:18314 */
   fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18318 */
+  /* parser/parser.nit:18316 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18318);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18316);
   }
-  /* parser/parser.nit:18320 */
+  /* parser/parser.nit:18318 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18320);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18318);
   }
-  /* parser/parser.nit:18322 */
+  /* parser/parser.nit:18320 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18322);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18320);
   }
-  /* parser/parser.nit:18324 */
+  /* parser/parser.nit:18322 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18324);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18322);
   }
-  /* parser/parser.nit:18325 */
+  /* parser/parser.nit:18323 */
   fra.me.REG[3] = NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18332 */
+  /* parser/parser.nit:18330 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18333 */
+  /* parser/parser.nit:18331 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18333);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18331);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49627,7 +49596,7 @@ void parser___ReduceAction488___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18338;
+  fra.me.line = 18336;
   fra.me.meth = LOCATE_parser___ReduceAction488___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -49641,49 +49610,49 @@ void parser___ReduceAction488___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:18340 */
+  /* parser/parser.nit:18338 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18341 */
+  /* parser/parser.nit:18339 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18342 */
+  /* parser/parser.nit:18340 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18343 */
+  /* parser/parser.nit:18341 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18344 */
+  /* parser/parser.nit:18342 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18346 */
+  /* parser/parser.nit:18344 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18346);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18344);
   }
-  /* parser/parser.nit:18348 */
+  /* parser/parser.nit:18346 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18348);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18346);
   }
-  /* parser/parser.nit:18350 */
+  /* parser/parser.nit:18348 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18350);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18348);
   }
-  /* parser/parser.nit:18352 */
+  /* parser/parser.nit:18350 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18352);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18350);
   }
-  /* parser/parser.nit:18353 */
+  /* parser/parser.nit:18351 */
   fra.me.REG[3] = NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18359 */
+  /* parser/parser.nit:18357 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18360 */
+  /* parser/parser.nit:18358 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18360);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18358);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49698,7 +49667,7 @@ void parser___ReduceAction489___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18365;
+  fra.me.line = 18363;
   fra.me.meth = LOCATE_parser___ReduceAction489___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -49712,53 +49681,53 @@ void parser___ReduceAction489___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:18367 */
+  /* parser/parser.nit:18365 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18368 */
+  /* parser/parser.nit:18366 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18369 */
+  /* parser/parser.nit:18367 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18370 */
+  /* parser/parser.nit:18368 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18371 */
+  /* parser/parser.nit:18369 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18372 */
+  /* parser/parser.nit:18370 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18373 */
+  /* parser/parser.nit:18371 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18375 */
+  /* parser/parser.nit:18373 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18375);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18373);
   }
-  /* parser/parser.nit:18377 */
+  /* parser/parser.nit:18375 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18377);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18375);
   }
-  /* parser/parser.nit:18379 */
+  /* parser/parser.nit:18377 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18379);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18377);
   }
-  /* parser/parser.nit:18381 */
+  /* parser/parser.nit:18379 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18381);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18379);
   }
-  /* parser/parser.nit:18382 */
+  /* parser/parser.nit:18380 */
   fra.me.REG[3] = NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18388 */
+  /* parser/parser.nit:18386 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18389 */
+  /* parser/parser.nit:18387 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18389);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18387);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49773,7 +49742,7 @@ void parser___ReduceAction490___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18394;
+  fra.me.line = 18392;
   fra.me.meth = LOCATE_parser___ReduceAction490___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -49787,43 +49756,43 @@ void parser___ReduceAction490___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:18396 */
+  /* parser/parser.nit:18394 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18397 */
+  /* parser/parser.nit:18395 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18398 */
+  /* parser/parser.nit:18396 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18399 */
+  /* parser/parser.nit:18397 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18400 */
+  /* parser/parser.nit:18398 */
   fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18402 */
+  /* parser/parser.nit:18400 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18402);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18400);
   }
-  /* parser/parser.nit:18404 */
+  /* parser/parser.nit:18402 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18402);
   }
-  /* parser/parser.nit:18406 */
+  /* parser/parser.nit:18404 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18406);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18404);
   }
-  /* parser/parser.nit:18407 */
+  /* parser/parser.nit:18405 */
   fra.me.REG[3] = NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18413 */
+  /* parser/parser.nit:18411 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18414 */
+  /* parser/parser.nit:18412 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18414);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18412);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49838,7 +49807,7 @@ void parser___ReduceAction491___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18419;
+  fra.me.line = 18417;
   fra.me.meth = LOCATE_parser___ReduceAction491___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -49853,61 +49822,61 @@ void parser___ReduceAction491___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:18421 */
+  /* parser/parser.nit:18419 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18422 */
+  /* parser/parser.nit:18420 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18423 */
+  /* parser/parser.nit:18421 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18424 */
+  /* parser/parser.nit:18422 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18425 */
+  /* parser/parser.nit:18423 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18426 */
+  /* parser/parser.nit:18424 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18427 */
+  /* parser/parser.nit:18425 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18428 */
+  /* parser/parser.nit:18426 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18430 */
+  /* parser/parser.nit:18428 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18430);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18428);
   }
-  /* parser/parser.nit:18432 */
+  /* parser/parser.nit:18430 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18432);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18430);
   }
-  /* parser/parser.nit:18434 */
+  /* parser/parser.nit:18432 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18434);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18432);
   }
-  /* parser/parser.nit:18436 */
+  /* parser/parser.nit:18434 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18436);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18434);
   }
-  /* parser/parser.nit:18438 */
+  /* parser/parser.nit:18436 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18438);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18436);
   }
-  /* parser/parser.nit:18439 */
+  /* parser/parser.nit:18437 */
   fra.me.REG[3] = NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18446 */
+  /* parser/parser.nit:18444 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18447 */
+  /* parser/parser.nit:18445 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18447);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18445);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49922,7 +49891,7 @@ void parser___ReduceAction492___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18452;
+  fra.me.line = 18450;
   fra.me.meth = LOCATE_parser___ReduceAction492___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -49937,51 +49906,51 @@ void parser___ReduceAction492___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:18454 */
+  /* parser/parser.nit:18452 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18455 */
+  /* parser/parser.nit:18453 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18456 */
+  /* parser/parser.nit:18454 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18457 */
+  /* parser/parser.nit:18455 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18458 */
+  /* parser/parser.nit:18456 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18459 */
+  /* parser/parser.nit:18457 */
   fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18461 */
+  /* parser/parser.nit:18459 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18461);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18459);
   }
-  /* parser/parser.nit:18463 */
+  /* parser/parser.nit:18461 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18463);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18461);
   }
-  /* parser/parser.nit:18465 */
+  /* parser/parser.nit:18463 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18465);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18463);
   }
-  /* parser/parser.nit:18467 */
+  /* parser/parser.nit:18465 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18467);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18465);
   }
-  /* parser/parser.nit:18468 */
+  /* parser/parser.nit:18466 */
   fra.me.REG[3] = NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18475 */
+  /* parser/parser.nit:18473 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18476 */
+  /* parser/parser.nit:18474 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18476);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18474);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -49996,7 +49965,7 @@ void parser___ReduceAction493___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18481;
+  fra.me.line = 18479;
   fra.me.meth = LOCATE_parser___ReduceAction493___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -50010,49 +49979,49 @@ void parser___ReduceAction493___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:18483 */
+  /* parser/parser.nit:18481 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18484 */
+  /* parser/parser.nit:18482 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18485 */
+  /* parser/parser.nit:18483 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18486 */
+  /* parser/parser.nit:18484 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18487 */
+  /* parser/parser.nit:18485 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18489 */
+  /* parser/parser.nit:18487 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18487);
   }
-  /* parser/parser.nit:18491 */
+  /* parser/parser.nit:18489 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18491);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18489);
   }
-  /* parser/parser.nit:18493 */
+  /* parser/parser.nit:18491 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18493);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18491);
   }
-  /* parser/parser.nit:18495 */
+  /* parser/parser.nit:18493 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18495);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18493);
   }
-  /* parser/parser.nit:18496 */
+  /* parser/parser.nit:18494 */
   fra.me.REG[3] = NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18502 */
+  /* parser/parser.nit:18500 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18503 */
+  /* parser/parser.nit:18501 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18503);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18501);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50067,7 +50036,7 @@ void parser___ReduceAction494___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18508;
+  fra.me.line = 18506;
   fra.me.meth = LOCATE_parser___ReduceAction494___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -50078,25 +50047,25 @@ void parser___ReduceAction494___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:18510 */
+  /* parser/parser.nit:18508 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18511 */
+  /* parser/parser.nit:18509 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18513 */
+  /* parser/parser.nit:18511 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPluseq, ID_parser___parser_nodes___TPluseq)) /*cast nullable TPluseq*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18513);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18511);
   }
-  /* parser/parser.nit:18514 */
+  /* parser/parser.nit:18512 */
   fra.me.REG[3] = NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[3]);
-  /* parser/parser.nit:18517 */
+  /* parser/parser.nit:18515 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18518 */
+  /* parser/parser.nit:18516 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18518);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18516);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50111,7 +50080,7 @@ void parser___ReduceAction495___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18523;
+  fra.me.line = 18521;
   fra.me.meth = LOCATE_parser___ReduceAction495___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -50122,25 +50091,25 @@ void parser___ReduceAction495___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:18525 */
+  /* parser/parser.nit:18523 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18526 */
+  /* parser/parser.nit:18524 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18528 */
+  /* parser/parser.nit:18526 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMinuseq, ID_parser___parser_nodes___TMinuseq)) /*cast nullable TMinuseq*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18528);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18526);
   }
-  /* parser/parser.nit:18529 */
+  /* parser/parser.nit:18527 */
   fra.me.REG[3] = NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[3]);
-  /* parser/parser.nit:18532 */
+  /* parser/parser.nit:18530 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18533 */
+  /* parser/parser.nit:18531 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18533);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18531);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50155,7 +50124,7 @@ void parser___ReduceAction496___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18538;
+  fra.me.line = 18536;
   fra.me.meth = LOCATE_parser___ReduceAction496___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -50168,41 +50137,41 @@ void parser___ReduceAction496___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:18540 */
+  /* parser/parser.nit:18538 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18541 */
+  /* parser/parser.nit:18539 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18542 */
+  /* parser/parser.nit:18540 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18543 */
+  /* parser/parser.nit:18541 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18545 */
+  /* parser/parser.nit:18543 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18545);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18543);
   }
-  /* parser/parser.nit:18547 */
+  /* parser/parser.nit:18545 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18547);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18545);
   }
-  /* parser/parser.nit:18549 */
+  /* parser/parser.nit:18547 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18549);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18547);
   }
-  /* parser/parser.nit:18550 */
+  /* parser/parser.nit:18548 */
   fra.me.REG[3] = NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18555 */
+  /* parser/parser.nit:18553 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18556 */
+  /* parser/parser.nit:18554 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18556);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18554);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50217,7 +50186,7 @@ void parser___ReduceAction497___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18561;
+  fra.me.line = 18559;
   fra.me.meth = LOCATE_parser___ReduceAction497___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -50229,33 +50198,33 @@ void parser___ReduceAction497___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:18563 */
+  /* parser/parser.nit:18561 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18564 */
+  /* parser/parser.nit:18562 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18565 */
+  /* parser/parser.nit:18563 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18567 */
+  /* parser/parser.nit:18565 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18567);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18565);
   }
-  /* parser/parser.nit:18569 */
+  /* parser/parser.nit:18567 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18569);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18567);
   }
-  /* parser/parser.nit:18570 */
+  /* parser/parser.nit:18568 */
   fra.me.REG[3] = NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18575 */
+  /* parser/parser.nit:18573 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18576 */
+  /* parser/parser.nit:18574 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18576);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18574);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50270,7 +50239,7 @@ void parser___ReduceAction498___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18581;
+  fra.me.line = 18579;
   fra.me.meth = LOCATE_parser___ReduceAction498___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -50284,57 +50253,57 @@ void parser___ReduceAction498___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:18583 */
+  /* parser/parser.nit:18581 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18584 */
+  /* parser/parser.nit:18582 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18585 */
+  /* parser/parser.nit:18583 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18586 */
+  /* parser/parser.nit:18584 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18585 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18586 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18587 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18588 */
-  fra.me.REG[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:18589 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18590 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18591 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18593 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18593);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18591);
   }
-  /* parser/parser.nit:18595 */
+  /* parser/parser.nit:18593 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18595);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18593);
   }
-  /* parser/parser.nit:18597 */
+  /* parser/parser.nit:18595 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18597);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18595);
   }
-  /* parser/parser.nit:18599 */
+  /* parser/parser.nit:18597 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18599);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18597);
   }
-  /* parser/parser.nit:18600 */
+  /* parser/parser.nit:18598 */
   fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18606 */
+  /* parser/parser.nit:18604 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18607 */
+  /* parser/parser.nit:18605 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18607);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18605);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50349,7 +50318,7 @@ void parser___ReduceAction499___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18612;
+  fra.me.line = 18610;
   fra.me.meth = LOCATE_parser___ReduceAction499___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -50362,47 +50331,47 @@ void parser___ReduceAction499___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:18614 */
+  /* parser/parser.nit:18612 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18615 */
+  /* parser/parser.nit:18613 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18614 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18615 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18616 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18617 */
-  fra.me.REG[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:18618 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18619 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18620 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18622 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18622);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18620);
   }
-  /* parser/parser.nit:18624 */
+  /* parser/parser.nit:18622 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18624);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18622);
   }
-  /* parser/parser.nit:18626 */
+  /* parser/parser.nit:18624 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18626);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18624);
   }
-  /* parser/parser.nit:18627 */
+  /* parser/parser.nit:18625 */
   fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18633 */
+  /* parser/parser.nit:18631 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18634 */
+  /* parser/parser.nit:18632 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18634);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18632);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50417,7 +50386,7 @@ void parser___ReduceAction500___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18639;
+  fra.me.line = 18637;
   fra.me.meth = LOCATE_parser___ReduceAction500___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -50431,57 +50400,57 @@ void parser___ReduceAction500___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:18641 */
+  /* parser/parser.nit:18639 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18642 */
+  /* parser/parser.nit:18640 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18643 */
+  /* parser/parser.nit:18641 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18642 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18643 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18644 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18645 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18646 */
-  fra.me.REG[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:18647 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18648 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18649 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18651 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18651);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18649);
   }
-  /* parser/parser.nit:18653 */
+  /* parser/parser.nit:18651 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18653);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18651);
   }
-  /* parser/parser.nit:18655 */
+  /* parser/parser.nit:18653 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18655);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18653);
   }
-  /* parser/parser.nit:18657 */
+  /* parser/parser.nit:18655 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18657);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18655);
   }
-  /* parser/parser.nit:18658 */
+  /* parser/parser.nit:18656 */
   fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18664 */
+  /* parser/parser.nit:18662 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18665 */
+  /* parser/parser.nit:18663 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18665);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18663);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50496,7 +50465,7 @@ void parser___ReduceAction501___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18670;
+  fra.me.line = 18668;
   fra.me.meth = LOCATE_parser___ReduceAction501___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -50509,47 +50478,47 @@ void parser___ReduceAction501___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:18672 */
+  /* parser/parser.nit:18670 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18673 */
+  /* parser/parser.nit:18671 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18672 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18673 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18674 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18675 */
-  fra.me.REG[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:18676 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18677 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18678 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18680 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18680);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18678);
   }
-  /* parser/parser.nit:18682 */
+  /* parser/parser.nit:18680 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18682);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18680);
   }
-  /* parser/parser.nit:18684 */
+  /* parser/parser.nit:18682 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18684);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18682);
   }
-  /* parser/parser.nit:18685 */
+  /* parser/parser.nit:18683 */
   fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:18691 */
+  /* parser/parser.nit:18689 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18692 */
+  /* parser/parser.nit:18690 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18692);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18690);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50564,7 +50533,7 @@ void parser___ReduceAction502___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18697;
+  fra.me.line = 18695;
   fra.me.meth = LOCATE_parser___ReduceAction502___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -50577,49 +50546,49 @@ void parser___ReduceAction502___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:18699 */
+  /* parser/parser.nit:18697 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18700 */
+  /* parser/parser.nit:18698 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18699 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18700 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18701 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18702 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18703 */
-  fra.me.REG[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:18704 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18705 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18706 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18708 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18708);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18706);
   }
-  /* parser/parser.nit:18710 */
+  /* parser/parser.nit:18708 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18710);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18708);
   }
-  /* parser/parser.nit:18712 */
+  /* parser/parser.nit:18710 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18712);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18710);
   }
-  /* parser/parser.nit:18713 */
+  /* parser/parser.nit:18711 */
   fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:18719 */
+  /* parser/parser.nit:18717 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18720 */
+  /* parser/parser.nit:18718 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18720);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18718);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50634,7 +50603,7 @@ void parser___ReduceAction505___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18725;
+  fra.me.line = 18723;
   fra.me.meth = LOCATE_parser___ReduceAction505___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -50647,41 +50616,41 @@ void parser___ReduceAction505___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:18727 */
+  /* parser/parser.nit:18725 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18728 */
+  /* parser/parser.nit:18726 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18729 */
+  /* parser/parser.nit:18727 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18730 */
+  /* parser/parser.nit:18728 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18732 */
+  /* parser/parser.nit:18730 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast nullable TKwloop*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18732);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18730);
   }
-  /* parser/parser.nit:18734 */
+  /* parser/parser.nit:18732 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18734);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18732);
   }
-  /* parser/parser.nit:18736 */
+  /* parser/parser.nit:18734 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18736);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18734);
   }
-  /* parser/parser.nit:18737 */
+  /* parser/parser.nit:18735 */
   fra.me.REG[3] = NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18742 */
+  /* parser/parser.nit:18740 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18743 */
+  /* parser/parser.nit:18741 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18743);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18741);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50696,7 +50665,7 @@ void parser___ReduceAction506___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18748;
+  fra.me.line = 18746;
   fra.me.meth = LOCATE_parser___ReduceAction506___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -50708,33 +50677,33 @@ void parser___ReduceAction506___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:18750 */
+  /* parser/parser.nit:18748 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18751 */
+  /* parser/parser.nit:18749 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18752 */
+  /* parser/parser.nit:18750 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18754 */
+  /* parser/parser.nit:18752 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast nullable TKwloop*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18754);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18752);
   }
-  /* parser/parser.nit:18756 */
+  /* parser/parser.nit:18754 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18756);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18754);
   }
-  /* parser/parser.nit:18757 */
+  /* parser/parser.nit:18755 */
   fra.me.REG[3] = NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18762 */
+  /* parser/parser.nit:18760 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18763 */
+  /* parser/parser.nit:18761 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18763);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18761);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50749,7 +50718,7 @@ void parser___ReduceAction507___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18768;
+  fra.me.line = 18766;
   fra.me.meth = LOCATE_parser___ReduceAction507___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -50764,61 +50733,61 @@ void parser___ReduceAction507___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:18770 */
+  /* parser/parser.nit:18768 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18771 */
+  /* parser/parser.nit:18769 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18772 */
+  /* parser/parser.nit:18770 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18773 */
+  /* parser/parser.nit:18771 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18774 */
+  /* parser/parser.nit:18772 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18775 */
+  /* parser/parser.nit:18773 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18776 */
+  /* parser/parser.nit:18774 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18777 */
+  /* parser/parser.nit:18775 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18779 */
+  /* parser/parser.nit:18777 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast nullable TKwwhile*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18779);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18777);
   }
-  /* parser/parser.nit:18781 */
+  /* parser/parser.nit:18779 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18781);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18779);
   }
-  /* parser/parser.nit:18783 */
+  /* parser/parser.nit:18781 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18783);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18781);
   }
-  /* parser/parser.nit:18785 */
+  /* parser/parser.nit:18783 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18785);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18783);
   }
-  /* parser/parser.nit:18787 */
+  /* parser/parser.nit:18785 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18787);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18785);
   }
-  /* parser/parser.nit:18788 */
+  /* parser/parser.nit:18786 */
   fra.me.REG[3] = NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18795 */
+  /* parser/parser.nit:18793 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18796 */
+  /* parser/parser.nit:18794 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18796);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18794);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50833,7 +50802,7 @@ void parser___ReduceAction508___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18801;
+  fra.me.line = 18799;
   fra.me.meth = LOCATE_parser___ReduceAction508___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -50847,53 +50816,53 @@ void parser___ReduceAction508___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:18803 */
+  /* parser/parser.nit:18801 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18804 */
+  /* parser/parser.nit:18802 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18805 */
+  /* parser/parser.nit:18803 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18806 */
+  /* parser/parser.nit:18804 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18807 */
+  /* parser/parser.nit:18805 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18808 */
+  /* parser/parser.nit:18806 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18809 */
+  /* parser/parser.nit:18807 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18811 */
+  /* parser/parser.nit:18809 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast nullable TKwwhile*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18811);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18809);
   }
-  /* parser/parser.nit:18813 */
+  /* parser/parser.nit:18811 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18813);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18811);
   }
-  /* parser/parser.nit:18815 */
+  /* parser/parser.nit:18813 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18815);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18813);
   }
-  /* parser/parser.nit:18817 */
+  /* parser/parser.nit:18815 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18817);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18815);
   }
-  /* parser/parser.nit:18818 */
+  /* parser/parser.nit:18816 */
   fra.me.REG[3] = NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18825 */
+  /* parser/parser.nit:18823 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18826 */
+  /* parser/parser.nit:18824 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18826);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18824);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -50908,7 +50877,7 @@ void parser___ReduceAction509___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18831;
+  fra.me.line = 18829;
   fra.me.meth = LOCATE_parser___ReduceAction509___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -50925,18 +50894,22 @@ void parser___ReduceAction509___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:18833 */
+  /* parser/parser.nit:18831 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18834 */
+  /* parser/parser.nit:18832 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18835 */
+  /* parser/parser.nit:18833 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18836 */
+  /* parser/parser.nit:18834 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18837 */
+  /* parser/parser.nit:18835 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18838 */
+  /* parser/parser.nit:18836 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18837 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18838 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18839 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18840 */
@@ -50944,65 +50917,61 @@ void parser___ReduceAction509___action(val_t p0, val_t p1){
   /* parser/parser.nit:18841 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18842 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18843 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18844 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18845 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18846 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18847 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18849 */
+  /* parser/parser.nit:18847 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18849);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18847);
   }
-  /* parser/parser.nit:18851 */
+  /* parser/parser.nit:18849 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18851);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18849);
   }
-  /* parser/parser.nit:18852 */
+  /* parser/parser.nit:18850 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
   fra.me.REG[9] = fra.me.REG[7];
-  /* parser/parser.nit:18854 */
+  /* parser/parser.nit:18852 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18854);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18852);
   }
-  /* parser/parser.nit:18856 */
+  /* parser/parser.nit:18854 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18856);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18854);
   }
-  /* parser/parser.nit:18858 */
+  /* parser/parser.nit:18856 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18858);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18856);
   }
-  /* parser/parser.nit:18860 */
+  /* parser/parser.nit:18858 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18860);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18858);
   }
-  /* parser/parser.nit:18861 */
+  /* parser/parser.nit:18859 */
   fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[9], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18869 */
+  /* parser/parser.nit:18867 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18870 */
+  /* parser/parser.nit:18868 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18870);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18868);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51017,7 +50986,7 @@ void parser___ReduceAction510___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18875;
+  fra.me.line = 18873;
   fra.me.meth = LOCATE_parser___ReduceAction510___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -51034,80 +51003,80 @@ void parser___ReduceAction510___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:18877 */
+  /* parser/parser.nit:18875 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18878 */
+  /* parser/parser.nit:18876 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18879 */
+  /* parser/parser.nit:18877 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18880 */
+  /* parser/parser.nit:18878 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18881 */
+  /* parser/parser.nit:18879 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18882 */
+  /* parser/parser.nit:18880 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18881 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18882 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18883 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18884 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18885 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18886 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18887 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18888 */
+  /* parser/parser.nit:18886 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18889 */
+  /* parser/parser.nit:18887 */
   fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18891 */
+  /* parser/parser.nit:18889 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18891);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18889);
   }
-  /* parser/parser.nit:18893 */
+  /* parser/parser.nit:18891 */
   REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18893);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18891);
   }
-  /* parser/parser.nit:18894 */
+  /* parser/parser.nit:18892 */
   fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
   fra.me.REG[9] = fra.me.REG[7];
-  /* parser/parser.nit:18896 */
+  /* parser/parser.nit:18894 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18896);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18894);
   }
-  /* parser/parser.nit:18898 */
+  /* parser/parser.nit:18896 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18898);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18896);
   }
-  /* parser/parser.nit:18900 */
+  /* parser/parser.nit:18898 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18900);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18898);
   }
-  /* parser/parser.nit:18902 */
+  /* parser/parser.nit:18900 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18902);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18900);
   }
-  /* parser/parser.nit:18903 */
+  /* parser/parser.nit:18901 */
   fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[9], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:18911 */
+  /* parser/parser.nit:18909 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18912 */
+  /* parser/parser.nit:18910 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18912);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18910);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51122,7 +51091,7 @@ void parser___ReduceAction511___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18917;
+  fra.me.line = 18915;
   fra.me.meth = LOCATE_parser___ReduceAction511___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -51138,16 +51107,20 @@ void parser___ReduceAction511___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:18919 */
+  /* parser/parser.nit:18917 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18920 */
+  /* parser/parser.nit:18918 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18921 */
+  /* parser/parser.nit:18919 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18922 */
+  /* parser/parser.nit:18920 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18923 */
+  /* parser/parser.nit:18921 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18922 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18923 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18924 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18925 */
@@ -51155,59 +51128,55 @@ void parser___ReduceAction511___action(val_t p0, val_t p1){
   /* parser/parser.nit:18926 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18927 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18928 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18929 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18930 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18931 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18932 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18934 */
+  /* parser/parser.nit:18932 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18934);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18932);
   }
-  /* parser/parser.nit:18936 */
+  /* parser/parser.nit:18934 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18936);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18934);
   }
-  /* parser/parser.nit:18937 */
+  /* parser/parser.nit:18935 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:18939 */
+  /* parser/parser.nit:18937 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18939);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18937);
   }
-  /* parser/parser.nit:18941 */
+  /* parser/parser.nit:18939 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18941);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18939);
   }
-  /* parser/parser.nit:18943 */
+  /* parser/parser.nit:18941 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18943);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18941);
   }
-  /* parser/parser.nit:18944 */
+  /* parser/parser.nit:18942 */
   fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18952 */
+  /* parser/parser.nit:18950 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18953 */
+  /* parser/parser.nit:18951 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18953);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18951);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51222,7 +51191,7 @@ void parser___ReduceAction512___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18958;
+  fra.me.line = 18956;
   fra.me.meth = LOCATE_parser___ReduceAction512___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -51238,72 +51207,72 @@ void parser___ReduceAction512___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:18960 */
+  /* parser/parser.nit:18958 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18961 */
+  /* parser/parser.nit:18959 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18962 */
+  /* parser/parser.nit:18960 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18963 */
+  /* parser/parser.nit:18961 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18964 */
+  /* parser/parser.nit:18962 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18963 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:18964 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18965 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18966 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:18967 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18968 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18969 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18970 */
+  /* parser/parser.nit:18968 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18971 */
+  /* parser/parser.nit:18969 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18973 */
+  /* parser/parser.nit:18971 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18973);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18971);
   }
-  /* parser/parser.nit:18975 */
+  /* parser/parser.nit:18973 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18973);
   }
-  /* parser/parser.nit:18976 */
+  /* parser/parser.nit:18974 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* parser/parser.nit:18978 */
+  /* parser/parser.nit:18976 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18978);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18976);
   }
-  /* parser/parser.nit:18980 */
+  /* parser/parser.nit:18978 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18980);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18978);
   }
-  /* parser/parser.nit:18982 */
+  /* parser/parser.nit:18980 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 18982);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 18980);
   }
-  /* parser/parser.nit:18983 */
+  /* parser/parser.nit:18981 */
   fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:18991 */
+  /* parser/parser.nit:18989 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18992 */
+  /* parser/parser.nit:18990 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18992);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18990);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51318,7 +51287,7 @@ void parser___ReduceAction513___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 18997;
+  fra.me.line = 18995;
   fra.me.meth = LOCATE_parser___ReduceAction513___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -51331,43 +51300,43 @@ void parser___ReduceAction513___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:18999 */
+  /* parser/parser.nit:18997 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19000 */
+  /* parser/parser.nit:18998 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19001 */
+  /* parser/parser.nit:18999 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19002 */
+  /* parser/parser.nit:19000 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19003 */
+  /* parser/parser.nit:19001 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19005 */
+  /* parser/parser.nit:19003 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19005);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19003);
   }
-  /* parser/parser.nit:19007 */
+  /* parser/parser.nit:19005 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19007);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19005);
   }
-  /* parser/parser.nit:19009 */
+  /* parser/parser.nit:19007 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19009);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19007);
   }
-  /* parser/parser.nit:19010 */
+  /* parser/parser.nit:19008 */
   fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19016 */
+  /* parser/parser.nit:19014 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19017 */
+  /* parser/parser.nit:19015 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19017);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19015);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51382,7 +51351,7 @@ void parser___ReduceAction514___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19022;
+  fra.me.line = 19020;
   fra.me.meth = LOCATE_parser___ReduceAction514___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -51396,51 +51365,51 @@ void parser___ReduceAction514___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:19024 */
+  /* parser/parser.nit:19022 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19025 */
+  /* parser/parser.nit:19023 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19026 */
+  /* parser/parser.nit:19024 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19027 */
+  /* parser/parser.nit:19025 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19028 */
+  /* parser/parser.nit:19026 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19029 */
+  /* parser/parser.nit:19027 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19031 */
+  /* parser/parser.nit:19029 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19031);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19029);
   }
-  /* parser/parser.nit:19033 */
+  /* parser/parser.nit:19031 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19033);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19031);
   }
-  /* parser/parser.nit:19035 */
+  /* parser/parser.nit:19033 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19035);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19033);
   }
-  /* parser/parser.nit:19037 */
+  /* parser/parser.nit:19035 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19037);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19035);
   }
-  /* parser/parser.nit:19038 */
+  /* parser/parser.nit:19036 */
   fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19044 */
+  /* parser/parser.nit:19042 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19045 */
+  /* parser/parser.nit:19043 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19045);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19043);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51455,7 +51424,7 @@ void parser___ReduceAction515___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19050;
+  fra.me.line = 19048;
   fra.me.meth = LOCATE_parser___ReduceAction515___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51467,33 +51436,33 @@ void parser___ReduceAction515___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:19052 */
+  /* parser/parser.nit:19050 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19053 */
+  /* parser/parser.nit:19051 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19054 */
+  /* parser/parser.nit:19052 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19056 */
+  /* parser/parser.nit:19054 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19056);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19054);
   }
-  /* parser/parser.nit:19058 */
+  /* parser/parser.nit:19056 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19058);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19056);
   }
-  /* parser/parser.nit:19059 */
+  /* parser/parser.nit:19057 */
   fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19065 */
+  /* parser/parser.nit:19063 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19066 */
+  /* parser/parser.nit:19064 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19066);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19064);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51508,7 +51477,7 @@ void parser___ReduceAction516___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19071;
+  fra.me.line = 19069;
   fra.me.meth = LOCATE_parser___ReduceAction516___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -51521,41 +51490,41 @@ void parser___ReduceAction516___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:19073 */
+  /* parser/parser.nit:19071 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19074 */
+  /* parser/parser.nit:19072 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19075 */
+  /* parser/parser.nit:19073 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19076 */
+  /* parser/parser.nit:19074 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19078 */
+  /* parser/parser.nit:19076 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19078);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19076);
   }
-  /* parser/parser.nit:19080 */
+  /* parser/parser.nit:19078 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19080);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19078);
   }
-  /* parser/parser.nit:19082 */
+  /* parser/parser.nit:19080 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19082);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19080);
   }
-  /* parser/parser.nit:19083 */
+  /* parser/parser.nit:19081 */
   fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19089 */
+  /* parser/parser.nit:19087 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19090 */
+  /* parser/parser.nit:19088 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19090);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19088);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51570,7 +51539,7 @@ void parser___ReduceAction517___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19095;
+  fra.me.line = 19093;
   fra.me.meth = LOCATE_parser___ReduceAction517___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51581,19 +51550,19 @@ void parser___ReduceAction517___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:19097 */
+  /* parser/parser.nit:19095 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19098 */
+  /* parser/parser.nit:19096 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19099 */
+  /* parser/parser.nit:19097 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19101 */
+  /* parser/parser.nit:19099 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19102 */
+  /* parser/parser.nit:19100 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19102);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19100);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51608,7 +51577,7 @@ void parser___ReduceAction521___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19107;
+  fra.me.line = 19105;
   fra.me.meth = LOCATE_parser___ReduceAction521___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -51622,46 +51591,46 @@ void parser___ReduceAction521___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:19109 */
+  /* parser/parser.nit:19107 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19110 */
+  /* parser/parser.nit:19108 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19111 */
+  /* parser/parser.nit:19109 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19112 */
+  /* parser/parser.nit:19110 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19113 */
+  /* parser/parser.nit:19111 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:19115 */
+  /* parser/parser.nit:19113 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19115);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19113);
   }
-  /* parser/parser.nit:19117 */
+  /* parser/parser.nit:19115 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19117);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19115);
   }
-  /* parser/parser.nit:19119 */
+  /* parser/parser.nit:19117 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19119);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19117);
   }
-  /* parser/parser.nit:19120 */
+  /* parser/parser.nit:19118 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* parser/parser.nit:19121 */
+  /* parser/parser.nit:19119 */
   fra.me.REG[6] = NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser.nit:19126 */
+  /* parser/parser.nit:19124 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:19127 */
+  /* parser/parser.nit:19125 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19127);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19125);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51676,7 +51645,7 @@ void parser___ReduceAction523___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19132;
+  fra.me.line = 19130;
   fra.me.meth = LOCATE_parser___ReduceAction523___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -51692,75 +51661,75 @@ void parser___ReduceAction523___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:19134 */
+  /* parser/parser.nit:19132 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19135 */
+  /* parser/parser.nit:19133 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19136 */
+  /* parser/parser.nit:19134 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19137 */
+  /* parser/parser.nit:19135 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19138 */
+  /* parser/parser.nit:19136 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19139 */
+  /* parser/parser.nit:19137 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19140 */
+  /* parser/parser.nit:19138 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19141 */
+  /* parser/parser.nit:19139 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19142 */
+  /* parser/parser.nit:19140 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19143 */
+  /* parser/parser.nit:19141 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19144 */
+  /* parser/parser.nit:19142 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19145 */
+  /* parser/parser.nit:19143 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19147 */
+  /* parser/parser.nit:19145 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19145);
+  }
+  /* parser/parser.nit:19147 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 19147);
   }
   /* parser/parser.nit:19149 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwthen, ID_parser___parser_nodes___TKwthen)) /*cast nullable TKwthen*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 19149);
   }
   /* parser/parser.nit:19151 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwthen, ID_parser___parser_nodes___TKwthen)) /*cast nullable TKwthen*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 19151);
   }
   /* parser/parser.nit:19153 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwelse, ID_parser___parser_nodes___TKwelse)) /*cast nullable TKwelse*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 19153);
   }
   /* parser/parser.nit:19155 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwelse, ID_parser___parser_nodes___TKwelse)) /*cast nullable TKwelse*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19155);
-  }
-  /* parser/parser.nit:19157 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19157);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19155);
   }
-  /* parser/parser.nit:19158 */
+  /* parser/parser.nit:19156 */
   fra.me.REG[3] = NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19166 */
+  /* parser/parser.nit:19164 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19167 */
+  /* parser/parser.nit:19165 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19167);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19165);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51775,7 +51744,7 @@ void parser___ReduceAction525___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19172;
+  fra.me.line = 19170;
   fra.me.meth = LOCATE_parser___ReduceAction525___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51787,37 +51756,37 @@ void parser___ReduceAction525___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:19174 */
+  /* parser/parser.nit:19172 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19175 */
+  /* parser/parser.nit:19173 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19176 */
+  /* parser/parser.nit:19174 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19177 */
+  /* parser/parser.nit:19175 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19178 */
+  /* parser/parser.nit:19176 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19180 */
+  /* parser/parser.nit:19178 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19180);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19178);
   }
-  /* parser/parser.nit:19182 */
+  /* parser/parser.nit:19180 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19182);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19180);
   }
-  /* parser/parser.nit:19183 */
+  /* parser/parser.nit:19181 */
   fra.me.REG[3] = NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19187 */
+  /* parser/parser.nit:19185 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19188 */
+  /* parser/parser.nit:19186 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19188);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19186);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51832,7 +51801,7 @@ void parser___ReduceAction526___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19193;
+  fra.me.line = 19191;
   fra.me.meth = LOCATE_parser___ReduceAction526___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51844,37 +51813,37 @@ void parser___ReduceAction526___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:19195 */
+  /* parser/parser.nit:19193 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19196 */
+  /* parser/parser.nit:19194 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19197 */
+  /* parser/parser.nit:19195 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19198 */
+  /* parser/parser.nit:19196 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19199 */
+  /* parser/parser.nit:19197 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19201 */
+  /* parser/parser.nit:19199 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19201);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19199);
   }
-  /* parser/parser.nit:19203 */
+  /* parser/parser.nit:19201 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19203);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19201);
   }
-  /* parser/parser.nit:19204 */
+  /* parser/parser.nit:19202 */
   fra.me.REG[3] = NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19208 */
+  /* parser/parser.nit:19206 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19209 */
+  /* parser/parser.nit:19207 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19209);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19207);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51889,7 +51858,7 @@ void parser___ReduceAction527___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19214;
+  fra.me.line = 19212;
   fra.me.meth = LOCATE_parser___ReduceAction527___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51901,39 +51870,39 @@ void parser___ReduceAction527___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:19216 */
+  /* parser/parser.nit:19214 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19217 */
+  /* parser/parser.nit:19215 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19216 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19218 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19219 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19220 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19221 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19223 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19223);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19221);
   }
-  /* parser/parser.nit:19225 */
+  /* parser/parser.nit:19223 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19225);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19223);
   }
-  /* parser/parser.nit:19226 */
+  /* parser/parser.nit:19224 */
   fra.me.REG[3] = NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19230 */
+  /* parser/parser.nit:19228 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19231 */
+  /* parser/parser.nit:19229 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19231);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19229);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -51948,7 +51917,7 @@ void parser___ReduceAction529___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19236;
+  fra.me.line = 19234;
   fra.me.meth = LOCATE_parser___ReduceAction529___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -51960,35 +51929,35 @@ void parser___ReduceAction529___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:19238 */
+  /* parser/parser.nit:19236 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19239 */
+  /* parser/parser.nit:19237 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19240 */
+  /* parser/parser.nit:19238 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19241 */
+  /* parser/parser.nit:19239 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19243 */
+  /* parser/parser.nit:19241 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19243);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19241);
   }
-  /* parser/parser.nit:19245 */
+  /* parser/parser.nit:19243 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19245);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19243);
   }
-  /* parser/parser.nit:19246 */
+  /* parser/parser.nit:19244 */
   fra.me.REG[3] = NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19250 */
+  /* parser/parser.nit:19248 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19251 */
+  /* parser/parser.nit:19249 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19251);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19249);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52003,7 +51972,7 @@ void parser___ReduceAction531___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19256;
+  fra.me.line = 19254;
   fra.me.meth = LOCATE_parser___ReduceAction531___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52015,37 +51984,37 @@ void parser___ReduceAction531___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:19258 */
+  /* parser/parser.nit:19256 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19259 */
+  /* parser/parser.nit:19257 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19260 */
+  /* parser/parser.nit:19258 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19261 */
+  /* parser/parser.nit:19259 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19262 */
+  /* parser/parser.nit:19260 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19264 */
+  /* parser/parser.nit:19262 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19264);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19262);
   }
-  /* parser/parser.nit:19266 */
+  /* parser/parser.nit:19264 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19266);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19264);
   }
-  /* parser/parser.nit:19267 */
+  /* parser/parser.nit:19265 */
   fra.me.REG[3] = NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19271 */
+  /* parser/parser.nit:19269 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19272 */
+  /* parser/parser.nit:19270 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19272);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19270);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52060,7 +52029,7 @@ void parser___ReduceAction532___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19277;
+  fra.me.line = 19275;
   fra.me.meth = LOCATE_parser___ReduceAction532___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52072,37 +52041,37 @@ void parser___ReduceAction532___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:19279 */
+  /* parser/parser.nit:19277 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19280 */
+  /* parser/parser.nit:19278 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19281 */
+  /* parser/parser.nit:19279 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19282 */
+  /* parser/parser.nit:19280 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19283 */
+  /* parser/parser.nit:19281 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19285 */
+  /* parser/parser.nit:19283 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19285);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19283);
   }
-  /* parser/parser.nit:19287 */
+  /* parser/parser.nit:19285 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19287);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19285);
   }
-  /* parser/parser.nit:19288 */
+  /* parser/parser.nit:19286 */
   fra.me.REG[3] = NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19292 */
+  /* parser/parser.nit:19290 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19293 */
+  /* parser/parser.nit:19291 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19293);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19291);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52117,7 +52086,7 @@ void parser___ReduceAction533___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19298;
+  fra.me.line = 19296;
   fra.me.meth = LOCATE_parser___ReduceAction533___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52129,37 +52098,37 @@ void parser___ReduceAction533___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:19300 */
+  /* parser/parser.nit:19298 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19301 */
+  /* parser/parser.nit:19299 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19302 */
+  /* parser/parser.nit:19300 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19303 */
+  /* parser/parser.nit:19301 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19304 */
+  /* parser/parser.nit:19302 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19306 */
+  /* parser/parser.nit:19304 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19306);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19304);
   }
-  /* parser/parser.nit:19308 */
+  /* parser/parser.nit:19306 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19308);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19306);
   }
-  /* parser/parser.nit:19309 */
+  /* parser/parser.nit:19307 */
   fra.me.REG[3] = NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19313 */
+  /* parser/parser.nit:19311 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19314 */
+  /* parser/parser.nit:19312 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19314);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19312);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52174,7 +52143,7 @@ void parser___ReduceAction534___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19319;
+  fra.me.line = 19317;
   fra.me.meth = LOCATE_parser___ReduceAction534___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52186,37 +52155,37 @@ void parser___ReduceAction534___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:19321 */
+  /* parser/parser.nit:19319 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19322 */
+  /* parser/parser.nit:19320 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19323 */
+  /* parser/parser.nit:19321 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19324 */
+  /* parser/parser.nit:19322 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19325 */
+  /* parser/parser.nit:19323 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19327 */
+  /* parser/parser.nit:19325 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19327);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19325);
   }
-  /* parser/parser.nit:19329 */
+  /* parser/parser.nit:19327 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19329);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19327);
   }
-  /* parser/parser.nit:19330 */
+  /* parser/parser.nit:19328 */
   fra.me.REG[3] = NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19334 */
+  /* parser/parser.nit:19332 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19335 */
+  /* parser/parser.nit:19333 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19335);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19333);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52231,7 +52200,7 @@ void parser___ReduceAction535___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19340;
+  fra.me.line = 19338;
   fra.me.meth = LOCATE_parser___ReduceAction535___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52243,37 +52212,37 @@ void parser___ReduceAction535___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:19342 */
+  /* parser/parser.nit:19340 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19343 */
+  /* parser/parser.nit:19341 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19344 */
+  /* parser/parser.nit:19342 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19343 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19345 */
+  /* parser/parser.nit:19344 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19346 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19348 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19348);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19346);
   }
-  /* parser/parser.nit:19350 */
+  /* parser/parser.nit:19348 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19350);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19348);
   }
-  /* parser/parser.nit:19351 */
+  /* parser/parser.nit:19349 */
   fra.me.REG[3] = NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19355 */
+  /* parser/parser.nit:19353 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19356 */
+  /* parser/parser.nit:19354 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19356);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19354);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52288,7 +52257,7 @@ void parser___ReduceAction536___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19361;
+  fra.me.line = 19359;
   fra.me.meth = LOCATE_parser___ReduceAction536___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52300,37 +52269,37 @@ void parser___ReduceAction536___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:19363 */
+  /* parser/parser.nit:19361 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19364 */
+  /* parser/parser.nit:19362 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19365 */
+  /* parser/parser.nit:19363 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19366 */
+  /* parser/parser.nit:19364 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19367 */
+  /* parser/parser.nit:19365 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19369 */
+  /* parser/parser.nit:19367 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19369);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19367);
   }
-  /* parser/parser.nit:19371 */
+  /* parser/parser.nit:19369 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19371);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19369);
   }
-  /* parser/parser.nit:19372 */
+  /* parser/parser.nit:19370 */
   fra.me.REG[3] = NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19376 */
+  /* parser/parser.nit:19374 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19377 */
+  /* parser/parser.nit:19375 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19377);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19375);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52345,7 +52314,7 @@ void parser___ReduceAction537___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19382;
+  fra.me.line = 19380;
   fra.me.meth = LOCATE_parser___ReduceAction537___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52357,37 +52326,37 @@ void parser___ReduceAction537___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:19384 */
+  /* parser/parser.nit:19382 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19385 */
+  /* parser/parser.nit:19383 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19386 */
+  /* parser/parser.nit:19384 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19387 */
+  /* parser/parser.nit:19385 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19388 */
+  /* parser/parser.nit:19386 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19390 */
+  /* parser/parser.nit:19388 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19390);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19388);
   }
-  /* parser/parser.nit:19392 */
+  /* parser/parser.nit:19390 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19392);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19390);
   }
-  /* parser/parser.nit:19393 */
+  /* parser/parser.nit:19391 */
   fra.me.REG[3] = NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19397 */
+  /* parser/parser.nit:19395 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19398 */
+  /* parser/parser.nit:19396 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19398);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19396);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52402,7 +52371,7 @@ void parser___ReduceAction538___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19403;
+  fra.me.line = 19401;
   fra.me.meth = LOCATE_parser___ReduceAction538___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52414,37 +52383,37 @@ void parser___ReduceAction538___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:19405 */
+  /* parser/parser.nit:19403 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19406 */
+  /* parser/parser.nit:19404 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19407 */
+  /* parser/parser.nit:19405 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19408 */
+  /* parser/parser.nit:19406 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19409 */
+  /* parser/parser.nit:19407 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19411 */
+  /* parser/parser.nit:19409 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19411);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19409);
   }
-  /* parser/parser.nit:19413 */
+  /* parser/parser.nit:19411 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19413);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19411);
   }
-  /* parser/parser.nit:19414 */
+  /* parser/parser.nit:19412 */
   fra.me.REG[3] = NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19418 */
+  /* parser/parser.nit:19416 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19419 */
+  /* parser/parser.nit:19417 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19419);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19417);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52459,7 +52428,7 @@ void parser___ReduceAction539___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19424;
+  fra.me.line = 19422;
   fra.me.meth = LOCATE_parser___ReduceAction539___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52471,37 +52440,37 @@ void parser___ReduceAction539___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:19426 */
+  /* parser/parser.nit:19424 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19427 */
+  /* parser/parser.nit:19425 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19428 */
+  /* parser/parser.nit:19426 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19429 */
+  /* parser/parser.nit:19427 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19430 */
+  /* parser/parser.nit:19428 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19432 */
+  /* parser/parser.nit:19430 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19432);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19430);
   }
-  /* parser/parser.nit:19434 */
+  /* parser/parser.nit:19432 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19434);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19432);
   }
-  /* parser/parser.nit:19435 */
+  /* parser/parser.nit:19433 */
   fra.me.REG[3] = NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19439 */
+  /* parser/parser.nit:19437 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19440 */
+  /* parser/parser.nit:19438 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19440);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19438);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52516,7 +52485,7 @@ void parser___ReduceAction540___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19445;
+  fra.me.line = 19443;
   fra.me.meth = LOCATE_parser___ReduceAction540___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52528,37 +52497,37 @@ void parser___ReduceAction540___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:19447 */
+  /* parser/parser.nit:19445 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19448 */
+  /* parser/parser.nit:19446 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19449 */
+  /* parser/parser.nit:19447 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19450 */
+  /* parser/parser.nit:19448 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19451 */
+  /* parser/parser.nit:19449 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19453 */
+  /* parser/parser.nit:19451 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19453);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19451);
   }
-  /* parser/parser.nit:19455 */
+  /* parser/parser.nit:19453 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19455);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19453);
   }
-  /* parser/parser.nit:19456 */
+  /* parser/parser.nit:19454 */
   fra.me.REG[3] = NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19460 */
+  /* parser/parser.nit:19458 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19461 */
+  /* parser/parser.nit:19459 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19461);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19459);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52573,7 +52542,7 @@ void parser___ReduceAction541___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19466;
+  fra.me.line = 19464;
   fra.me.meth = LOCATE_parser___ReduceAction541___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52585,37 +52554,37 @@ void parser___ReduceAction541___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:19468 */
+  /* parser/parser.nit:19466 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19469 */
+  /* parser/parser.nit:19467 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19470 */
+  /* parser/parser.nit:19468 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19471 */
+  /* parser/parser.nit:19469 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19472 */
+  /* parser/parser.nit:19470 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19474 */
+  /* parser/parser.nit:19472 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19474);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19472);
   }
-  /* parser/parser.nit:19476 */
+  /* parser/parser.nit:19474 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19476);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19474);
   }
-  /* parser/parser.nit:19477 */
+  /* parser/parser.nit:19475 */
   fra.me.REG[3] = NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19481 */
+  /* parser/parser.nit:19479 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19482 */
+  /* parser/parser.nit:19480 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19482);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19480);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52630,7 +52599,7 @@ void parser___ReduceAction543___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19487;
+  fra.me.line = 19485;
   fra.me.meth = LOCATE_parser___ReduceAction543___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52642,37 +52611,37 @@ void parser___ReduceAction543___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:19489 */
+  /* parser/parser.nit:19487 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19490 */
+  /* parser/parser.nit:19488 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19491 */
+  /* parser/parser.nit:19489 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19492 */
+  /* parser/parser.nit:19490 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19493 */
+  /* parser/parser.nit:19491 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19495 */
+  /* parser/parser.nit:19493 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19495);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19493);
   }
-  /* parser/parser.nit:19497 */
+  /* parser/parser.nit:19495 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19497);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19495);
   }
-  /* parser/parser.nit:19498 */
+  /* parser/parser.nit:19496 */
   fra.me.REG[3] = NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19502 */
+  /* parser/parser.nit:19500 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19503 */
+  /* parser/parser.nit:19501 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19503);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19501);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52687,7 +52656,7 @@ void parser___ReduceAction544___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19508;
+  fra.me.line = 19506;
   fra.me.meth = LOCATE_parser___ReduceAction544___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52699,37 +52668,37 @@ void parser___ReduceAction544___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:19510 */
+  /* parser/parser.nit:19508 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19511 */
+  /* parser/parser.nit:19509 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19512 */
+  /* parser/parser.nit:19510 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19511 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19513 */
+  /* parser/parser.nit:19512 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19514 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19516 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19516);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19514);
   }
-  /* parser/parser.nit:19518 */
+  /* parser/parser.nit:19516 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19518);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19516);
   }
-  /* parser/parser.nit:19519 */
+  /* parser/parser.nit:19517 */
   fra.me.REG[3] = NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19523 */
+  /* parser/parser.nit:19521 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19524 */
+  /* parser/parser.nit:19522 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19524);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19522);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52744,7 +52713,7 @@ void parser___ReduceAction546___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19529;
+  fra.me.line = 19527;
   fra.me.meth = LOCATE_parser___ReduceAction546___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52756,37 +52725,37 @@ void parser___ReduceAction546___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:19531 */
+  /* parser/parser.nit:19529 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19532 */
+  /* parser/parser.nit:19530 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19533 */
+  /* parser/parser.nit:19531 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19532 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19534 */
+  /* parser/parser.nit:19533 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19535 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19537 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19537);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19535);
   }
-  /* parser/parser.nit:19539 */
+  /* parser/parser.nit:19537 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19539);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19537);
   }
-  /* parser/parser.nit:19540 */
+  /* parser/parser.nit:19538 */
   fra.me.REG[3] = NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19544 */
+  /* parser/parser.nit:19542 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19545 */
+  /* parser/parser.nit:19543 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19545);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19543);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52801,7 +52770,7 @@ void parser___ReduceAction547___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19550;
+  fra.me.line = 19548;
   fra.me.meth = LOCATE_parser___ReduceAction547___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52813,37 +52782,37 @@ void parser___ReduceAction547___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:19552 */
+  /* parser/parser.nit:19550 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19553 */
+  /* parser/parser.nit:19551 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19554 */
+  /* parser/parser.nit:19552 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19555 */
+  /* parser/parser.nit:19553 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19556 */
+  /* parser/parser.nit:19554 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19558 */
+  /* parser/parser.nit:19556 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19558);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19556);
   }
-  /* parser/parser.nit:19560 */
+  /* parser/parser.nit:19558 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19560);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19558);
   }
-  /* parser/parser.nit:19561 */
+  /* parser/parser.nit:19559 */
   fra.me.REG[3] = NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19565 */
+  /* parser/parser.nit:19563 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19566 */
+  /* parser/parser.nit:19564 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19566);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19564);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52858,7 +52827,7 @@ void parser___ReduceAction548___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19571;
+  fra.me.line = 19569;
   fra.me.meth = LOCATE_parser___ReduceAction548___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52870,37 +52839,37 @@ void parser___ReduceAction548___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:19573 */
+  /* parser/parser.nit:19571 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19574 */
+  /* parser/parser.nit:19572 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19575 */
+  /* parser/parser.nit:19573 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19576 */
+  /* parser/parser.nit:19574 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19577 */
+  /* parser/parser.nit:19575 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19579 */
+  /* parser/parser.nit:19577 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19579);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19577);
   }
-  /* parser/parser.nit:19581 */
+  /* parser/parser.nit:19579 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19581);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19579);
   }
-  /* parser/parser.nit:19582 */
+  /* parser/parser.nit:19580 */
   fra.me.REG[3] = NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19586 */
+  /* parser/parser.nit:19584 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19587 */
+  /* parser/parser.nit:19585 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19587);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19585);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52915,7 +52884,7 @@ void parser___ReduceAction550___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19592;
+  fra.me.line = 19590;
   fra.me.meth = LOCATE_parser___ReduceAction550___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52927,35 +52896,35 @@ void parser___ReduceAction550___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:19594 */
+  /* parser/parser.nit:19592 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19595 */
+  /* parser/parser.nit:19593 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19596 */
+  /* parser/parser.nit:19594 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19597 */
+  /* parser/parser.nit:19595 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19599 */
+  /* parser/parser.nit:19597 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast nullable TMinus*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19599);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19597);
   }
-  /* parser/parser.nit:19601 */
+  /* parser/parser.nit:19599 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19601);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19599);
   }
-  /* parser/parser.nit:19602 */
+  /* parser/parser.nit:19600 */
   fra.me.REG[3] = NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19606 */
+  /* parser/parser.nit:19604 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19607 */
+  /* parser/parser.nit:19605 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19607);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19605);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -52970,7 +52939,7 @@ void parser___ReduceAction551___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19612;
+  fra.me.line = 19610;
   fra.me.meth = LOCATE_parser___ReduceAction551___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -52982,35 +52951,35 @@ void parser___ReduceAction551___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:19614 */
+  /* parser/parser.nit:19612 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19615 */
+  /* parser/parser.nit:19613 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19616 */
+  /* parser/parser.nit:19614 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19617 */
+  /* parser/parser.nit:19615 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19619 */
+  /* parser/parser.nit:19617 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwonce, ID_parser___parser_nodes___TKwonce)) /*cast nullable TKwonce*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19619);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19617);
   }
-  /* parser/parser.nit:19621 */
+  /* parser/parser.nit:19619 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19621);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19619);
   }
-  /* parser/parser.nit:19622 */
+  /* parser/parser.nit:19620 */
   fra.me.REG[3] = NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19626 */
+  /* parser/parser.nit:19624 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19627 */
+  /* parser/parser.nit:19625 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19627);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19625);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53025,7 +52994,7 @@ void parser___ReduceAction553___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19632;
+  fra.me.line = 19630;
   fra.me.meth = LOCATE_parser___ReduceAction553___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -53038,43 +53007,43 @@ void parser___ReduceAction553___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:19634 */
+  /* parser/parser.nit:19632 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19635 */
+  /* parser/parser.nit:19633 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19636 */
+  /* parser/parser.nit:19634 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19637 */
+  /* parser/parser.nit:19635 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19638 */
+  /* parser/parser.nit:19636 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19640 */
+  /* parser/parser.nit:19638 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19640);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19638);
   }
-  /* parser/parser.nit:19642 */
+  /* parser/parser.nit:19640 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19642);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19640);
   }
-  /* parser/parser.nit:19644 */
+  /* parser/parser.nit:19642 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19644);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19642);
   }
-  /* parser/parser.nit:19645 */
+  /* parser/parser.nit:19643 */
   fra.me.REG[3] = NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:19651 */
+  /* parser/parser.nit:19649 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19652 */
+  /* parser/parser.nit:19650 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19652);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19650);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53089,7 +53058,7 @@ void parser___ReduceAction554___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19657;
+  fra.me.line = 19655;
   fra.me.meth = LOCATE_parser___ReduceAction554___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -53102,45 +53071,45 @@ void parser___ReduceAction554___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:19659 */
+  /* parser/parser.nit:19657 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19660 */
+  /* parser/parser.nit:19658 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19661 */
+  /* parser/parser.nit:19659 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19662 */
+  /* parser/parser.nit:19660 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19663 */
+  /* parser/parser.nit:19661 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19664 */
+  /* parser/parser.nit:19662 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19666 */
+  /* parser/parser.nit:19664 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19666);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19664);
   }
-  /* parser/parser.nit:19668 */
+  /* parser/parser.nit:19666 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19668);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19666);
   }
-  /* parser/parser.nit:19670 */
+  /* parser/parser.nit:19668 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19670);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19668);
   }
-  /* parser/parser.nit:19671 */
+  /* parser/parser.nit:19669 */
   fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19676 */
+  /* parser/parser.nit:19674 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19677 */
+  /* parser/parser.nit:19675 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19677);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19675);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53155,7 +53124,7 @@ void parser___ReduceAction555___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19682;
+  fra.me.line = 19680;
   fra.me.meth = LOCATE_parser___ReduceAction555___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -53168,35 +53137,35 @@ void parser___ReduceAction555___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:19684 */
+  /* parser/parser.nit:19682 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19685 */
+  /* parser/parser.nit:19683 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19686 */
+  /* parser/parser.nit:19684 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19688 */
+  /* parser/parser.nit:19686 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19688);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19686);
   }
-  /* parser/parser.nit:19689 */
+  /* parser/parser.nit:19687 */
   fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:19691 */
+  /* parser/parser.nit:19689 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19691);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19689);
   }
-  /* parser/parser.nit:19692 */
+  /* parser/parser.nit:19690 */
   fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:19697 */
+  /* parser/parser.nit:19695 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19698 */
+  /* parser/parser.nit:19696 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19698);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19696);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53211,7 +53180,7 @@ void parser___ReduceAction556___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19703;
+  fra.me.line = 19701;
   fra.me.meth = LOCATE_parser___ReduceAction556___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -53223,37 +53192,37 @@ void parser___ReduceAction556___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:19705 */
+  /* parser/parser.nit:19703 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19706 */
+  /* parser/parser.nit:19704 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19707 */
+  /* parser/parser.nit:19705 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19706 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19708 */
+  /* parser/parser.nit:19707 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19709 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19711 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19711);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19709);
   }
-  /* parser/parser.nit:19713 */
+  /* parser/parser.nit:19711 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19713);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19711);
   }
-  /* parser/parser.nit:19714 */
+  /* parser/parser.nit:19712 */
   fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19718 */
+  /* parser/parser.nit:19716 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19719 */
+  /* parser/parser.nit:19717 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19719);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19717);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53268,7 +53237,7 @@ void parser___ReduceAction557___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19724;
+  fra.me.line = 19722;
   fra.me.meth = LOCATE_parser___ReduceAction557___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -53280,27 +53249,27 @@ void parser___ReduceAction557___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:19726 */
+  /* parser/parser.nit:19724 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19727 */
+  /* parser/parser.nit:19725 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19728 */
+  /* parser/parser.nit:19726 */
   fra.me.REG[4] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:19730 */
+  /* parser/parser.nit:19728 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19730);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19728);
   }
-  /* parser/parser.nit:19731 */
+  /* parser/parser.nit:19729 */
   fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19735 */
+  /* parser/parser.nit:19733 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19736 */
+  /* parser/parser.nit:19734 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19736);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19734);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53315,7 +53284,7 @@ void parser___ReduceAction564___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19741;
+  fra.me.line = 19739;
   fra.me.meth = LOCATE_parser___ReduceAction564___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -53328,35 +53297,35 @@ void parser___ReduceAction564___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:19743 */
+  /* parser/parser.nit:19741 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19744 */
+  /* parser/parser.nit:19742 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19745 */
+  /* parser/parser.nit:19743 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19746 */
+  /* parser/parser.nit:19744 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:19748 */
+  /* parser/parser.nit:19746 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19748);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19746);
   }
-  /* parser/parser.nit:19750 */
+  /* parser/parser.nit:19748 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19750);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19748);
   }
-  /* parser/parser.nit:19751 */
+  /* parser/parser.nit:19749 */
   fra.me.REG[5] = NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser.nit:19756 */
+  /* parser/parser.nit:19754 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:19757 */
+  /* parser/parser.nit:19755 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19757);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19755);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53371,7 +53340,7 @@ void parser___ReduceAction565___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19762;
+  fra.me.line = 19760;
   fra.me.meth = LOCATE_parser___ReduceAction565___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -53385,55 +53354,55 @@ void parser___ReduceAction565___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:19764 */
+  /* parser/parser.nit:19762 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19765 */
+  /* parser/parser.nit:19763 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19766 */
+  /* parser/parser.nit:19764 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19765 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19766 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19767 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19768 */
-  fra.me.REG[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:19769 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19770 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19771 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19773 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19773);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19771);
   }
-  /* parser/parser.nit:19775 */
+  /* parser/parser.nit:19773 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19775);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19773);
   }
-  /* parser/parser.nit:19777 */
+  /* parser/parser.nit:19775 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19777);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19775);
   }
-  /* parser/parser.nit:19779 */
+  /* parser/parser.nit:19777 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19779);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19777);
   }
-  /* parser/parser.nit:19780 */
+  /* parser/parser.nit:19778 */
   fra.me.REG[3] = NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19786 */
+  /* parser/parser.nit:19784 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19787 */
+  /* parser/parser.nit:19785 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19787);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19785);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53448,7 +53417,7 @@ void parser___ReduceAction566___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19792;
+  fra.me.line = 19790;
   fra.me.meth = LOCATE_parser___ReduceAction566___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -53462,59 +53431,59 @@ void parser___ReduceAction566___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:19794 */
+  /* parser/parser.nit:19792 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19795 */
+  /* parser/parser.nit:19793 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19796 */
+  /* parser/parser.nit:19794 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19797 */
+  /* parser/parser.nit:19795 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19796 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19797 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19798 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19799 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19800 */
-  fra.me.REG[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:19801 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19802 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19803 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19805 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19805);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19803);
   }
-  /* parser/parser.nit:19807 */
+  /* parser/parser.nit:19805 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19807);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19805);
   }
-  /* parser/parser.nit:19809 */
+  /* parser/parser.nit:19807 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19809);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19807);
   }
-  /* parser/parser.nit:19811 */
+  /* parser/parser.nit:19809 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19811);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19809);
   }
-  /* parser/parser.nit:19812 */
+  /* parser/parser.nit:19810 */
   fra.me.REG[3] = NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19819 */
+  /* parser/parser.nit:19817 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19820 */
+  /* parser/parser.nit:19818 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19820);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19818);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53529,7 +53498,7 @@ void parser___ReduceAction567___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19825;
+  fra.me.line = 19823;
   fra.me.meth = LOCATE_parser___ReduceAction567___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -53544,67 +53513,67 @@ void parser___ReduceAction567___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:19827 */
+  /* parser/parser.nit:19825 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19828 */
+  /* parser/parser.nit:19826 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19829 */
+  /* parser/parser.nit:19827 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19830 */
+  /* parser/parser.nit:19828 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19831 */
+  /* parser/parser.nit:19829 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19830 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19831 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19832 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19833 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19834 */
-  fra.me.REG[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:19835 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19836 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19837 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19839 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19839);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19837);
   }
-  /* parser/parser.nit:19841 */
+  /* parser/parser.nit:19839 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19841);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19839);
   }
-  /* parser/parser.nit:19843 */
+  /* parser/parser.nit:19841 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19843);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19841);
   }
-  /* parser/parser.nit:19845 */
+  /* parser/parser.nit:19843 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19845);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19843);
   }
-  /* parser/parser.nit:19847 */
+  /* parser/parser.nit:19845 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19847);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19845);
   }
-  /* parser/parser.nit:19848 */
+  /* parser/parser.nit:19846 */
   fra.me.REG[3] = NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19855 */
+  /* parser/parser.nit:19853 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19856 */
+  /* parser/parser.nit:19854 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19856);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19854);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53619,7 +53588,7 @@ void parser___ReduceAction568___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19861;
+  fra.me.line = 19859;
   fra.me.meth = LOCATE_parser___ReduceAction568___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -53633,59 +53602,59 @@ void parser___ReduceAction568___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:19863 */
+  /* parser/parser.nit:19861 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19864 */
+  /* parser/parser.nit:19862 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19865 */
+  /* parser/parser.nit:19863 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19866 */
+  /* parser/parser.nit:19864 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19865 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19866 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19867 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19868 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19869 */
-  fra.me.REG[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:19870 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19871 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19872 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19874 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19874);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19872);
   }
-  /* parser/parser.nit:19876 */
+  /* parser/parser.nit:19874 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19876);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19874);
   }
-  /* parser/parser.nit:19878 */
+  /* parser/parser.nit:19876 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19878);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19876);
   }
-  /* parser/parser.nit:19880 */
+  /* parser/parser.nit:19878 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19880);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19878);
   }
-  /* parser/parser.nit:19881 */
+  /* parser/parser.nit:19879 */
   fra.me.REG[3] = NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19888 */
+  /* parser/parser.nit:19886 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19889 */
+  /* parser/parser.nit:19887 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19889);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19887);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53700,7 +53669,7 @@ void parser___ReduceAction569___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19894;
+  fra.me.line = 19892;
   fra.me.meth = LOCATE_parser___ReduceAction569___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -53715,67 +53684,67 @@ void parser___ReduceAction569___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:19896 */
+  /* parser/parser.nit:19894 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19897 */
+  /* parser/parser.nit:19895 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19898 */
+  /* parser/parser.nit:19896 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19899 */
+  /* parser/parser.nit:19897 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19900 */
+  /* parser/parser.nit:19898 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19899 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:19900 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19901 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19902 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19903 */
-  fra.me.REG[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:19904 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19905 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:19906 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19908 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19908);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19906);
   }
-  /* parser/parser.nit:19910 */
+  /* parser/parser.nit:19908 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19910);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19908);
   }
-  /* parser/parser.nit:19912 */
+  /* parser/parser.nit:19910 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19912);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19910);
   }
-  /* parser/parser.nit:19914 */
+  /* parser/parser.nit:19912 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19914);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19912);
   }
-  /* parser/parser.nit:19916 */
+  /* parser/parser.nit:19914 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19916);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19914);
   }
-  /* parser/parser.nit:19917 */
+  /* parser/parser.nit:19915 */
   fra.me.REG[3] = NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19924 */
+  /* parser/parser.nit:19922 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19925 */
+  /* parser/parser.nit:19923 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19925);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19923);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53790,7 +53759,7 @@ void parser___ReduceAction570___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19930;
+  fra.me.line = 19928;
   fra.me.meth = LOCATE_parser___ReduceAction570___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -53801,25 +53770,25 @@ void parser___ReduceAction570___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:19932 */
+  /* parser/parser.nit:19930 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19933 */
+  /* parser/parser.nit:19931 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19935 */
+  /* parser/parser.nit:19933 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19935);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19933);
   }
-  /* parser/parser.nit:19936 */
+  /* parser/parser.nit:19934 */
   fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19940 */
+  /* parser/parser.nit:19938 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19941 */
+  /* parser/parser.nit:19939 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19941);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19939);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53834,7 +53803,7 @@ void parser___ReduceAction571___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19946;
+  fra.me.line = 19944;
   fra.me.meth = LOCATE_parser___ReduceAction571___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -53846,33 +53815,33 @@ void parser___ReduceAction571___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:19948 */
+  /* parser/parser.nit:19946 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19949 */
+  /* parser/parser.nit:19947 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19950 */
+  /* parser/parser.nit:19948 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19952 */
+  /* parser/parser.nit:19950 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19952);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19950);
   }
-  /* parser/parser.nit:19954 */
+  /* parser/parser.nit:19952 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19954);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19952);
   }
-  /* parser/parser.nit:19955 */
+  /* parser/parser.nit:19953 */
   fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19959 */
+  /* parser/parser.nit:19957 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19960 */
+  /* parser/parser.nit:19958 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19960);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19958);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53887,7 +53856,7 @@ void parser___ReduceAction572___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19965;
+  fra.me.line = 19963;
   fra.me.meth = LOCATE_parser___ReduceAction572___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -53898,25 +53867,25 @@ void parser___ReduceAction572___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:19967 */
+  /* parser/parser.nit:19965 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19968 */
+  /* parser/parser.nit:19966 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19970 */
+  /* parser/parser.nit:19968 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast nullable TKwself*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19970);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19968);
   }
-  /* parser/parser.nit:19971 */
+  /* parser/parser.nit:19969 */
   fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19975 */
+  /* parser/parser.nit:19973 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19976 */
+  /* parser/parser.nit:19974 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19976);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19974);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53931,7 +53900,7 @@ void parser___ReduceAction573___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 19981;
+  fra.me.line = 19979;
   fra.me.meth = LOCATE_parser___ReduceAction573___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -53943,33 +53912,33 @@ void parser___ReduceAction573___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:19983 */
+  /* parser/parser.nit:19981 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19984 */
+  /* parser/parser.nit:19982 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19985 */
+  /* parser/parser.nit:19983 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19987 */
+  /* parser/parser.nit:19985 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast nullable TKwself*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19985);
   }
-  /* parser/parser.nit:19989 */
+  /* parser/parser.nit:19987 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 19989);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 19987);
   }
-  /* parser/parser.nit:19990 */
+  /* parser/parser.nit:19988 */
   fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19994 */
+  /* parser/parser.nit:19992 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19995 */
+  /* parser/parser.nit:19993 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19995);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19993);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -53984,7 +53953,7 @@ void parser___ReduceAction574___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20000;
+  fra.me.line = 19998;
   fra.me.meth = LOCATE_parser___ReduceAction574___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -53995,25 +53964,25 @@ void parser___ReduceAction574___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:20002 */
+  /* parser/parser.nit:20000 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20003 */
+  /* parser/parser.nit:20001 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20005 */
+  /* parser/parser.nit:20003 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwtrue, ID_parser___parser_nodes___TKwtrue)) /*cast nullable TKwtrue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20005);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20003);
   }
-  /* parser/parser.nit:20006 */
+  /* parser/parser.nit:20004 */
   fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20010 */
+  /* parser/parser.nit:20008 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20011 */
+  /* parser/parser.nit:20009 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20011);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20009);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54028,7 +53997,7 @@ void parser___ReduceAction575___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20016;
+  fra.me.line = 20014;
   fra.me.meth = LOCATE_parser___ReduceAction575___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54040,33 +54009,33 @@ void parser___ReduceAction575___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:20018 */
+  /* parser/parser.nit:20016 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20019 */
+  /* parser/parser.nit:20017 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20020 */
+  /* parser/parser.nit:20018 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20022 */
+  /* parser/parser.nit:20020 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwtrue, ID_parser___parser_nodes___TKwtrue)) /*cast nullable TKwtrue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20022);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20020);
   }
-  /* parser/parser.nit:20024 */
+  /* parser/parser.nit:20022 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20024);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20022);
   }
-  /* parser/parser.nit:20025 */
+  /* parser/parser.nit:20023 */
   fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20029 */
+  /* parser/parser.nit:20027 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20030 */
+  /* parser/parser.nit:20028 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20030);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20028);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54081,7 +54050,7 @@ void parser___ReduceAction576___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20035;
+  fra.me.line = 20033;
   fra.me.meth = LOCATE_parser___ReduceAction576___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54092,25 +54061,25 @@ void parser___ReduceAction576___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:20037 */
+  /* parser/parser.nit:20035 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20038 */
+  /* parser/parser.nit:20036 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20040 */
+  /* parser/parser.nit:20038 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwfalse, ID_parser___parser_nodes___TKwfalse)) /*cast nullable TKwfalse*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20040);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20038);
   }
-  /* parser/parser.nit:20041 */
+  /* parser/parser.nit:20039 */
   fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20045 */
+  /* parser/parser.nit:20043 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20046 */
+  /* parser/parser.nit:20044 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20046);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20044);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54125,7 +54094,7 @@ void parser___ReduceAction577___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20051;
+  fra.me.line = 20049;
   fra.me.meth = LOCATE_parser___ReduceAction577___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54137,33 +54106,33 @@ void parser___ReduceAction577___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:20053 */
+  /* parser/parser.nit:20051 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20054 */
+  /* parser/parser.nit:20052 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20055 */
+  /* parser/parser.nit:20053 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20057 */
+  /* parser/parser.nit:20055 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwfalse, ID_parser___parser_nodes___TKwfalse)) /*cast nullable TKwfalse*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20057);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20055);
   }
-  /* parser/parser.nit:20059 */
+  /* parser/parser.nit:20057 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20059);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20057);
   }
-  /* parser/parser.nit:20060 */
+  /* parser/parser.nit:20058 */
   fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20064 */
+  /* parser/parser.nit:20062 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20065 */
+  /* parser/parser.nit:20063 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20065);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20063);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54178,7 +54147,7 @@ void parser___ReduceAction578___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20070;
+  fra.me.line = 20068;
   fra.me.meth = LOCATE_parser___ReduceAction578___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54189,25 +54158,25 @@ void parser___ReduceAction578___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:20072 */
+  /* parser/parser.nit:20070 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20073 */
+  /* parser/parser.nit:20071 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20075 */
+  /* parser/parser.nit:20073 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20075);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20073);
   }
-  /* parser/parser.nit:20076 */
+  /* parser/parser.nit:20074 */
   fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20080 */
+  /* parser/parser.nit:20078 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20081 */
+  /* parser/parser.nit:20079 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20081);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20079);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54222,7 +54191,7 @@ void parser___ReduceAction579___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20086;
+  fra.me.line = 20084;
   fra.me.meth = LOCATE_parser___ReduceAction579___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54234,33 +54203,33 @@ void parser___ReduceAction579___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:20088 */
+  /* parser/parser.nit:20086 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20089 */
+  /* parser/parser.nit:20087 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20090 */
+  /* parser/parser.nit:20088 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20092 */
+  /* parser/parser.nit:20090 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20092);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20090);
   }
-  /* parser/parser.nit:20094 */
+  /* parser/parser.nit:20092 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20094);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20092);
   }
-  /* parser/parser.nit:20095 */
+  /* parser/parser.nit:20093 */
   fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20099 */
+  /* parser/parser.nit:20097 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20100 */
+  /* parser/parser.nit:20098 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20100);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20098);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54275,7 +54244,7 @@ void parser___ReduceAction580___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20105;
+  fra.me.line = 20103;
   fra.me.meth = LOCATE_parser___ReduceAction580___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54286,25 +54255,25 @@ void parser___ReduceAction580___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:20107 */
+  /* parser/parser.nit:20105 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20108 */
+  /* parser/parser.nit:20106 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20110 */
+  /* parser/parser.nit:20108 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TNumber, ID_parser___parser_nodes___TNumber)) /*cast nullable TNumber*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20110);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20108);
   }
-  /* parser/parser.nit:20111 */
+  /* parser/parser.nit:20109 */
   fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20115 */
+  /* parser/parser.nit:20113 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20116 */
+  /* parser/parser.nit:20114 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20116);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20114);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54319,7 +54288,7 @@ void parser___ReduceAction581___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20121;
+  fra.me.line = 20119;
   fra.me.meth = LOCATE_parser___ReduceAction581___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54331,33 +54300,33 @@ void parser___ReduceAction581___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:20123 */
+  /* parser/parser.nit:20121 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20124 */
+  /* parser/parser.nit:20122 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20125 */
+  /* parser/parser.nit:20123 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20127 */
+  /* parser/parser.nit:20125 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TNumber, ID_parser___parser_nodes___TNumber)) /*cast nullable TNumber*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20127);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20125);
   }
-  /* parser/parser.nit:20129 */
+  /* parser/parser.nit:20127 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20129);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20127);
   }
-  /* parser/parser.nit:20130 */
+  /* parser/parser.nit:20128 */
   fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20134 */
+  /* parser/parser.nit:20132 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20135 */
+  /* parser/parser.nit:20133 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20135);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20133);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54372,7 +54341,7 @@ void parser___ReduceAction582___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20140;
+  fra.me.line = 20138;
   fra.me.meth = LOCATE_parser___ReduceAction582___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54383,25 +54352,25 @@ void parser___ReduceAction582___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:20142 */
+  /* parser/parser.nit:20140 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20143 */
+  /* parser/parser.nit:20141 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20145 */
+  /* parser/parser.nit:20143 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TFloat, ID_parser___parser_nodes___TFloat)) /*cast nullable TFloat*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20145);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20143);
   }
-  /* parser/parser.nit:20146 */
+  /* parser/parser.nit:20144 */
   fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20150 */
+  /* parser/parser.nit:20148 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20151 */
+  /* parser/parser.nit:20149 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20151);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20149);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54416,7 +54385,7 @@ void parser___ReduceAction583___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20156;
+  fra.me.line = 20154;
   fra.me.meth = LOCATE_parser___ReduceAction583___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54428,33 +54397,33 @@ void parser___ReduceAction583___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:20158 */
+  /* parser/parser.nit:20156 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20159 */
+  /* parser/parser.nit:20157 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20160 */
+  /* parser/parser.nit:20158 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20162 */
+  /* parser/parser.nit:20160 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TFloat, ID_parser___parser_nodes___TFloat)) /*cast nullable TFloat*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20162);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20160);
   }
-  /* parser/parser.nit:20164 */
+  /* parser/parser.nit:20162 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20164);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20162);
   }
-  /* parser/parser.nit:20165 */
+  /* parser/parser.nit:20163 */
   fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20169 */
+  /* parser/parser.nit:20167 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20170 */
+  /* parser/parser.nit:20168 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20170);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20168);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54469,7 +54438,7 @@ void parser___ReduceAction584___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20175;
+  fra.me.line = 20173;
   fra.me.meth = LOCATE_parser___ReduceAction584___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54480,25 +54449,25 @@ void parser___ReduceAction584___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:20177 */
+  /* parser/parser.nit:20175 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20178 */
+  /* parser/parser.nit:20176 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20180 */
+  /* parser/parser.nit:20178 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TChar, ID_parser___parser_nodes___TChar)) /*cast nullable TChar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20180);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20178);
   }
-  /* parser/parser.nit:20181 */
+  /* parser/parser.nit:20179 */
   fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20185 */
+  /* parser/parser.nit:20183 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20186 */
+  /* parser/parser.nit:20184 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20186);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20184);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54513,7 +54482,7 @@ void parser___ReduceAction585___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20191;
+  fra.me.line = 20189;
   fra.me.meth = LOCATE_parser___ReduceAction585___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54525,33 +54494,33 @@ void parser___ReduceAction585___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:20193 */
+  /* parser/parser.nit:20191 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20194 */
+  /* parser/parser.nit:20192 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20195 */
+  /* parser/parser.nit:20193 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20197 */
+  /* parser/parser.nit:20195 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TChar, ID_parser___parser_nodes___TChar)) /*cast nullable TChar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20197);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20195);
   }
-  /* parser/parser.nit:20199 */
+  /* parser/parser.nit:20197 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20199);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20197);
   }
-  /* parser/parser.nit:20200 */
+  /* parser/parser.nit:20198 */
   fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20204 */
+  /* parser/parser.nit:20202 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20205 */
+  /* parser/parser.nit:20203 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20205);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20203);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54566,7 +54535,7 @@ void parser___ReduceAction586___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20210;
+  fra.me.line = 20208;
   fra.me.meth = LOCATE_parser___ReduceAction586___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -54577,25 +54546,25 @@ void parser___ReduceAction586___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:20212 */
+  /* parser/parser.nit:20210 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20213 */
+  /* parser/parser.nit:20211 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20215 */
+  /* parser/parser.nit:20213 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20215);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20213);
   }
-  /* parser/parser.nit:20216 */
+  /* parser/parser.nit:20214 */
   fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20220 */
+  /* parser/parser.nit:20218 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20221 */
+  /* parser/parser.nit:20219 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20221);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20219);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54610,7 +54579,7 @@ void parser___ReduceAction587___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20226;
+  fra.me.line = 20224;
   fra.me.meth = LOCATE_parser___ReduceAction587___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -54622,33 +54591,33 @@ void parser___ReduceAction587___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:20228 */
+  /* parser/parser.nit:20226 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20229 */
+  /* parser/parser.nit:20227 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20230 */
+  /* parser/parser.nit:20228 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20232 */
+  /* parser/parser.nit:20230 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20232);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20230);
   }
-  /* parser/parser.nit:20234 */
+  /* parser/parser.nit:20232 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20234);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20232);
   }
-  /* parser/parser.nit:20235 */
+  /* parser/parser.nit:20233 */
   fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20239 */
+  /* parser/parser.nit:20237 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20240 */
+  /* parser/parser.nit:20238 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20240);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20238);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54663,7 +54632,7 @@ void parser___ReduceAction589___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20245;
+  fra.me.line = 20243;
   fra.me.meth = LOCATE_parser___ReduceAction589___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -54676,41 +54645,41 @@ void parser___ReduceAction589___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:20247 */
+  /* parser/parser.nit:20245 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20248 */
+  /* parser/parser.nit:20246 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20249 */
+  /* parser/parser.nit:20247 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20250 */
+  /* parser/parser.nit:20248 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20252 */
+  /* parser/parser.nit:20250 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20252);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20250);
   }
-  /* parser/parser.nit:20254 */
+  /* parser/parser.nit:20252 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20254);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20252);
   }
-  /* parser/parser.nit:20256 */
+  /* parser/parser.nit:20254 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20256);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20254);
   }
-  /* parser/parser.nit:20257 */
+  /* parser/parser.nit:20255 */
   fra.me.REG[3] = NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20263 */
+  /* parser/parser.nit:20261 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20264 */
+  /* parser/parser.nit:20262 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20264);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20262);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54725,7 +54694,7 @@ void parser___ReduceAction590___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20269;
+  fra.me.line = 20267;
   fra.me.meth = LOCATE_parser___ReduceAction590___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -54739,49 +54708,49 @@ void parser___ReduceAction590___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:20271 */
+  /* parser/parser.nit:20269 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20272 */
+  /* parser/parser.nit:20270 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20273 */
+  /* parser/parser.nit:20271 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20274 */
+  /* parser/parser.nit:20272 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20275 */
+  /* parser/parser.nit:20273 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20277 */
+  /* parser/parser.nit:20275 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20277);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20275);
   }
-  /* parser/parser.nit:20279 */
+  /* parser/parser.nit:20277 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20279);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20277);
   }
-  /* parser/parser.nit:20281 */
+  /* parser/parser.nit:20279 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20281);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20279);
   }
-  /* parser/parser.nit:20283 */
+  /* parser/parser.nit:20281 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20283);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20281);
   }
-  /* parser/parser.nit:20284 */
+  /* parser/parser.nit:20282 */
   fra.me.REG[3] = NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20290 */
+  /* parser/parser.nit:20288 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20291 */
+  /* parser/parser.nit:20289 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20291);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20289);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54796,7 +54765,7 @@ void parser___ReduceAction591___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20296;
+  fra.me.line = 20294;
   fra.me.meth = LOCATE_parser___ReduceAction591___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -54811,67 +54780,67 @@ void parser___ReduceAction591___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:20298 */
+  /* parser/parser.nit:20296 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20299 */
+  /* parser/parser.nit:20297 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20300 */
+  /* parser/parser.nit:20298 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20301 */
+  /* parser/parser.nit:20299 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20302 */
+  /* parser/parser.nit:20300 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20303 */
+  /* parser/parser.nit:20301 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20304 */
+  /* parser/parser.nit:20302 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20305 */
+  /* parser/parser.nit:20303 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20306 */
+  /* parser/parser.nit:20304 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20307 */
+  /* parser/parser.nit:20305 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20308 */
+  /* parser/parser.nit:20306 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20310 */
+  /* parser/parser.nit:20308 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20310);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20308);
   }
-  /* parser/parser.nit:20312 */
+  /* parser/parser.nit:20310 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20312);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20310);
   }
-  /* parser/parser.nit:20314 */
+  /* parser/parser.nit:20312 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20314);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20312);
   }
-  /* parser/parser.nit:20316 */
+  /* parser/parser.nit:20314 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20316);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20314);
   }
-  /* parser/parser.nit:20318 */
+  /* parser/parser.nit:20316 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20318);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20316);
   }
-  /* parser/parser.nit:20319 */
+  /* parser/parser.nit:20317 */
   fra.me.REG[3] = NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20326 */
+  /* parser/parser.nit:20324 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20327 */
+  /* parser/parser.nit:20325 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20327);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20325);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54886,7 +54855,7 @@ void parser___ReduceAction592___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20332;
+  fra.me.line = 20330;
   fra.me.meth = LOCATE_parser___ReduceAction592___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -54902,77 +54871,77 @@ void parser___ReduceAction592___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:20334 */
+  /* parser/parser.nit:20332 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20335 */
+  /* parser/parser.nit:20333 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20336 */
+  /* parser/parser.nit:20334 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20337 */
+  /* parser/parser.nit:20335 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20338 */
+  /* parser/parser.nit:20336 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20339 */
+  /* parser/parser.nit:20337 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20340 */
+  /* parser/parser.nit:20338 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20341 */
+  /* parser/parser.nit:20339 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20342 */
+  /* parser/parser.nit:20340 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20343 */
+  /* parser/parser.nit:20341 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20344 */
+  /* parser/parser.nit:20342 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20345 */
+  /* parser/parser.nit:20343 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20346 */
+  /* parser/parser.nit:20344 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20348 */
+  /* parser/parser.nit:20346 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20346);
+  }
+  /* parser/parser.nit:20348 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 20348);
   }
   /* parser/parser.nit:20350 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 20350);
   }
   /* parser/parser.nit:20352 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 20352);
   }
   /* parser/parser.nit:20354 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 20354);
   }
   /* parser/parser.nit:20356 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20356);
-  }
-  /* parser/parser.nit:20358 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20358);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20356);
   }
-  /* parser/parser.nit:20359 */
+  /* parser/parser.nit:20357 */
   fra.me.REG[3] = NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20367 */
+  /* parser/parser.nit:20365 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20368 */
+  /* parser/parser.nit:20366 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20368);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20366);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -54988,7 +54957,7 @@ void parser___ReduceAction593___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20373;
+  fra.me.line = 20371;
   fra.me.meth = LOCATE_parser___ReduceAction593___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -55001,30 +54970,30 @@ void parser___ReduceAction593___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:20375 */
+  /* parser/parser.nit:20373 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20376 */
+  /* parser/parser.nit:20374 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20377 */
+  /* parser/parser.nit:20375 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20378 */
+  /* parser/parser.nit:20376 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20380 */
+  /* parser/parser.nit:20378 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20380);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20378);
   }
-  /* parser/parser.nit:20382 */
+  /* parser/parser.nit:20380 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20382);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20380);
   }
-  /* parser/parser.nit:20383 */
+  /* parser/parser.nit:20381 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:20384 */
+  /* parser/parser.nit:20382 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55039,18 +55008,18 @@ void parser___ReduceAction593___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20385 */
+    /* parser/parser.nit:20383 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:20387 */
+  /* parser/parser.nit:20385 */
   fra.me.REG[5] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:20391 */
+  /* parser/parser.nit:20389 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20392 */
+  /* parser/parser.nit:20390 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20392);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20390);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55066,7 +55035,7 @@ void parser___ReduceAction594___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20397;
+  fra.me.line = 20395;
   fra.me.meth = LOCATE_parser___ReduceAction594___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -55080,41 +55049,41 @@ void parser___ReduceAction594___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:20399 */
+  /* parser/parser.nit:20397 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20400 */
+  /* parser/parser.nit:20398 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20401 */
+  /* parser/parser.nit:20399 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20402 */
+  /* parser/parser.nit:20400 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20403 */
+  /* parser/parser.nit:20401 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20405 */
+  /* parser/parser.nit:20403 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20405);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20403);
   }
-  /* parser/parser.nit:20407 */
+  /* parser/parser.nit:20405 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20407);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20405);
   }
-  /* parser/parser.nit:20409 */
+  /* parser/parser.nit:20407 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20409);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20407);
   }
-  /* parser/parser.nit:20410 */
+  /* parser/parser.nit:20408 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:20411 */
+  /* parser/parser.nit:20409 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:20412 */
+  /* parser/parser.nit:20410 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55129,18 +55098,18 @@ void parser___ReduceAction594___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20413 */
+    /* parser/parser.nit:20411 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* parser/parser.nit:20415 */
+  /* parser/parser.nit:20413 */
   fra.me.REG[6] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:20419 */
+  /* parser/parser.nit:20417 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:20420 */
+  /* parser/parser.nit:20418 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20420);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20418);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55156,7 +55125,7 @@ void parser___ReduceAction595___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20425;
+  fra.me.line = 20423;
   fra.me.meth = LOCATE_parser___ReduceAction595___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -55170,32 +55139,32 @@ void parser___ReduceAction595___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:20427 */
+  /* parser/parser.nit:20425 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20428 */
+  /* parser/parser.nit:20426 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20429 */
+  /* parser/parser.nit:20427 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20430 */
+  /* parser/parser.nit:20428 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20431 */
+  /* parser/parser.nit:20429 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20433 */
+  /* parser/parser.nit:20431 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20433);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20431);
   }
-  /* parser/parser.nit:20435 */
+  /* parser/parser.nit:20433 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20435);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20433);
   }
-  /* parser/parser.nit:20436 */
+  /* parser/parser.nit:20434 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* parser/parser.nit:20437 */
+  /* parser/parser.nit:20435 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55210,24 +55179,24 @@ void parser___ReduceAction595___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20438 */
+    /* parser/parser.nit:20436 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
   }
-  /* parser/parser.nit:20441 */
+  /* parser/parser.nit:20439 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20441);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20439);
   }
-  /* parser/parser.nit:20442 */
+  /* parser/parser.nit:20440 */
   fra.me.REG[3] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:20446 */
+  /* parser/parser.nit:20444 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20447 */
+  /* parser/parser.nit:20445 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20447);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20445);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55243,7 +55212,7 @@ void parser___ReduceAction596___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20452;
+  fra.me.line = 20450;
   fra.me.meth = LOCATE_parser___ReduceAction596___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -55258,43 +55227,43 @@ void parser___ReduceAction596___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:20454 */
+  /* parser/parser.nit:20452 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20455 */
+  /* parser/parser.nit:20453 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20456 */
+  /* parser/parser.nit:20454 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20457 */
+  /* parser/parser.nit:20455 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20458 */
+  /* parser/parser.nit:20456 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20459 */
+  /* parser/parser.nit:20457 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20461 */
+  /* parser/parser.nit:20459 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20461);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20459);
   }
-  /* parser/parser.nit:20463 */
+  /* parser/parser.nit:20461 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20463);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20461);
   }
-  /* parser/parser.nit:20465 */
+  /* parser/parser.nit:20463 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20465);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20463);
   }
-  /* parser/parser.nit:20466 */
+  /* parser/parser.nit:20464 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* parser/parser.nit:20467 */
+  /* parser/parser.nit:20465 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* parser/parser.nit:20468 */
+  /* parser/parser.nit:20466 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55309,24 +55278,24 @@ void parser___ReduceAction596___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20469 */
+    /* parser/parser.nit:20467 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
   }
-  /* parser/parser.nit:20472 */
+  /* parser/parser.nit:20470 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20472);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20470);
   }
-  /* parser/parser.nit:20473 */
+  /* parser/parser.nit:20471 */
   fra.me.REG[3] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[7], fra.me.REG[3]);
-  /* parser/parser.nit:20477 */
+  /* parser/parser.nit:20475 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20478 */
+  /* parser/parser.nit:20476 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20478);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20476);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55342,7 +55311,7 @@ void parser___ReduceAction597___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20483;
+  fra.me.line = 20481;
   fra.me.meth = LOCATE_parser___ReduceAction597___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -55355,19 +55324,19 @@ void parser___ReduceAction597___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:20485 */
+  /* parser/parser.nit:20483 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20486 */
+  /* parser/parser.nit:20484 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20487 */
+  /* parser/parser.nit:20485 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20488 */
+  /* parser/parser.nit:20486 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20489 */
+  /* parser/parser.nit:20487 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20490 */
+  /* parser/parser.nit:20488 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20493 */
+  /* parser/parser.nit:20491 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55382,10 +55351,10 @@ void parser___ReduceAction597___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20494 */
+    /* parser/parser.nit:20492 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:20496 */
+  /* parser/parser.nit:20494 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55400,16 +55369,16 @@ void parser___ReduceAction597___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20497 */
+    /* parser/parser.nit:20495 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:20499 */
+  /* parser/parser.nit:20497 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20500 */
+  /* parser/parser.nit:20498 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20500);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20498);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55424,7 +55393,7 @@ void parser___ReduceAction598___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20505;
+  fra.me.line = 20503;
   fra.me.meth = LOCATE_parser___ReduceAction598___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -55435,25 +55404,25 @@ void parser___ReduceAction598___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:20507 */
+  /* parser/parser.nit:20505 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20508 */
+  /* parser/parser.nit:20506 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20510 */
+  /* parser/parser.nit:20508 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStartString, ID_parser___parser_nodes___TStartString)) /*cast nullable TStartString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20510);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20508);
   }
-  /* parser/parser.nit:20511 */
+  /* parser/parser.nit:20509 */
   fra.me.REG[3] = NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[3]);
-  /* parser/parser.nit:20514 */
+  /* parser/parser.nit:20512 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20515 */
+  /* parser/parser.nit:20513 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20515);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20513);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55468,7 +55437,7 @@ void parser___ReduceAction600___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20520;
+  fra.me.line = 20518;
   fra.me.meth = LOCATE_parser___ReduceAction600___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -55479,25 +55448,25 @@ void parser___ReduceAction600___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:20522 */
+  /* parser/parser.nit:20520 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20523 */
+  /* parser/parser.nit:20521 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20525 */
+  /* parser/parser.nit:20523 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMidString, ID_parser___parser_nodes___TMidString)) /*cast nullable TMidString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20525);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20523);
   }
-  /* parser/parser.nit:20526 */
+  /* parser/parser.nit:20524 */
   fra.me.REG[3] = NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[3]);
-  /* parser/parser.nit:20529 */
+  /* parser/parser.nit:20527 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20530 */
+  /* parser/parser.nit:20528 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20530);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20528);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55512,7 +55481,7 @@ void parser___ReduceAction601___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20535;
+  fra.me.line = 20533;
   fra.me.meth = LOCATE_parser___ReduceAction601___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -55523,25 +55492,25 @@ void parser___ReduceAction601___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:20537 */
+  /* parser/parser.nit:20535 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20538 */
+  /* parser/parser.nit:20536 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20540 */
+  /* parser/parser.nit:20538 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TEndString, ID_parser___parser_nodes___TEndString)) /*cast nullable TEndString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20540);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20538);
   }
-  /* parser/parser.nit:20541 */
+  /* parser/parser.nit:20539 */
   fra.me.REG[3] = NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[3]);
-  /* parser/parser.nit:20544 */
+  /* parser/parser.nit:20542 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20545 */
+  /* parser/parser.nit:20543 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20545);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20543);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55557,7 +55526,7 @@ void parser___ReduceAction602___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20550;
+  fra.me.line = 20548;
   fra.me.meth = LOCATE_parser___ReduceAction602___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -55570,27 +55539,27 @@ void parser___ReduceAction602___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:20552 */
+  /* parser/parser.nit:20550 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20553 */
+  /* parser/parser.nit:20551 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20554 */
+  /* parser/parser.nit:20552 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20555 */
+  /* parser/parser.nit:20553 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20557 */
+  /* parser/parser.nit:20555 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAt, ID_parser___parser_nodes___TAt)) /*cast nullable TAt*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20557);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20555);
   }
-  /* parser/parser.nit:20559 */
+  /* parser/parser.nit:20557 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotation, ID_parser___parser_nodes___AAnnotation)) /*cast nullable AAnnotation*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20559);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20557);
   }
-  /* parser/parser.nit:20560 */
+  /* parser/parser.nit:20558 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -55605,18 +55574,18 @@ void parser___ReduceAction602___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20561 */
+    /* parser/parser.nit:20559 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:20563 */
+  /* parser/parser.nit:20561 */
   fra.me.REG[5] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:20569 */
+  /* parser/parser.nit:20567 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20570 */
+  /* parser/parser.nit:20568 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20570);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20568);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55631,7 +55600,7 @@ void parser___ReduceAction603___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20575;
+  fra.me.line = 20573;
   fra.me.meth = LOCATE_parser___ReduceAction603___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -55646,54 +55615,54 @@ void parser___ReduceAction603___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:20577 */
+  /* parser/parser.nit:20575 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20578 */
+  /* parser/parser.nit:20576 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20579 */
+  /* parser/parser.nit:20577 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20580 */
+  /* parser/parser.nit:20578 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20581 */
+  /* parser/parser.nit:20579 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20582 */
+  /* parser/parser.nit:20580 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20584 */
+  /* parser/parser.nit:20582 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TAt, ID_parser___parser_nodes___TAt)) /*cast nullable TAt*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20584);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20582);
   }
-  /* parser/parser.nit:20586 */
+  /* parser/parser.nit:20584 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20586);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20584);
   }
-  /* parser/parser.nit:20588 */
+  /* parser/parser.nit:20586 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20588);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20586);
   }
-  /* parser/parser.nit:20589 */
+  /* parser/parser.nit:20587 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:20591 */
+  /* parser/parser.nit:20589 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20591);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20589);
   }
-  /* parser/parser.nit:20592 */
+  /* parser/parser.nit:20590 */
   fra.me.REG[3] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3]);
-  /* parser/parser.nit:20598 */
+  /* parser/parser.nit:20596 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20599 */
+  /* parser/parser.nit:20597 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20599);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20597);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55708,7 +55677,7 @@ void parser___ReduceAction604___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20604;
+  fra.me.line = 20602;
   fra.me.meth = LOCATE_parser___ReduceAction604___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -55720,27 +55689,27 @@ void parser___ReduceAction604___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:20606 */
+  /* parser/parser.nit:20604 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20607 */
+  /* parser/parser.nit:20605 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20608 */
+  /* parser/parser.nit:20606 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20610 */
+  /* parser/parser.nit:20608 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20610);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20608);
   }
-  /* parser/parser.nit:20611 */
+  /* parser/parser.nit:20609 */
   fra.me.REG[4] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[3], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:20618 */
+  /* parser/parser.nit:20616 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20619 */
+  /* parser/parser.nit:20617 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20619);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20617);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55755,7 +55724,7 @@ void parser___ReduceAction605___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20624;
+  fra.me.line = 20622;
   fra.me.meth = LOCATE_parser___ReduceAction605___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -55768,35 +55737,35 @@ void parser___ReduceAction605___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:20626 */
+  /* parser/parser.nit:20624 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20627 */
+  /* parser/parser.nit:20625 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20628 */
+  /* parser/parser.nit:20626 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20629 */
+  /* parser/parser.nit:20627 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20631 */
+  /* parser/parser.nit:20629 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20631);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20629);
   }
-  /* parser/parser.nit:20633 */
+  /* parser/parser.nit:20631 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20633);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20631);
   }
-  /* parser/parser.nit:20634 */
+  /* parser/parser.nit:20632 */
   fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:20641 */
+  /* parser/parser.nit:20639 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20642 */
+  /* parser/parser.nit:20640 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20642);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20640);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55811,7 +55780,7 @@ void parser___ReduceAction606___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20647;
+  fra.me.line = 20645;
   fra.me.meth = LOCATE_parser___ReduceAction606___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -55826,54 +55795,54 @@ void parser___ReduceAction606___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:20649 */
+  /* parser/parser.nit:20647 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20650 */
+  /* parser/parser.nit:20648 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20651 */
+  /* parser/parser.nit:20649 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20652 */
+  /* parser/parser.nit:20650 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20653 */
+  /* parser/parser.nit:20651 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20654 */
+  /* parser/parser.nit:20652 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20656 */
+  /* parser/parser.nit:20654 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20656);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20654);
   }
-  /* parser/parser.nit:20658 */
+  /* parser/parser.nit:20656 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20658);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20656);
   }
-  /* parser/parser.nit:20660 */
+  /* parser/parser.nit:20658 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20660);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20658);
   }
-  /* parser/parser.nit:20661 */
+  /* parser/parser.nit:20659 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:20663 */
+  /* parser/parser.nit:20661 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20663);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20661);
   }
-  /* parser/parser.nit:20664 */
+  /* parser/parser.nit:20662 */
   fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20671 */
+  /* parser/parser.nit:20669 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20672 */
+  /* parser/parser.nit:20670 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20672);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20670);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55888,7 +55857,7 @@ void parser___ReduceAction607___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20677;
+  fra.me.line = 20675;
   fra.me.meth = LOCATE_parser___ReduceAction607___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -55904,62 +55873,62 @@ void parser___ReduceAction607___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:20679 */
+  /* parser/parser.nit:20677 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20680 */
+  /* parser/parser.nit:20678 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20681 */
+  /* parser/parser.nit:20679 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20682 */
+  /* parser/parser.nit:20680 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20683 */
+  /* parser/parser.nit:20681 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20684 */
+  /* parser/parser.nit:20682 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20685 */
+  /* parser/parser.nit:20683 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20687 */
+  /* parser/parser.nit:20685 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20687);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20685);
   }
-  /* parser/parser.nit:20689 */
+  /* parser/parser.nit:20687 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20689);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20687);
   }
-  /* parser/parser.nit:20691 */
+  /* parser/parser.nit:20689 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20691);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20689);
   }
-  /* parser/parser.nit:20692 */
+  /* parser/parser.nit:20690 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:20694 */
+  /* parser/parser.nit:20692 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20694);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20692);
   }
-  /* parser/parser.nit:20696 */
+  /* parser/parser.nit:20694 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20696);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20694);
   }
-  /* parser/parser.nit:20697 */
+  /* parser/parser.nit:20695 */
   fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20704 */
+  /* parser/parser.nit:20702 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20705 */
+  /* parser/parser.nit:20703 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20705);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20703);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -55974,7 +55943,7 @@ void parser___ReduceAction608___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20710;
+  fra.me.line = 20708;
   fra.me.meth = LOCATE_parser___ReduceAction608___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -55986,30 +55955,30 @@ void parser___ReduceAction608___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:20712 */
+  /* parser/parser.nit:20710 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20713 */
+  /* parser/parser.nit:20711 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20714 */
+  /* parser/parser.nit:20712 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20716 */
+  /* parser/parser.nit:20714 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20716);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20714);
   }
-  /* parser/parser.nit:20717 */
+  /* parser/parser.nit:20715 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:20718 */
+  /* parser/parser.nit:20716 */
   fra.me.REG[4] = NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(NIT_NULL, NIT_NULL, fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:20724 */
+  /* parser/parser.nit:20722 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20725 */
+  /* parser/parser.nit:20723 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20725);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20723);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56025,7 +55994,7 @@ void parser___ReduceAction609___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20730;
+  fra.me.line = 20728;
   fra.me.meth = LOCATE_parser___ReduceAction609___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -56037,13 +56006,13 @@ void parser___ReduceAction609___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:20732 */
+  /* parser/parser.nit:20730 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20733 */
+  /* parser/parser.nit:20731 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20734 */
+  /* parser/parser.nit:20732 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20736 */
+  /* parser/parser.nit:20734 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -56058,16 +56027,16 @@ void parser___ReduceAction609___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20737 */
+    /* parser/parser.nit:20735 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:20739 */
+  /* parser/parser.nit:20737 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20740 */
+  /* parser/parser.nit:20738 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20740);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20738);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56083,7 +56052,7 @@ void parser___ReduceAction610___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20745;
+  fra.me.line = 20743;
   fra.me.meth = LOCATE_parser___ReduceAction610___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56096,21 +56065,21 @@ void parser___ReduceAction610___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:20747 */
+  /* parser/parser.nit:20745 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20748 */
+  /* parser/parser.nit:20746 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20749 */
+  /* parser/parser.nit:20747 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20750 */
+  /* parser/parser.nit:20748 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20753 */
+  /* parser/parser.nit:20751 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20753);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20751);
   }
-  /* parser/parser.nit:20754 */
+  /* parser/parser.nit:20752 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -56125,19 +56094,19 @@ void parser___ReduceAction610___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20755 */
+    /* parser/parser.nit:20753 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:20757 */
+  /* parser/parser.nit:20755 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:20758 */
+  /* parser/parser.nit:20756 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20759 */
+  /* parser/parser.nit:20757 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20759);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20757);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56152,7 +56121,7 @@ void parser___ReduceAction612___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20764;
+  fra.me.line = 20762;
   fra.me.meth = LOCATE_parser___ReduceAction612___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -56164,31 +56133,31 @@ void parser___ReduceAction612___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:20766 */
+  /* parser/parser.nit:20764 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20767 */
+  /* parser/parser.nit:20765 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20768 */
+  /* parser/parser.nit:20766 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20769 */
+  /* parser/parser.nit:20767 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20770 */
+  /* parser/parser.nit:20768 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20772 */
+  /* parser/parser.nit:20770 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20772);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20770);
   }
-  /* parser/parser.nit:20773 */
+  /* parser/parser.nit:20771 */
   fra.me.REG[4] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[3], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:20780 */
+  /* parser/parser.nit:20778 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20781 */
+  /* parser/parser.nit:20779 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20781);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20779);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56203,7 +56172,7 @@ void parser___ReduceAction613___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20786;
+  fra.me.line = 20784;
   fra.me.meth = LOCATE_parser___ReduceAction613___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56216,39 +56185,39 @@ void parser___ReduceAction613___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:20788 */
+  /* parser/parser.nit:20786 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20789 */
+  /* parser/parser.nit:20787 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20790 */
+  /* parser/parser.nit:20788 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20791 */
+  /* parser/parser.nit:20789 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20792 */
+  /* parser/parser.nit:20790 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20793 */
+  /* parser/parser.nit:20791 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20795 */
+  /* parser/parser.nit:20793 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20795);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20793);
   }
-  /* parser/parser.nit:20797 */
+  /* parser/parser.nit:20795 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20797);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20795);
   }
-  /* parser/parser.nit:20798 */
+  /* parser/parser.nit:20796 */
   fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:20805 */
+  /* parser/parser.nit:20803 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20806 */
+  /* parser/parser.nit:20804 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20806);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20804);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56263,7 +56232,7 @@ void parser___ReduceAction614___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20811;
+  fra.me.line = 20809;
   fra.me.meth = LOCATE_parser___ReduceAction614___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -56278,58 +56247,58 @@ void parser___ReduceAction614___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:20813 */
+  /* parser/parser.nit:20811 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20814 */
+  /* parser/parser.nit:20812 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20815 */
+  /* parser/parser.nit:20813 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20816 */
+  /* parser/parser.nit:20814 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20817 */
+  /* parser/parser.nit:20815 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20818 */
+  /* parser/parser.nit:20816 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20819 */
+  /* parser/parser.nit:20817 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20820 */
+  /* parser/parser.nit:20818 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20822 */
+  /* parser/parser.nit:20820 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20822);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20820);
   }
-  /* parser/parser.nit:20824 */
+  /* parser/parser.nit:20822 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20824);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20822);
   }
-  /* parser/parser.nit:20826 */
+  /* parser/parser.nit:20824 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20826);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20824);
   }
-  /* parser/parser.nit:20827 */
+  /* parser/parser.nit:20825 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* parser/parser.nit:20829 */
+  /* parser/parser.nit:20827 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20829);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20827);
   }
-  /* parser/parser.nit:20830 */
+  /* parser/parser.nit:20828 */
   fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20837 */
+  /* parser/parser.nit:20835 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20838 */
+  /* parser/parser.nit:20836 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20838);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20836);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56344,7 +56313,7 @@ void parser___ReduceAction615___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20843;
+  fra.me.line = 20841;
   fra.me.meth = LOCATE_parser___ReduceAction615___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -56360,66 +56329,66 @@ void parser___ReduceAction615___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:20845 */
+  /* parser/parser.nit:20843 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20846 */
+  /* parser/parser.nit:20844 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20847 */
+  /* parser/parser.nit:20845 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20848 */
+  /* parser/parser.nit:20846 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20849 */
+  /* parser/parser.nit:20847 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20850 */
+  /* parser/parser.nit:20848 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20851 */
+  /* parser/parser.nit:20849 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20852 */
+  /* parser/parser.nit:20850 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20853 */
+  /* parser/parser.nit:20851 */
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20855 */
+  /* parser/parser.nit:20853 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20855);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20853);
   }
-  /* parser/parser.nit:20857 */
+  /* parser/parser.nit:20855 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20857);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20855);
   }
-  /* parser/parser.nit:20859 */
+  /* parser/parser.nit:20857 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20859);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20857);
   }
-  /* parser/parser.nit:20860 */
+  /* parser/parser.nit:20858 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* parser/parser.nit:20862 */
+  /* parser/parser.nit:20860 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20862);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20860);
   }
-  /* parser/parser.nit:20864 */
+  /* parser/parser.nit:20862 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20864);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20862);
   }
-  /* parser/parser.nit:20865 */
+  /* parser/parser.nit:20863 */
   fra.me.REG[3] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20872 */
+  /* parser/parser.nit:20870 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20873 */
+  /* parser/parser.nit:20871 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20873);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20871);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56434,7 +56403,7 @@ void parser___ReduceAction616___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20878;
+  fra.me.line = 20876;
   fra.me.meth = LOCATE_parser___ReduceAction616___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56447,42 +56416,42 @@ void parser___ReduceAction616___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:20880 */
+  /* parser/parser.nit:20878 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20881 */
+  /* parser/parser.nit:20879 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20882 */
+  /* parser/parser.nit:20880 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20883 */
+  /* parser/parser.nit:20881 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20884 */
+  /* parser/parser.nit:20882 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20885 */
+  /* parser/parser.nit:20883 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20887 */
+  /* parser/parser.nit:20885 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast nullable AAtid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20887);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20885);
   }
-  /* parser/parser.nit:20889 */
+  /* parser/parser.nit:20887 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20889);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20887);
   }
-  /* parser/parser.nit:20890 */
+  /* parser/parser.nit:20888 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:20891 */
+  /* parser/parser.nit:20889 */
   fra.me.REG[5] = NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(fra.me.REG[4], NIT_NULL, fra.me.REG[5], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:20898 */
+  /* parser/parser.nit:20896 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20899 */
+  /* parser/parser.nit:20897 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20899);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20897);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56497,7 +56466,7 @@ void parser___ReduceAction617___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20904;
+  fra.me.line = 20902;
   fra.me.meth = LOCATE_parser___ReduceAction617___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -56509,21 +56478,21 @@ void parser___ReduceAction617___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:20906 */
+  /* parser/parser.nit:20904 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20907 */
+  /* parser/parser.nit:20905 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20908 */
+  /* parser/parser.nit:20906 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20909 */
+  /* parser/parser.nit:20907 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20911 */
+  /* parser/parser.nit:20909 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20912 */
+  /* parser/parser.nit:20910 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20912);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20910);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56539,7 +56508,7 @@ void parser___ReduceAction618___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20917;
+  fra.me.line = 20915;
   fra.me.meth = LOCATE_parser___ReduceAction618___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -56551,13 +56520,13 @@ void parser___ReduceAction618___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:20919 */
+  /* parser/parser.nit:20917 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20920 */
+  /* parser/parser.nit:20918 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20921 */
+  /* parser/parser.nit:20919 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20923 */
+  /* parser/parser.nit:20921 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -56572,16 +56541,16 @@ void parser___ReduceAction618___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20924 */
+    /* parser/parser.nit:20922 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:20926 */
+  /* parser/parser.nit:20924 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20927 */
+  /* parser/parser.nit:20925 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20927);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20925);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56597,7 +56566,7 @@ void parser___ReduceAction619___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20932;
+  fra.me.line = 20930;
   fra.me.meth = LOCATE_parser___ReduceAction619___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -56610,21 +56579,21 @@ void parser___ReduceAction619___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:20934 */
+  /* parser/parser.nit:20932 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20935 */
+  /* parser/parser.nit:20933 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20936 */
+  /* parser/parser.nit:20934 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20937 */
+  /* parser/parser.nit:20935 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20940 */
+  /* parser/parser.nit:20938 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20940);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20938);
   }
-  /* parser/parser.nit:20941 */
+  /* parser/parser.nit:20939 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -56639,19 +56608,19 @@ void parser___ReduceAction619___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:20942 */
+    /* parser/parser.nit:20940 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:20944 */
+  /* parser/parser.nit:20942 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:20945 */
+  /* parser/parser.nit:20943 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20946 */
+  /* parser/parser.nit:20944 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20946);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20944);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56666,7 +56635,7 @@ void parser___ReduceAction620___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20951;
+  fra.me.line = 20949;
   fra.me.meth = LOCATE_parser___ReduceAction620___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -56678,21 +56647,21 @@ void parser___ReduceAction620___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:20953 */
+  /* parser/parser.nit:20951 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20954 */
+  /* parser/parser.nit:20952 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20955 */
+  /* parser/parser.nit:20953 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20956 */
+  /* parser/parser.nit:20954 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20958 */
+  /* parser/parser.nit:20956 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20959 */
+  /* parser/parser.nit:20957 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20959);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20957);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56707,7 +56676,7 @@ void parser___ReduceAction621___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20964;
+  fra.me.line = 20962;
   fra.me.meth = LOCATE_parser___ReduceAction621___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56718,25 +56687,25 @@ void parser___ReduceAction621___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:20966 */
+  /* parser/parser.nit:20964 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20967 */
+  /* parser/parser.nit:20965 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20969 */
+  /* parser/parser.nit:20967 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20969);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20967);
   }
-  /* parser/parser.nit:20970 */
+  /* parser/parser.nit:20968 */
   fra.me.REG[3] = NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(fra.me.REG[3]);
-  /* parser/parser.nit:20973 */
+  /* parser/parser.nit:20971 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20974 */
+  /* parser/parser.nit:20972 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20974);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20972);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56751,7 +56720,7 @@ void parser___ReduceAction622___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20979;
+  fra.me.line = 20977;
   fra.me.meth = LOCATE_parser___ReduceAction622___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56762,25 +56731,25 @@ void parser___ReduceAction622___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:20981 */
+  /* parser/parser.nit:20979 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20982 */
+  /* parser/parser.nit:20980 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20984 */
+  /* parser/parser.nit:20982 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20984);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20982);
   }
-  /* parser/parser.nit:20985 */
+  /* parser/parser.nit:20983 */
   fra.me.REG[3] = NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(fra.me.REG[3]);
-  /* parser/parser.nit:20988 */
+  /* parser/parser.nit:20986 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20989 */
+  /* parser/parser.nit:20987 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20989);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20987);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56795,7 +56764,7 @@ void parser___ReduceAction624___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 20994;
+  fra.me.line = 20992;
   fra.me.meth = LOCATE_parser___ReduceAction624___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56806,25 +56775,25 @@ void parser___ReduceAction624___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:20996 */
+  /* parser/parser.nit:20994 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20997 */
+  /* parser/parser.nit:20995 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20999 */
+  /* parser/parser.nit:20997 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 20999);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 20997);
   }
-  /* parser/parser.nit:21000 */
+  /* parser/parser.nit:20998 */
   fra.me.REG[3] = NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(fra.me.REG[3]);
-  /* parser/parser.nit:21003 */
+  /* parser/parser.nit:21001 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21004 */
+  /* parser/parser.nit:21002 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21004);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21002);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56839,7 +56808,7 @@ void parser___ReduceAction625___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21009;
+  fra.me.line = 21007;
   fra.me.meth = LOCATE_parser___ReduceAction625___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56850,25 +56819,25 @@ void parser___ReduceAction625___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:21011 */
+  /* parser/parser.nit:21009 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21012 */
+  /* parser/parser.nit:21010 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21014 */
+  /* parser/parser.nit:21012 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21014);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21012);
   }
-  /* parser/parser.nit:21015 */
+  /* parser/parser.nit:21013 */
   fra.me.REG[3] = NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(fra.me.REG[3]);
-  /* parser/parser.nit:21018 */
+  /* parser/parser.nit:21016 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21019 */
+  /* parser/parser.nit:21017 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21019);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21017);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56883,7 +56852,7 @@ void parser___ReduceAction626___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21024;
+  fra.me.line = 21022;
   fra.me.meth = LOCATE_parser___ReduceAction626___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56894,25 +56863,25 @@ void parser___ReduceAction626___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:21026 */
+  /* parser/parser.nit:21024 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21027 */
+  /* parser/parser.nit:21025 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21029 */
+  /* parser/parser.nit:21027 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21029);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21027);
   }
-  /* parser/parser.nit:21030 */
+  /* parser/parser.nit:21028 */
   fra.me.REG[3] = NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(fra.me.REG[3]);
-  /* parser/parser.nit:21033 */
+  /* parser/parser.nit:21031 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21034 */
+  /* parser/parser.nit:21032 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21034);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21032);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56927,7 +56896,7 @@ void parser___ReduceAction627___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21039;
+  fra.me.line = 21037;
   fra.me.meth = LOCATE_parser___ReduceAction627___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56938,25 +56907,25 @@ void parser___ReduceAction627___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:21041 */
+  /* parser/parser.nit:21039 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21042 */
+  /* parser/parser.nit:21040 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21044 */
+  /* parser/parser.nit:21042 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21044);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21042);
   }
-  /* parser/parser.nit:21045 */
+  /* parser/parser.nit:21043 */
   fra.me.REG[3] = NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(fra.me.REG[3]);
-  /* parser/parser.nit:21048 */
+  /* parser/parser.nit:21046 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21049 */
+  /* parser/parser.nit:21047 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21049);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21047);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -56971,7 +56940,7 @@ void parser___ReduceAction628___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21054;
+  fra.me.line = 21052;
   fra.me.meth = LOCATE_parser___ReduceAction628___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -56982,25 +56951,25 @@ void parser___ReduceAction628___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:21056 */
+  /* parser/parser.nit:21054 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21057 */
+  /* parser/parser.nit:21055 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21059 */
+  /* parser/parser.nit:21057 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21059);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21057);
   }
-  /* parser/parser.nit:21060 */
+  /* parser/parser.nit:21058 */
   fra.me.REG[3] = NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid(fra.me.REG[3]);
-  /* parser/parser.nit:21063 */
+  /* parser/parser.nit:21061 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21064 */
+  /* parser/parser.nit:21062 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21064);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21062);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57015,7 +56984,7 @@ void parser___ReduceAction629___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21069;
+  fra.me.line = 21067;
   fra.me.meth = LOCATE_parser___ReduceAction629___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -57029,48 +56998,48 @@ void parser___ReduceAction629___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:21071 */
+  /* parser/parser.nit:21069 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21072 */
+  /* parser/parser.nit:21070 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21073 */
+  /* parser/parser.nit:21071 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21074 */
+  /* parser/parser.nit:21072 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21075 */
+  /* parser/parser.nit:21073 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21076 */
+  /* parser/parser.nit:21074 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21078 */
+  /* parser/parser.nit:21076 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21078);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21076);
   }
-  /* parser/parser.nit:21080 */
+  /* parser/parser.nit:21078 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21080);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21078);
   }
-  /* parser/parser.nit:21081 */
+  /* parser/parser.nit:21079 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:21083 */
+  /* parser/parser.nit:21081 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21083);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21081);
   }
-  /* parser/parser.nit:21084 */
+  /* parser/parser.nit:21082 */
   fra.me.REG[3] = NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:21089 */
+  /* parser/parser.nit:21087 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21090 */
+  /* parser/parser.nit:21088 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21090);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21088);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57085,7 +57054,7 @@ void parser___ReduceAction630___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21095;
+  fra.me.line = 21093;
   fra.me.meth = LOCATE_parser___ReduceAction630___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57098,37 +57067,37 @@ void parser___ReduceAction630___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:21097 */
+  /* parser/parser.nit:21095 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21098 */
+  /* parser/parser.nit:21096 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21099 */
+  /* parser/parser.nit:21097 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21100 */
+  /* parser/parser.nit:21098 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21101 */
+  /* parser/parser.nit:21099 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21103 */
+  /* parser/parser.nit:21101 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21101);
   }
-  /* parser/parser.nit:21105 */
+  /* parser/parser.nit:21103 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21105);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21103);
   }
-  /* parser/parser.nit:21106 */
+  /* parser/parser.nit:21104 */
   fra.me.REG[3] = NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:21111 */
+  /* parser/parser.nit:21109 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21112 */
+  /* parser/parser.nit:21110 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21112);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21110);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57143,7 +57112,7 @@ void parser___ReduceAction631___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21117;
+  fra.me.line = 21115;
   fra.me.meth = LOCATE_parser___ReduceAction631___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -57154,19 +57123,19 @@ void parser___ReduceAction631___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:21119 */
+  /* parser/parser.nit:21117 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21120 */
+  /* parser/parser.nit:21118 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21121 */
+  /* parser/parser.nit:21119 */
   fra.me.REG[3] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[3]);
-  /* parser/parser.nit:21124 */
+  /* parser/parser.nit:21122 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21125 */
+  /* parser/parser.nit:21123 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21125);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21123);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57182,7 +57151,7 @@ void parser___ReduceAction633___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21130;
+  fra.me.line = 21128;
   fra.me.meth = LOCATE_parser___ReduceAction633___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57194,19 +57163,19 @@ void parser___ReduceAction633___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:21132 */
+  /* parser/parser.nit:21130 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21133 */
+  /* parser/parser.nit:21131 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21134 */
+  /* parser/parser.nit:21132 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21136 */
+  /* parser/parser.nit:21134 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21136);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21134);
   }
-  /* parser/parser.nit:21137 */
+  /* parser/parser.nit:21135 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -57221,18 +57190,18 @@ void parser___ReduceAction633___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21138 */
+    /* parser/parser.nit:21136 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21140 */
+  /* parser/parser.nit:21138 */
   fra.me.REG[4] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[4]);
-  /* parser/parser.nit:21143 */
+  /* parser/parser.nit:21141 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21144 */
+  /* parser/parser.nit:21142 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21144);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21142);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57247,7 +57216,7 @@ void parser___ReduceAction636___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21149;
+  fra.me.line = 21147;
   fra.me.meth = LOCATE_parser___ReduceAction636___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -57261,48 +57230,48 @@ void parser___ReduceAction636___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:21151 */
+  /* parser/parser.nit:21149 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21152 */
+  /* parser/parser.nit:21150 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21153 */
+  /* parser/parser.nit:21151 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21154 */
+  /* parser/parser.nit:21152 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21155 */
+  /* parser/parser.nit:21153 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21156 */
+  /* parser/parser.nit:21154 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21158 */
+  /* parser/parser.nit:21156 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21158);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21156);
   }
-  /* parser/parser.nit:21160 */
+  /* parser/parser.nit:21158 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21160);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21158);
   }
-  /* parser/parser.nit:21161 */
+  /* parser/parser.nit:21159 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:21163 */
+  /* parser/parser.nit:21161 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21163);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21161);
   }
-  /* parser/parser.nit:21164 */
+  /* parser/parser.nit:21162 */
   fra.me.REG[3] = NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:21169 */
+  /* parser/parser.nit:21167 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21170 */
+  /* parser/parser.nit:21168 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21170);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21168);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57318,7 +57287,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 = 21175;
+  fra.me.line = 21173;
   fra.me.meth = LOCATE_parser___ReduceAction637___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57330,15 +57299,15 @@ void parser___ReduceAction637___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:21177 */
+  /* parser/parser.nit:21175 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21178 */
+  /* parser/parser.nit:21176 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21179 */
+  /* parser/parser.nit:21177 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21180 */
+  /* parser/parser.nit:21178 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21182 */
+  /* parser/parser.nit:21180 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -57353,16 +57322,16 @@ void parser___ReduceAction637___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21183 */
+    /* parser/parser.nit:21181 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21185 */
+  /* parser/parser.nit:21183 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21186 */
+  /* parser/parser.nit:21184 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21186);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21184);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57378,7 +57347,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 = 21191;
+  fra.me.line = 21189;
   fra.me.meth = LOCATE_parser___ReduceAction638___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57391,23 +57360,23 @@ void parser___ReduceAction638___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:21193 */
+  /* parser/parser.nit:21191 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21194 */
+  /* parser/parser.nit:21192 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21195 */
+  /* parser/parser.nit:21193 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21196 */
+  /* parser/parser.nit:21194 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21197 */
+  /* parser/parser.nit:21195 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21200 */
+  /* parser/parser.nit:21198 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21200);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21198);
   }
-  /* parser/parser.nit:21201 */
+  /* parser/parser.nit:21199 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -57422,19 +57391,19 @@ void parser___ReduceAction638___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21202 */
+    /* parser/parser.nit:21200 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* parser/parser.nit:21204 */
+  /* parser/parser.nit:21202 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:21205 */
+  /* parser/parser.nit:21203 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21206 */
+  /* parser/parser.nit:21204 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21206);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21204);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57449,7 +57418,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 = 21211;
+  fra.me.line = 21209;
   fra.me.meth = LOCATE_parser___ReduceAction639___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57461,23 +57430,23 @@ void parser___ReduceAction639___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:21213 */
+  /* parser/parser.nit:21211 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21214 */
+  /* parser/parser.nit:21212 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21215 */
+  /* parser/parser.nit:21213 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21216 */
+  /* parser/parser.nit:21214 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21217 */
+  /* parser/parser.nit:21215 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21219 */
+  /* parser/parser.nit:21217 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21220 */
+  /* parser/parser.nit:21218 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21220);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21218);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57493,7 +57462,7 @@ void parser___ReduceAction640___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21225;
+  fra.me.line = 21223;
   fra.me.meth = LOCATE_parser___ReduceAction640___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57505,13 +57474,13 @@ void parser___ReduceAction640___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:21227 */
+  /* parser/parser.nit:21225 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21228 */
+  /* parser/parser.nit:21226 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21229 */
+  /* parser/parser.nit:21227 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21231 */
+  /* parser/parser.nit:21229 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -57526,16 +57495,16 @@ void parser___ReduceAction640___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21232 */
+    /* parser/parser.nit:21230 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21234 */
+  /* parser/parser.nit:21232 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21235 */
+  /* parser/parser.nit:21233 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21235);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21233);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57551,7 +57520,7 @@ void parser___ReduceAction641___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21240;
+  fra.me.line = 21238;
   fra.me.meth = LOCATE_parser___ReduceAction641___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57564,30 +57533,30 @@ void parser___ReduceAction641___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:21242 */
+  /* parser/parser.nit:21240 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21243 */
+  /* parser/parser.nit:21241 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21242 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21243 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:21244 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:21245 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:21246 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21247 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21248 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21250 */
+  /* parser/parser.nit:21248 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21250);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21248);
   }
-  /* parser/parser.nit:21252 */
+  /* parser/parser.nit:21250 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21253 */
+  /* parser/parser.nit:21251 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -57602,16 +57571,16 @@ void parser___ReduceAction641___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21254 */
+    /* parser/parser.nit:21252 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21256 */
+  /* parser/parser.nit:21254 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21257 */
+  /* parser/parser.nit:21255 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21257);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21255);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57626,7 +57595,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 = 21262;
+  fra.me.line = 21260;
   fra.me.meth = LOCATE_parser___ReduceAction642___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57638,27 +57607,27 @@ void parser___ReduceAction642___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:21264 */
+  /* parser/parser.nit:21262 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21265 */
+  /* parser/parser.nit:21263 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21266 */
+  /* parser/parser.nit:21264 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21268 */
+  /* parser/parser.nit:21266 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21268);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21266);
   }
-  /* parser/parser.nit:21269 */
+  /* parser/parser.nit:21267 */
   fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21274 */
+  /* parser/parser.nit:21272 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21275 */
+  /* parser/parser.nit:21273 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21275);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21273);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57673,7 +57642,7 @@ void parser___ReduceAction643___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21280;
+  fra.me.line = 21278;
   fra.me.meth = LOCATE_parser___ReduceAction643___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57686,38 +57655,38 @@ void parser___ReduceAction643___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:21282 */
+  /* parser/parser.nit:21280 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21283 */
+  /* parser/parser.nit:21281 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21284 */
+  /* parser/parser.nit:21282 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21285 */
+  /* parser/parser.nit:21283 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21287 */
+  /* parser/parser.nit:21285 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21287);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21285);
   }
-  /* parser/parser.nit:21288 */
+  /* parser/parser.nit:21286 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21290 */
+  /* parser/parser.nit:21288 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21290);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21288);
   }
-  /* parser/parser.nit:21291 */
+  /* parser/parser.nit:21289 */
   fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(NIT_NULL, fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:21296 */
+  /* parser/parser.nit:21294 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21297 */
+  /* parser/parser.nit:21295 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21297);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21295);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57732,7 +57701,7 @@ void parser___ReduceAction644___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21302;
+  fra.me.line = 21300;
   fra.me.meth = LOCATE_parser___ReduceAction644___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57745,37 +57714,37 @@ void parser___ReduceAction644___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:21304 */
+  /* parser/parser.nit:21302 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21305 */
+  /* parser/parser.nit:21303 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21306 */
+  /* parser/parser.nit:21304 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21307 */
+  /* parser/parser.nit:21305 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21308 */
+  /* parser/parser.nit:21306 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21310 */
+  /* parser/parser.nit:21308 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21310);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21308);
   }
-  /* parser/parser.nit:21312 */
+  /* parser/parser.nit:21310 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21312);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21310);
   }
-  /* parser/parser.nit:21313 */
+  /* parser/parser.nit:21311 */
   fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:21318 */
+  /* parser/parser.nit:21316 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21319 */
+  /* parser/parser.nit:21317 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21319);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21317);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57790,7 +57759,7 @@ void parser___ReduceAction645___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21324;
+  fra.me.line = 21322;
   fra.me.meth = LOCATE_parser___ReduceAction645___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -57804,48 +57773,48 @@ void parser___ReduceAction645___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:21326 */
+  /* parser/parser.nit:21324 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21327 */
+  /* parser/parser.nit:21325 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21328 */
+  /* parser/parser.nit:21326 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21329 */
+  /* parser/parser.nit:21327 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21330 */
+  /* parser/parser.nit:21328 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21331 */
+  /* parser/parser.nit:21329 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21333 */
+  /* parser/parser.nit:21331 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21333);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21331);
   }
-  /* parser/parser.nit:21335 */
+  /* parser/parser.nit:21333 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21335);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21333);
   }
-  /* parser/parser.nit:21336 */
+  /* parser/parser.nit:21334 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* parser/parser.nit:21338 */
+  /* parser/parser.nit:21336 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21338);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21336);
   }
-  /* parser/parser.nit:21339 */
+  /* parser/parser.nit:21337 */
   fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:21344 */
+  /* parser/parser.nit:21342 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21345 */
+  /* parser/parser.nit:21343 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21345);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21343);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57860,7 +57829,7 @@ void parser___ReduceAction646___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21350;
+  fra.me.line = 21348;
   fra.me.meth = LOCATE_parser___ReduceAction646___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57872,27 +57841,27 @@ void parser___ReduceAction646___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:21352 */
+  /* parser/parser.nit:21350 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21353 */
+  /* parser/parser.nit:21351 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21354 */
+  /* parser/parser.nit:21352 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21356 */
+  /* parser/parser.nit:21354 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21356);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21354);
   }
-  /* parser/parser.nit:21357 */
+  /* parser/parser.nit:21355 */
   fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21361 */
+  /* parser/parser.nit:21359 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21362 */
+  /* parser/parser.nit:21360 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21362);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21360);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57907,7 +57876,7 @@ void parser___ReduceAction647___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21367;
+  fra.me.line = 21365;
   fra.me.meth = LOCATE_parser___ReduceAction647___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -57920,38 +57889,38 @@ void parser___ReduceAction647___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:21369 */
+  /* parser/parser.nit:21367 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21370 */
+  /* parser/parser.nit:21368 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21371 */
+  /* parser/parser.nit:21369 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21372 */
+  /* parser/parser.nit:21370 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21374 */
+  /* parser/parser.nit:21372 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21374);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21372);
   }
-  /* parser/parser.nit:21375 */
+  /* parser/parser.nit:21373 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21377 */
+  /* parser/parser.nit:21375 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21377);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21375);
   }
-  /* parser/parser.nit:21378 */
+  /* parser/parser.nit:21376 */
   fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:21382 */
+  /* parser/parser.nit:21380 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21383 */
+  /* parser/parser.nit:21381 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21383);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21381);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -57966,7 +57935,7 @@ void parser___ReduceAction648___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21388;
+  fra.me.line = 21386;
   fra.me.meth = LOCATE_parser___ReduceAction648___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -57978,30 +57947,30 @@ void parser___ReduceAction648___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:21390 */
+  /* parser/parser.nit:21388 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21391 */
+  /* parser/parser.nit:21389 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21392 */
+  /* parser/parser.nit:21390 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21394 */
+  /* parser/parser.nit:21392 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21394);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21392);
   }
-  /* parser/parser.nit:21395 */
+  /* parser/parser.nit:21393 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:21396 */
+  /* parser/parser.nit:21394 */
   fra.me.REG[4] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:21400 */
+  /* parser/parser.nit:21398 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21401 */
+  /* parser/parser.nit:21399 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21401);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21399);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58016,7 +57985,7 @@ void parser___ReduceAction649___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21406;
+  fra.me.line = 21404;
   fra.me.meth = LOCATE_parser___ReduceAction649___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58027,21 +57996,21 @@ void parser___ReduceAction649___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:21408 */
+  /* parser/parser.nit:21406 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21409 */
+  /* parser/parser.nit:21407 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21408 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21410 */
+  /* parser/parser.nit:21409 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:21411 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21413 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21414 */
+  /* parser/parser.nit:21412 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21414);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21412);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58056,7 +58025,7 @@ void parser___ReduceAction650___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21419;
+  fra.me.line = 21417;
   fra.me.meth = LOCATE_parser___ReduceAction650___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58067,21 +58036,21 @@ void parser___ReduceAction650___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:21421 */
+  /* parser/parser.nit:21419 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21422 */
+  /* parser/parser.nit:21420 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21423 */
+  /* parser/parser.nit:21421 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21424 */
+  /* parser/parser.nit:21422 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21426 */
+  /* parser/parser.nit:21424 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21427 */
+  /* parser/parser.nit:21425 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21427);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21425);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58096,7 +58065,7 @@ void parser___ReduceAction651___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21432;
+  fra.me.line = 21430;
   fra.me.meth = LOCATE_parser___ReduceAction651___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58107,15 +58076,15 @@ void parser___ReduceAction651___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:21434 */
+  /* parser/parser.nit:21432 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21435 */
+  /* parser/parser.nit:21433 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21436 */
+  /* parser/parser.nit:21434 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21436);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21434);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58130,7 +58099,7 @@ void parser___ReduceAction653___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21441;
+  fra.me.line = 21439;
   fra.me.meth = LOCATE_parser___ReduceAction653___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -58142,30 +58111,30 @@ void parser___ReduceAction653___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:21443 */
+  /* parser/parser.nit:21441 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21444 */
+  /* parser/parser.nit:21442 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21445 */
+  /* parser/parser.nit:21443 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21447 */
+  /* parser/parser.nit:21445 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21447);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21445);
   }
-  /* parser/parser.nit:21448 */
+  /* parser/parser.nit:21446 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:21449 */
+  /* parser/parser.nit:21447 */
   fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
-  /* parser/parser.nit:21452 */
+  /* parser/parser.nit:21450 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21453 */
+  /* parser/parser.nit:21451 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21453);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21451);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58180,7 +58149,7 @@ void parser___ReduceAction654___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21458;
+  fra.me.line = 21456;
   fra.me.meth = LOCATE_parser___ReduceAction654___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -58192,32 +58161,32 @@ void parser___ReduceAction654___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:21460 */
+  /* parser/parser.nit:21458 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21461 */
+  /* parser/parser.nit:21459 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21462 */
+  /* parser/parser.nit:21460 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21463 */
+  /* parser/parser.nit:21461 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21465 */
+  /* parser/parser.nit:21463 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21465);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21463);
   }
-  /* parser/parser.nit:21466 */
+  /* parser/parser.nit:21464 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* parser/parser.nit:21467 */
+  /* parser/parser.nit:21465 */
   fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
-  /* parser/parser.nit:21470 */
+  /* parser/parser.nit:21468 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21471 */
+  /* parser/parser.nit:21469 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21471);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21469);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58232,7 +58201,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 = 21476;
+  fra.me.line = 21474;
   fra.me.meth = LOCATE_parser___ReduceAction656___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -58242,15 +58211,15 @@ void parser___ReduceAction656___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:21478 */
+  /* parser/parser.nit:21476 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21479 */
+  /* parser/parser.nit:21477 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21480 */
+  /* parser/parser.nit:21478 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21480);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21478);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58265,7 +58234,7 @@ void parser___ReduceAction657___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21485;
+  fra.me.line = 21483;
   fra.me.meth = LOCATE_parser___ReduceAction657___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58276,17 +58245,17 @@ void parser___ReduceAction657___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:21487 */
+  /* parser/parser.nit:21485 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21488 */
+  /* parser/parser.nit:21486 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21490 */
+  /* parser/parser.nit:21488 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21491 */
+  /* parser/parser.nit:21489 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21491);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21489);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58301,7 +58270,7 @@ void parser___ReduceAction658___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21496;
+  fra.me.line = 21494;
   fra.me.meth = LOCATE_parser___ReduceAction658___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58312,17 +58281,17 @@ void parser___ReduceAction658___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:21498 */
+  /* parser/parser.nit:21496 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21499 */
+  /* parser/parser.nit:21497 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21500 */
+  /* parser/parser.nit:21498 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21501 */
+  /* parser/parser.nit:21499 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21501);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21499);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58337,7 +58306,7 @@ void parser___ReduceAction659___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21506;
+  fra.me.line = 21504;
   fra.me.meth = LOCATE_parser___ReduceAction659___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58348,19 +58317,19 @@ void parser___ReduceAction659___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:21508 */
+  /* parser/parser.nit:21506 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21509 */
+  /* parser/parser.nit:21507 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21510 */
+  /* parser/parser.nit:21508 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21511 */
+  /* parser/parser.nit:21509 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21512 */
+  /* parser/parser.nit:21510 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21512);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21510);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58375,7 +58344,7 @@ void parser___ReduceAction931___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21517;
+  fra.me.line = 21515;
   fra.me.meth = LOCATE_parser___ReduceAction931___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -58388,41 +58357,41 @@ void parser___ReduceAction931___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:21519 */
+  /* parser/parser.nit:21517 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21520 */
+  /* parser/parser.nit:21518 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21521 */
+  /* parser/parser.nit:21519 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21522 */
+  /* parser/parser.nit:21520 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21524 */
+  /* parser/parser.nit:21522 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21524);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21522);
   }
-  /* parser/parser.nit:21526 */
+  /* parser/parser.nit:21524 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21526);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21524);
   }
-  /* parser/parser.nit:21528 */
+  /* parser/parser.nit:21526 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21528);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21526);
   }
-  /* parser/parser.nit:21529 */
+  /* parser/parser.nit:21527 */
   fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21534 */
+  /* parser/parser.nit:21532 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21535 */
+  /* parser/parser.nit:21533 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21535);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21533);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58437,7 +58406,7 @@ void parser___ReduceAction932___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21540;
+  fra.me.line = 21538;
   fra.me.meth = LOCATE_parser___ReduceAction932___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -58449,33 +58418,33 @@ void parser___ReduceAction932___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:21542 */
+  /* parser/parser.nit:21540 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21543 */
+  /* parser/parser.nit:21541 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21544 */
+  /* parser/parser.nit:21542 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21546 */
+  /* parser/parser.nit:21544 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21546);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21544);
   }
-  /* parser/parser.nit:21548 */
+  /* parser/parser.nit:21546 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21548);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21546);
   }
-  /* parser/parser.nit:21549 */
+  /* parser/parser.nit:21547 */
   fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21553 */
+  /* parser/parser.nit:21551 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21554 */
+  /* parser/parser.nit:21552 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21554);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21552);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58490,7 +58459,7 @@ void parser___ReduceAction933___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21559;
+  fra.me.line = 21557;
   fra.me.meth = LOCATE_parser___ReduceAction933___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -58504,43 +58473,43 @@ void parser___ReduceAction933___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:21561 */
+  /* parser/parser.nit:21559 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21562 */
+  /* parser/parser.nit:21560 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21563 */
+  /* parser/parser.nit:21561 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21564 */
+  /* parser/parser.nit:21562 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21565 */
+  /* parser/parser.nit:21563 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21567 */
+  /* parser/parser.nit:21565 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21567);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21565);
   }
-  /* parser/parser.nit:21569 */
+  /* parser/parser.nit:21567 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21569);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21567);
   }
-  /* parser/parser.nit:21571 */
+  /* parser/parser.nit:21569 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21571);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21569);
   }
-  /* parser/parser.nit:21572 */
+  /* parser/parser.nit:21570 */
   fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser.nit:21578 */
+  /* parser/parser.nit:21576 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:21579 */
+  /* parser/parser.nit:21577 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21579);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21577);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58555,7 +58524,7 @@ void parser___ReduceAction936___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21584;
+  fra.me.line = 21582;
   fra.me.meth = LOCATE_parser___ReduceAction936___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -58568,41 +58537,41 @@ void parser___ReduceAction936___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:21586 */
+  /* parser/parser.nit:21584 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21587 */
+  /* parser/parser.nit:21585 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21588 */
+  /* parser/parser.nit:21586 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21589 */
+  /* parser/parser.nit:21587 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21591 */
+  /* parser/parser.nit:21589 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21591);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21589);
   }
-  /* parser/parser.nit:21593 */
+  /* parser/parser.nit:21591 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21593);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21591);
   }
-  /* parser/parser.nit:21595 */
+  /* parser/parser.nit:21593 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21595);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21593);
   }
-  /* parser/parser.nit:21596 */
+  /* parser/parser.nit:21594 */
   fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21601 */
+  /* parser/parser.nit:21599 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21602 */
+  /* parser/parser.nit:21600 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21602);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21600);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58617,7 +58586,7 @@ void parser___ReduceAction957___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21607;
+  fra.me.line = 21605;
   fra.me.meth = LOCATE_parser___ReduceAction957___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58628,21 +58597,21 @@ void parser___ReduceAction957___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:21609 */
+  /* parser/parser.nit:21607 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21610 */
+  /* parser/parser.nit:21608 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:21609 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21611 */
+  /* parser/parser.nit:21610 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* parser/parser.nit:21612 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21614 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21615 */
+  /* parser/parser.nit:21613 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21615);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21613);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58657,7 +58626,7 @@ void parser___ReduceAction958___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21620;
+  fra.me.line = 21618;
   fra.me.meth = LOCATE_parser___ReduceAction958___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -58668,17 +58637,17 @@ void parser___ReduceAction958___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:21622 */
+  /* parser/parser.nit:21620 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21623 */
+  /* parser/parser.nit:21621 */
   fra.me.REG[3] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:21624 */
+  /* parser/parser.nit:21622 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21625 */
+  /* parser/parser.nit:21623 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21625);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21623);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58694,7 +58663,7 @@ void parser___ReduceAction1250___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21630;
+  fra.me.line = 21628;
   fra.me.meth = LOCATE_parser___ReduceAction1250___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -58706,13 +58675,13 @@ void parser___ReduceAction1250___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:21632 */
+  /* parser/parser.nit:21630 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21633 */
+  /* parser/parser.nit:21631 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21634 */
+  /* parser/parser.nit:21632 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21636 */
+  /* parser/parser.nit:21634 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -58727,16 +58696,16 @@ void parser___ReduceAction1250___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21637 */
+    /* parser/parser.nit:21635 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21639 */
+  /* parser/parser.nit:21637 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21640 */
+  /* parser/parser.nit:21638 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21640);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21638);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58752,7 +58721,7 @@ void parser___ReduceAction1251___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21645;
+  fra.me.line = 21643;
   fra.me.meth = LOCATE_parser___ReduceAction1251___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -58765,24 +58734,24 @@ void parser___ReduceAction1251___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:21647 */
+  /* parser/parser.nit:21645 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21648 */
+  /* parser/parser.nit:21646 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21649 */
+  /* parser/parser.nit:21647 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21650 */
+  /* parser/parser.nit:21648 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21652 */
+  /* parser/parser.nit:21650 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21652);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21650);
   }
-  /* parser/parser.nit:21654 */
+  /* parser/parser.nit:21652 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21655 */
+  /* parser/parser.nit:21653 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -58797,16 +58766,16 @@ void parser___ReduceAction1251___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21656 */
+    /* parser/parser.nit:21654 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21658 */
+  /* parser/parser.nit:21656 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21659 */
+  /* parser/parser.nit:21657 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21659);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21657);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58822,7 +58791,7 @@ void parser___ReduceAction1252___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21664;
+  fra.me.line = 21662;
   fra.me.meth = LOCATE_parser___ReduceAction1252___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -58834,13 +58803,13 @@ void parser___ReduceAction1252___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:21666 */
+  /* parser/parser.nit:21664 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21667 */
+  /* parser/parser.nit:21665 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21668 */
+  /* parser/parser.nit:21666 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21670 */
+  /* parser/parser.nit:21668 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -58855,16 +58824,16 @@ void parser___ReduceAction1252___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21671 */
+    /* parser/parser.nit:21669 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21673 */
+  /* parser/parser.nit:21671 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21674 */
+  /* parser/parser.nit:21672 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21674);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21672);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58880,7 +58849,7 @@ void parser___ReduceAction1253___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21679;
+  fra.me.line = 21677;
   fra.me.meth = LOCATE_parser___ReduceAction1253___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -58893,24 +58862,24 @@ void parser___ReduceAction1253___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:21681 */
+  /* parser/parser.nit:21679 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21682 */
+  /* parser/parser.nit:21680 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21683 */
+  /* parser/parser.nit:21681 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21684 */
+  /* parser/parser.nit:21682 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21686 */
+  /* parser/parser.nit:21684 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21686);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21684);
   }
-  /* parser/parser.nit:21688 */
+  /* parser/parser.nit:21686 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21689 */
+  /* parser/parser.nit:21687 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -58925,16 +58894,16 @@ void parser___ReduceAction1253___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21690 */
+    /* parser/parser.nit:21688 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21692 */
+  /* parser/parser.nit:21690 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21693 */
+  /* parser/parser.nit:21691 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21693);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21691);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -58950,7 +58919,7 @@ void parser___ReduceAction1254___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21698;
+  fra.me.line = 21696;
   fra.me.meth = LOCATE_parser___ReduceAction1254___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -58962,13 +58931,13 @@ void parser___ReduceAction1254___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:21700 */
+  /* parser/parser.nit:21698 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21701 */
+  /* parser/parser.nit:21699 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21702 */
+  /* parser/parser.nit:21700 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21704 */
+  /* parser/parser.nit:21702 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -58983,16 +58952,16 @@ void parser___ReduceAction1254___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21705 */
+    /* parser/parser.nit:21703 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21707 */
+  /* parser/parser.nit:21705 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21708 */
+  /* parser/parser.nit:21706 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21708);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21706);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59008,7 +58977,7 @@ void parser___ReduceAction1255___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21713;
+  fra.me.line = 21711;
   fra.me.meth = LOCATE_parser___ReduceAction1255___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59021,24 +58990,24 @@ void parser___ReduceAction1255___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:21715 */
+  /* parser/parser.nit:21713 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21716 */
+  /* parser/parser.nit:21714 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21717 */
+  /* parser/parser.nit:21715 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21718 */
+  /* parser/parser.nit:21716 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21720 */
+  /* parser/parser.nit:21718 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21720);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21718);
   }
-  /* parser/parser.nit:21722 */
+  /* parser/parser.nit:21720 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21723 */
+  /* parser/parser.nit:21721 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59053,16 +59022,16 @@ void parser___ReduceAction1255___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21724 */
+    /* parser/parser.nit:21722 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21726 */
+  /* parser/parser.nit:21724 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21727 */
+  /* parser/parser.nit:21725 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21727);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21725);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59078,7 +59047,7 @@ void parser___ReduceAction1256___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21732;
+  fra.me.line = 21730;
   fra.me.meth = LOCATE_parser___ReduceAction1256___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59090,13 +59059,13 @@ void parser___ReduceAction1256___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:21734 */
+  /* parser/parser.nit:21732 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21735 */
+  /* parser/parser.nit:21733 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21736 */
+  /* parser/parser.nit:21734 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21738 */
+  /* parser/parser.nit:21736 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59111,16 +59080,16 @@ void parser___ReduceAction1256___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21739 */
+    /* parser/parser.nit:21737 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21741 */
+  /* parser/parser.nit:21739 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21742 */
+  /* parser/parser.nit:21740 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21742);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21740);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59136,7 +59105,7 @@ void parser___ReduceAction1257___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21747;
+  fra.me.line = 21745;
   fra.me.meth = LOCATE_parser___ReduceAction1257___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59149,24 +59118,24 @@ void parser___ReduceAction1257___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:21749 */
+  /* parser/parser.nit:21747 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21750 */
+  /* parser/parser.nit:21748 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21751 */
+  /* parser/parser.nit:21749 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21752 */
+  /* parser/parser.nit:21750 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21754 */
+  /* parser/parser.nit:21752 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21754);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21752);
   }
-  /* parser/parser.nit:21756 */
+  /* parser/parser.nit:21754 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21757 */
+  /* parser/parser.nit:21755 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59181,16 +59150,16 @@ void parser___ReduceAction1257___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21758 */
+    /* parser/parser.nit:21756 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21760 */
+  /* parser/parser.nit:21758 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21761 */
+  /* parser/parser.nit:21759 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21761);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21759);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59206,7 +59175,7 @@ void parser___ReduceAction1258___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21766;
+  fra.me.line = 21764;
   fra.me.meth = LOCATE_parser___ReduceAction1258___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59218,13 +59187,13 @@ void parser___ReduceAction1258___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:21768 */
+  /* parser/parser.nit:21766 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21769 */
+  /* parser/parser.nit:21767 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21770 */
+  /* parser/parser.nit:21768 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21772 */
+  /* parser/parser.nit:21770 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59239,16 +59208,16 @@ void parser___ReduceAction1258___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21773 */
+    /* parser/parser.nit:21771 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21775 */
+  /* parser/parser.nit:21773 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21776 */
+  /* parser/parser.nit:21774 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21776);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21774);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59264,7 +59233,7 @@ void parser___ReduceAction1259___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21781;
+  fra.me.line = 21779;
   fra.me.meth = LOCATE_parser___ReduceAction1259___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59277,24 +59246,24 @@ void parser___ReduceAction1259___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:21783 */
+  /* parser/parser.nit:21781 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21784 */
+  /* parser/parser.nit:21782 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21785 */
+  /* parser/parser.nit:21783 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21786 */
+  /* parser/parser.nit:21784 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21788 */
+  /* parser/parser.nit:21786 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21788);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21786);
   }
-  /* parser/parser.nit:21790 */
+  /* parser/parser.nit:21788 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21791 */
+  /* parser/parser.nit:21789 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59309,16 +59278,16 @@ void parser___ReduceAction1259___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21792 */
+    /* parser/parser.nit:21790 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21794 */
+  /* parser/parser.nit:21792 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21795 */
+  /* parser/parser.nit:21793 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21795);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21793);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59334,7 +59303,7 @@ void parser___ReduceAction1262___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21800;
+  fra.me.line = 21798;
   fra.me.meth = LOCATE_parser___ReduceAction1262___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59346,13 +59315,13 @@ void parser___ReduceAction1262___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:21802 */
+  /* parser/parser.nit:21800 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21803 */
+  /* parser/parser.nit:21801 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21804 */
+  /* parser/parser.nit:21802 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21806 */
+  /* parser/parser.nit:21804 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59367,16 +59336,16 @@ void parser___ReduceAction1262___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21807 */
+    /* parser/parser.nit:21805 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21809 */
+  /* parser/parser.nit:21807 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21810 */
+  /* parser/parser.nit:21808 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21810);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21808);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59392,7 +59361,7 @@ void parser___ReduceAction1263___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21815;
+  fra.me.line = 21813;
   fra.me.meth = LOCATE_parser___ReduceAction1263___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59405,24 +59374,24 @@ void parser___ReduceAction1263___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:21817 */
+  /* parser/parser.nit:21815 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21818 */
+  /* parser/parser.nit:21816 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21819 */
+  /* parser/parser.nit:21817 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21820 */
+  /* parser/parser.nit:21818 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21822 */
+  /* parser/parser.nit:21820 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21822);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21820);
   }
-  /* parser/parser.nit:21824 */
+  /* parser/parser.nit:21822 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21825 */
+  /* parser/parser.nit:21823 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59437,16 +59406,16 @@ void parser___ReduceAction1263___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21826 */
+    /* parser/parser.nit:21824 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21828 */
+  /* parser/parser.nit:21826 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21829 */
+  /* parser/parser.nit:21827 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21829);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21827);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59462,7 +59431,7 @@ void parser___ReduceAction1264___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21834;
+  fra.me.line = 21832;
   fra.me.meth = LOCATE_parser___ReduceAction1264___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59474,13 +59443,13 @@ void parser___ReduceAction1264___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:21836 */
+  /* parser/parser.nit:21834 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21837 */
+  /* parser/parser.nit:21835 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21838 */
+  /* parser/parser.nit:21836 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21840 */
+  /* parser/parser.nit:21838 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59495,16 +59464,16 @@ void parser___ReduceAction1264___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21841 */
+    /* parser/parser.nit:21839 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21843 */
+  /* parser/parser.nit:21841 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21844 */
+  /* parser/parser.nit:21842 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21844);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21842);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59520,7 +59489,7 @@ void parser___ReduceAction1265___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21849;
+  fra.me.line = 21847;
   fra.me.meth = LOCATE_parser___ReduceAction1265___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59533,24 +59502,24 @@ void parser___ReduceAction1265___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:21851 */
+  /* parser/parser.nit:21849 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21852 */
+  /* parser/parser.nit:21850 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21853 */
+  /* parser/parser.nit:21851 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21854 */
+  /* parser/parser.nit:21852 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21856 */
+  /* parser/parser.nit:21854 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21856);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21854);
   }
-  /* parser/parser.nit:21858 */
+  /* parser/parser.nit:21856 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21859 */
+  /* parser/parser.nit:21857 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59565,16 +59534,16 @@ void parser___ReduceAction1265___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21860 */
+    /* parser/parser.nit:21858 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21862 */
+  /* parser/parser.nit:21860 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21863 */
+  /* parser/parser.nit:21861 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21863);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21861);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59590,7 +59559,7 @@ void parser___ReduceAction1266___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21868;
+  fra.me.line = 21866;
   fra.me.meth = LOCATE_parser___ReduceAction1266___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59602,13 +59571,13 @@ void parser___ReduceAction1266___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:21870 */
+  /* parser/parser.nit:21868 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21871 */
+  /* parser/parser.nit:21869 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21872 */
+  /* parser/parser.nit:21870 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21874 */
+  /* parser/parser.nit:21872 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59623,16 +59592,16 @@ void parser___ReduceAction1266___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21875 */
+    /* parser/parser.nit:21873 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21877 */
+  /* parser/parser.nit:21875 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21878 */
+  /* parser/parser.nit:21876 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21878);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21876);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59648,7 +59617,7 @@ void parser___ReduceAction1267___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21883;
+  fra.me.line = 21881;
   fra.me.meth = LOCATE_parser___ReduceAction1267___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59661,24 +59630,24 @@ void parser___ReduceAction1267___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:21885 */
+  /* parser/parser.nit:21883 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21886 */
+  /* parser/parser.nit:21884 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21887 */
+  /* parser/parser.nit:21885 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21888 */
+  /* parser/parser.nit:21886 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21890 */
+  /* parser/parser.nit:21888 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21890);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21888);
   }
-  /* parser/parser.nit:21892 */
+  /* parser/parser.nit:21890 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21893 */
+  /* parser/parser.nit:21891 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59693,16 +59662,16 @@ void parser___ReduceAction1267___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21894 */
+    /* parser/parser.nit:21892 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21896 */
+  /* parser/parser.nit:21894 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21897 */
+  /* parser/parser.nit:21895 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21897);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21895);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59718,7 +59687,7 @@ void parser___ReduceAction1268___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21902;
+  fra.me.line = 21900;
   fra.me.meth = LOCATE_parser___ReduceAction1268___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59730,13 +59699,13 @@ void parser___ReduceAction1268___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:21904 */
+  /* parser/parser.nit:21902 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21905 */
+  /* parser/parser.nit:21903 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21906 */
+  /* parser/parser.nit:21904 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21908 */
+  /* parser/parser.nit:21906 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59751,16 +59720,16 @@ void parser___ReduceAction1268___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21909 */
+    /* parser/parser.nit:21907 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21911 */
+  /* parser/parser.nit:21909 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21912 */
+  /* parser/parser.nit:21910 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21912);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21910);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59776,7 +59745,7 @@ void parser___ReduceAction1269___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21917;
+  fra.me.line = 21915;
   fra.me.meth = LOCATE_parser___ReduceAction1269___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59789,24 +59758,24 @@ void parser___ReduceAction1269___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:21919 */
+  /* parser/parser.nit:21917 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21920 */
+  /* parser/parser.nit:21918 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21921 */
+  /* parser/parser.nit:21919 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21922 */
+  /* parser/parser.nit:21920 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21924 */
+  /* parser/parser.nit:21922 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21924);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21922);
   }
-  /* parser/parser.nit:21926 */
+  /* parser/parser.nit:21924 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21927 */
+  /* parser/parser.nit:21925 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59821,16 +59790,16 @@ void parser___ReduceAction1269___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21928 */
+    /* parser/parser.nit:21926 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21930 */
+  /* parser/parser.nit:21928 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21931 */
+  /* parser/parser.nit:21929 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21931);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21929);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59846,7 +59815,7 @@ void parser___ReduceAction1271___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21936;
+  fra.me.line = 21934;
   fra.me.meth = LOCATE_parser___ReduceAction1271___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59859,24 +59828,24 @@ void parser___ReduceAction1271___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:21938 */
+  /* parser/parser.nit:21936 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21939 */
+  /* parser/parser.nit:21937 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21940 */
+  /* parser/parser.nit:21938 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21941 */
+  /* parser/parser.nit:21939 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21943 */
+  /* parser/parser.nit:21941 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21943);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21941);
   }
-  /* parser/parser.nit:21945 */
+  /* parser/parser.nit:21943 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21946 */
+  /* parser/parser.nit:21944 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59891,16 +59860,16 @@ void parser___ReduceAction1271___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21947 */
+    /* parser/parser.nit:21945 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21949 */
+  /* parser/parser.nit:21947 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21950 */
+  /* parser/parser.nit:21948 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21950);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21948);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59916,7 +59885,7 @@ void parser___ReduceAction1272___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21955;
+  fra.me.line = 21953;
   fra.me.meth = LOCATE_parser___ReduceAction1272___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -59928,13 +59897,13 @@ void parser___ReduceAction1272___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:21957 */
+  /* parser/parser.nit:21955 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21958 */
+  /* parser/parser.nit:21956 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21959 */
+  /* parser/parser.nit:21957 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21961 */
+  /* parser/parser.nit:21959 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -59949,16 +59918,16 @@ void parser___ReduceAction1272___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21962 */
+    /* parser/parser.nit:21960 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21964 */
+  /* parser/parser.nit:21962 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21965 */
+  /* parser/parser.nit:21963 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21965);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21963);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -59974,7 +59943,7 @@ void parser___ReduceAction1273___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21970;
+  fra.me.line = 21968;
   fra.me.meth = LOCATE_parser___ReduceAction1273___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -59987,24 +59956,24 @@ void parser___ReduceAction1273___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:21972 */
+  /* parser/parser.nit:21970 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21973 */
+  /* parser/parser.nit:21971 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21974 */
+  /* parser/parser.nit:21972 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21975 */
+  /* parser/parser.nit:21973 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21977 */
+  /* parser/parser.nit:21975 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21977);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21975);
   }
-  /* parser/parser.nit:21979 */
+  /* parser/parser.nit:21977 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:21980 */
+  /* parser/parser.nit:21978 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60019,16 +59988,16 @@ void parser___ReduceAction1273___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:21981 */
+    /* parser/parser.nit:21979 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:21983 */
+  /* parser/parser.nit:21981 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21984 */
+  /* parser/parser.nit:21982 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21984);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21982);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60043,7 +60012,7 @@ void parser___ReduceAction1275___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 21989;
+  fra.me.line = 21987;
   fra.me.meth = LOCATE_parser___ReduceAction1275___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -60056,39 +60025,39 @@ void parser___ReduceAction1275___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:21991 */
+  /* parser/parser.nit:21989 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21992 */
+  /* parser/parser.nit:21990 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21993 */
+  /* parser/parser.nit:21991 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21994 */
+  /* parser/parser.nit:21992 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21996 */
+  /* parser/parser.nit:21994 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21996);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21994);
   }
-  /* parser/parser.nit:21998 */
+  /* parser/parser.nit:21996 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 21998);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 21996);
   }
-  /* parser/parser.nit:21999 */
+  /* parser/parser.nit:21997 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:22000 */
+  /* parser/parser.nit:21998 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:22001 */
+  /* parser/parser.nit:21999 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22002 */
+  /* parser/parser.nit:22000 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22002);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22000);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60104,7 +60073,7 @@ void parser___ReduceAction1277___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22007;
+  fra.me.line = 22005;
   fra.me.meth = LOCATE_parser___ReduceAction1277___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -60117,24 +60086,24 @@ void parser___ReduceAction1277___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:22009 */
+  /* parser/parser.nit:22007 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22010 */
+  /* parser/parser.nit:22008 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22011 */
+  /* parser/parser.nit:22009 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22012 */
+  /* parser/parser.nit:22010 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22014 */
+  /* parser/parser.nit:22012 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 22014);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22012);
   }
-  /* parser/parser.nit:22016 */
+  /* parser/parser.nit:22014 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:22017 */
+  /* parser/parser.nit:22015 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60149,16 +60118,16 @@ void parser___ReduceAction1277___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22018 */
+    /* parser/parser.nit:22016 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22020 */
+  /* parser/parser.nit:22018 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22021 */
+  /* parser/parser.nit:22019 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22021);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22019);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60174,7 +60143,7 @@ void parser___ReduceAction1281___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22026;
+  fra.me.line = 22024;
   fra.me.meth = LOCATE_parser___ReduceAction1281___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -60187,24 +60156,24 @@ void parser___ReduceAction1281___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:22028 */
+  /* parser/parser.nit:22026 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22029 */
+  /* parser/parser.nit:22027 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22030 */
+  /* parser/parser.nit:22028 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22031 */
+  /* parser/parser.nit:22029 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22033 */
+  /* parser/parser.nit:22031 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 22033);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22031);
   }
-  /* parser/parser.nit:22035 */
+  /* parser/parser.nit:22033 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:22036 */
+  /* parser/parser.nit:22034 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60219,16 +60188,16 @@ void parser___ReduceAction1281___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22037 */
+    /* parser/parser.nit:22035 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22039 */
+  /* parser/parser.nit:22037 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22040 */
+  /* parser/parser.nit:22038 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22040);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22038);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60244,7 +60213,7 @@ void parser___ReduceAction1285___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22045;
+  fra.me.line = 22043;
   fra.me.meth = LOCATE_parser___ReduceAction1285___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -60257,24 +60226,24 @@ void parser___ReduceAction1285___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:22047 */
+  /* parser/parser.nit:22045 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22048 */
+  /* parser/parser.nit:22046 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22049 */
+  /* parser/parser.nit:22047 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22050 */
+  /* parser/parser.nit:22048 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22052 */
+  /* parser/parser.nit:22050 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 22052);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22050);
   }
-  /* parser/parser.nit:22054 */
+  /* parser/parser.nit:22052 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:22055 */
+  /* parser/parser.nit:22053 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60289,16 +60258,16 @@ void parser___ReduceAction1285___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22056 */
+    /* parser/parser.nit:22054 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22058 */
+  /* parser/parser.nit:22056 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22059 */
+  /* parser/parser.nit:22057 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22059);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22057);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60314,7 +60283,7 @@ void parser___ReduceAction1286___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22064;
+  fra.me.line = 22062;
   fra.me.meth = LOCATE_parser___ReduceAction1286___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -60326,13 +60295,13 @@ void parser___ReduceAction1286___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:22066 */
+  /* parser/parser.nit:22064 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22067 */
+  /* parser/parser.nit:22065 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22068 */
+  /* parser/parser.nit:22066 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22070 */
+  /* parser/parser.nit:22068 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60347,16 +60316,16 @@ void parser___ReduceAction1286___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22071 */
+    /* parser/parser.nit:22069 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22073 */
+  /* parser/parser.nit:22071 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:22074 */
+  /* parser/parser.nit:22072 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22074);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22072);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60372,7 +60341,7 @@ void parser___ReduceAction1287___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22079;
+  fra.me.line = 22077;
   fra.me.meth = LOCATE_parser___ReduceAction1287___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -60385,24 +60354,24 @@ void parser___ReduceAction1287___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:22081 */
+  /* parser/parser.nit:22079 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22082 */
+  /* parser/parser.nit:22080 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22083 */
+  /* parser/parser.nit:22081 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22084 */
+  /* parser/parser.nit:22082 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22086 */
+  /* parser/parser.nit:22084 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 22086);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22084);
   }
-  /* parser/parser.nit:22088 */
+  /* parser/parser.nit:22086 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:22089 */
+  /* parser/parser.nit:22087 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60417,16 +60386,16 @@ void parser___ReduceAction1287___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22090 */
+    /* parser/parser.nit:22088 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22092 */
+  /* parser/parser.nit:22090 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22093 */
+  /* parser/parser.nit:22091 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22093);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22091);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60442,7 +60411,7 @@ void parser___ReduceAction1288___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22098;
+  fra.me.line = 22096;
   fra.me.meth = LOCATE_parser___ReduceAction1288___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -60454,13 +60423,13 @@ void parser___ReduceAction1288___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:22100 */
+  /* parser/parser.nit:22098 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22101 */
+  /* parser/parser.nit:22099 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22102 */
+  /* parser/parser.nit:22100 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22104 */
+  /* parser/parser.nit:22102 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60475,16 +60444,16 @@ void parser___ReduceAction1288___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22105 */
+    /* parser/parser.nit:22103 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22107 */
+  /* parser/parser.nit:22105 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:22108 */
+  /* parser/parser.nit:22106 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22108);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22106);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -60500,7 +60469,7 @@ void parser___ReduceAction1289___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 22113;
+  fra.me.line = 22111;
   fra.me.meth = LOCATE_parser___ReduceAction1289___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -60513,24 +60482,24 @@ void parser___ReduceAction1289___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:22115 */
+  /* parser/parser.nit:22113 */
   fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22116 */
+  /* parser/parser.nit:22114 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22117 */
+  /* parser/parser.nit:22115 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22118 */
+  /* parser/parser.nit:22116 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22120 */
+  /* parser/parser.nit:22118 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 22120);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 22118);
   }
-  /* parser/parser.nit:22122 */
+  /* parser/parser.nit:22120 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:22123 */
+  /* parser/parser.nit:22121 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -60545,16 +60514,16 @@ void parser___ReduceAction1289___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser.nit:22124 */
+    /* parser/parser.nit:22122 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* parser/parser.nit:22126 */
+  /* parser/parser.nit:22124 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22127 */
+  /* parser/parser.nit:22125 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22127);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22125);
   }
   REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
index a9546b2..74797f0 100644 (file)
@@ -4224,7 +4224,7 @@ void parser___lexer___EOF___init_tk(val_t p0, val_t p1, int* init_table){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -4611,36 +4611,36 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/lexer.nit:1245 */
+  /* parser/lexer.nit:1246 */
   REGB0 = TAG_Int(0);
-  /* parser/lexer.nit:1247 */
+  /* parser/lexer.nit:1248 */
   REGB1 = TAG_Bool(ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_parser___lexer, 1247);
+    nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_parser___lexer, 1248);
   }
   REGB1 = ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]);
-  /* parser/lexer.nit:1248 */
-  REGB2 = REGB1;
   /* parser/lexer.nit:1249 */
+  REGB2 = REGB1;
+  /* parser/lexer.nit:1250 */
   REGB3 = TAG_Bool(ATTR_parser___lexer___Lexer____pos(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_pos", LOCATE_parser___lexer, 1249);
+    nit_abort("Uninitialized attribute %s", "_pos", LOCATE_parser___lexer, 1250);
   }
   REGB3 = ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]);
-  /* parser/lexer.nit:1250 */
+  /* parser/lexer.nit:1251 */
   REGB4 = TAG_Bool(ATTR_parser___lexer___Lexer____line(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_line", LOCATE_parser___lexer, 1250);
+    nit_abort("Uninitialized attribute %s", "_line", LOCATE_parser___lexer, 1251);
   }
   REGB4 = ATTR_parser___lexer___Lexer____line(fra.me.REG[0]);
-  /* parser/lexer.nit:1251 */
+  /* parser/lexer.nit:1252 */
   REGB5 = TAG_Bool(ATTR_parser___lexer___Lexer____file(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB5)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1251);
+    nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1252);
   }
   fra.me.REG[1] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
   fra.me.REG[1] = CALL_location___SourceFile___string(fra.me.REG[1])(fra.me.REG[1]);
@@ -4651,1970 +4651,1970 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* parser/lexer.nit:1254 */
+  /* parser/lexer.nit:1255 */
   REGB6 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB6 = TAG_Int(-UNTAG_Int(REGB6));
-  /* parser/lexer.nit:1255 */
+  /* parser/lexer.nit:1256 */
   REGB7 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB7 = TAG_Int(-UNTAG_Int(REGB7));
-  /* parser/lexer.nit:1256 */
+  /* parser/lexer.nit:1257 */
   REGB8 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB8 = TAG_Int(-UNTAG_Int(REGB8));
-  /* parser/lexer.nit:1257 */
+  /* parser/lexer.nit:1258 */
   REGB9 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB9 = TAG_Int(-UNTAG_Int(REGB9));
-  /* parser/lexer.nit:1258 */
+  /* parser/lexer.nit:1259 */
   REGB10 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB10 = TAG_Int(-UNTAG_Int(REGB10));
-  /* parser/lexer.nit:1260 */
+  /* parser/lexer.nit:1261 */
   while(1) {
     REGB11 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB11)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB11 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB5));
-    /* parser/lexer.nit:1261 */
+    /* parser/lexer.nit:1262 */
     if (UNTAG_Bool(REGB11)) {
-      /* parser/lexer.nit:1262 */
+      /* parser/lexer.nit:1263 */
       REGB11 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB11 = TAG_Int(-UNTAG_Int(REGB11));
-      /* parser/lexer.nit:1262 */
+      /* parser/lexer.nit:1263 */
       REGB0 = REGB11;
     } else {
-      /* parser/lexer.nit:1264 */
+      /* parser/lexer.nit:1265 */
       REGB11 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB11 = TAG_Int((unsigned char)UNTAG_Char(REGB11));
-      /* parser/lexer.nit:1265 */
+      /* parser/lexer.nit:1266 */
       REGB12 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB12 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB12));
-      /* parser/lexer.nit:1265 */
+      /* parser/lexer.nit:1266 */
       REGB1 = REGB12;
-      /* parser/lexer.nit:1267 */
+      /* parser/lexer.nit:1268 */
       REGB12 = TAG_Bool(ATTR_parser___lexer___Lexer____cr(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB12)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_cr", LOCATE_parser___lexer, 1267);
+        nit_abort("Uninitialized attribute %s", "_cr", LOCATE_parser___lexer, 1268);
       }
       REGB12 = ATTR_parser___lexer___Lexer____cr(fra.me.REG[0]);
-      /* parser/lexer.nit:1268 */
+      /* parser/lexer.nit:1269 */
       REGB13 = TAG_Bool(ATTR_parser___lexer___Lexer____line(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB13)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_line", LOCATE_parser___lexer, 1268);
+        nit_abort("Uninitialized attribute %s", "_line", LOCATE_parser___lexer, 1269);
       }
       REGB13 = ATTR_parser___lexer___Lexer____line(fra.me.REG[0]);
-      /* parser/lexer.nit:1269 */
+      /* parser/lexer.nit:1270 */
       REGB14 = TAG_Bool(ATTR_parser___lexer___Lexer____pos(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB14)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_pos", LOCATE_parser___lexer, 1269);
+        nit_abort("Uninitialized attribute %s", "_pos", LOCATE_parser___lexer, 1270);
       }
       REGB14 = ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]);
-      /* parser/lexer.nit:1270 */
+      /* parser/lexer.nit:1271 */
       REGB15 = TAG_Int(10);
       REGB16 = TAG_Bool(IS_EQUAL_OO(REGB11,REGB15));
       if (UNTAG_Bool(REGB16)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB15 = TAG_Bool((REGB11)==(REGB15));
-        /* parser/lexer.nit:1270 */
+        /* parser/lexer.nit:1271 */
         REGB16 = REGB15;
       }
       if (UNTAG_Bool(REGB16)) {
-        /* parser/lexer.nit:1271 */
+        /* parser/lexer.nit:1272 */
         if (UNTAG_Bool(REGB12)) {
-          /* parser/lexer.nit:1272 */
+          /* parser/lexer.nit:1273 */
           REGB16 = TAG_Bool(0);
           REGB12 = REGB16;
-          /* parser/lexer.nit:1273 */
+          /* parser/lexer.nit:1274 */
           REGB16 = TAG_Bool(ATTR_parser___lexer___Lexer____file(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB16)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1273);
+            nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1274);
           }
           fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
           fra.me.REG[2] = CALL_location___SourceFile___line_starts(fra.me.REG[2])(fra.me.REG[2]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
         } else {
-          /* parser/lexer.nit:1275 */
+          /* parser/lexer.nit:1276 */
           REGB16 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB16 = TAG_Int(UNTAG_Int(REGB13)+UNTAG_Int(REGB16));
-          /* parser/lexer.nit:1275 */
-          REGB13 = REGB16;
           /* parser/lexer.nit:1276 */
+          REGB13 = REGB16;
+          /* parser/lexer.nit:1277 */
           REGB16 = TAG_Int(0);
           REGB14 = REGB16;
-          /* parser/lexer.nit:1277 */
+          /* parser/lexer.nit:1278 */
           REGB16 = TAG_Bool(ATTR_parser___lexer___Lexer____file(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB16)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1277);
+            nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1278);
           }
           fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
           fra.me.REG[2] = CALL_location___SourceFile___line_starts(fra.me.REG[2])(fra.me.REG[2]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
         }
       } else {
-        /* parser/lexer.nit:1279 */
+        /* parser/lexer.nit:1280 */
         REGB16 = TAG_Int(13);
         REGB15 = TAG_Bool(IS_EQUAL_OO(REGB11,REGB16));
         if (UNTAG_Bool(REGB15)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB16 = TAG_Bool((REGB11)==(REGB16));
-          /* parser/lexer.nit:1279 */
+          /* parser/lexer.nit:1280 */
           REGB15 = REGB16;
         }
         if (UNTAG_Bool(REGB15)) {
-          /* parser/lexer.nit:1280 */
+          /* parser/lexer.nit:1281 */
           REGB15 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB15 = TAG_Int(UNTAG_Int(REGB13)+UNTAG_Int(REGB15));
-          /* parser/lexer.nit:1280 */
-          REGB13 = REGB15;
           /* parser/lexer.nit:1281 */
+          REGB13 = REGB15;
+          /* parser/lexer.nit:1282 */
           REGB15 = TAG_Int(0);
           REGB14 = REGB15;
-          /* parser/lexer.nit:1282 */
+          /* parser/lexer.nit:1283 */
           REGB15 = TAG_Bool(1);
           REGB12 = REGB15;
-          /* parser/lexer.nit:1283 */
+          /* parser/lexer.nit:1284 */
           REGB15 = TAG_Bool(ATTR_parser___lexer___Lexer____file(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB15)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1283);
+            nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1284);
           }
           fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
           fra.me.REG[2] = CALL_location___SourceFile___line_starts(fra.me.REG[2])(fra.me.REG[2]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
         } else {
-          /* parser/lexer.nit:1285 */
+          /* parser/lexer.nit:1286 */
           REGB15 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB15 = TAG_Int(UNTAG_Int(REGB14)+UNTAG_Int(REGB15));
-          /* parser/lexer.nit:1285 */
-          REGB14 = REGB15;
           /* parser/lexer.nit:1286 */
+          REGB14 = REGB15;
+          /* parser/lexer.nit:1287 */
           REGB15 = TAG_Bool(0);
           REGB12 = REGB15;
         }
       }
-      /* parser/lexer.nit:1289 */
+      /* parser/lexer.nit:1290 */
       while(1) {
-        /* parser/lexer.nit:1290 */
-        REGB15 = REGB0;
         /* parser/lexer.nit:1291 */
+        REGB15 = REGB0;
+        /* parser/lexer.nit:1292 */
         REGB16 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:239 */
+        /* ../lib/standard/kernel.nit:246 */
         REGB16 = TAG_Int(-UNTAG_Int(REGB16));
         REGB17 = TAG_Bool(VAL_ISA(REGB16, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB17)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB16 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB16));
-        /* parser/lexer.nit:1291 */
+        /* parser/lexer.nit:1292 */
         if (UNTAG_Bool(REGB16)) {
-          /* parser/lexer.nit:1292 */
+          /* parser/lexer.nit:1293 */
           REGB16 = TAG_Int(2);
-          /* ../lib/standard/kernel.nit:239 */
+          /* ../lib/standard/kernel.nit:246 */
           REGB16 = TAG_Int(-UNTAG_Int(REGB16));
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB16 = TAG_Int(UNTAG_Int(REGB16)-UNTAG_Int(REGB0));
-          /* parser/lexer.nit:1292 */
+          /* parser/lexer.nit:1293 */
           REGB15 = REGB16;
         }
-        /* parser/lexer.nit:1295 */
+        /* parser/lexer.nit:1296 */
         REGB16 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:239 */
+        /* ../lib/standard/kernel.nit:246 */
         REGB16 = TAG_Int(-UNTAG_Int(REGB16));
-        /* parser/lexer.nit:1295 */
+        /* parser/lexer.nit:1296 */
         REGB0 = REGB16;
-        /* parser/lexer.nit:1297 */
-        REGB16 = TAG_Int(0);
         /* parser/lexer.nit:1298 */
+        REGB16 = TAG_Int(0);
+        /* parser/lexer.nit:1299 */
         REGB17 = TAG_Int(0);
         REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB17);
         REGB18 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB18 = TAG_Int(UNTAG_Int(REGB17)-UNTAG_Int(REGB18));
-        /* parser/lexer.nit:1300 */
+        /* parser/lexer.nit:1301 */
         REGB17 = TAG_Int(0);
         REGB19 = TAG_Bool(VAL_ISA(REGB17, VTCOLOR_standard___kernel___Comparable___OTHER(REGB18), VTID_standard___kernel___Comparable___OTHER(REGB18))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB19)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB17 = TAG_Bool(UNTAG_Int(REGB18)>=UNTAG_Int(REGB17));
-        /* parser/lexer.nit:1300 */
+        /* parser/lexer.nit:1301 */
         if (UNTAG_Bool(REGB17)) {
-          /* parser/lexer.nit:1301 */
+          /* parser/lexer.nit:1302 */
           while(1) {
             REGB17 = TAG_Bool(VAL_ISA(REGB18, VTCOLOR_standard___kernel___Comparable___OTHER(REGB16), VTID_standard___kernel___Comparable___OTHER(REGB16))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB17)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:234 */
+            /* ../lib/standard/kernel.nit:241 */
             REGB17 = TAG_Bool(UNTAG_Int(REGB16)<=UNTAG_Int(REGB18));
-            /* parser/lexer.nit:1301 */
+            /* parser/lexer.nit:1302 */
             if (UNTAG_Bool(REGB17)) {
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB17 = TAG_Int(UNTAG_Int(REGB16)+UNTAG_Int(REGB18));
-              /* parser/lexer.nit:1302 */
+              /* parser/lexer.nit:1303 */
               REGB19 = TAG_Int(2);
-              /* ../lib/standard/kernel.nit:242 */
+              /* ../lib/standard/kernel.nit:249 */
               REGB19 = TAG_Int(UNTAG_Int(REGB17)/UNTAG_Int(REGB19));
-              /* parser/lexer.nit:1303 */
+              /* parser/lexer.nit:1304 */
               REGB17 = TAG_Int(3);
-              /* ../lib/standard/kernel.nit:241 */
+              /* ../lib/standard/kernel.nit:248 */
               REGB17 = TAG_Int(UNTAG_Int(REGB19)*UNTAG_Int(REGB17));
-              /* parser/lexer.nit:1303 */
+              /* parser/lexer.nit:1304 */
               REGB20 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB20 = TAG_Int(UNTAG_Int(REGB17)+UNTAG_Int(REGB20));
-              /* parser/lexer.nit:1305 */
+              /* parser/lexer.nit:1306 */
               REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB20);
               REGB21 = TAG_Bool(VAL_ISA(REGB17, VTCOLOR_standard___kernel___Comparable___OTHER(REGB11), VTID_standard___kernel___Comparable___OTHER(REGB11))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB21)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB17 = TAG_Bool(UNTAG_Int(REGB11)<UNTAG_Int(REGB17));
-              /* parser/lexer.nit:1305 */
+              /* parser/lexer.nit:1306 */
               if (UNTAG_Bool(REGB17)) {
-               /* parser/lexer.nit:1306 */
+               /* parser/lexer.nit:1307 */
                REGB17 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:240 */
+               /* ../lib/standard/kernel.nit:247 */
                REGB17 = TAG_Int(UNTAG_Int(REGB19)-UNTAG_Int(REGB17));
-               /* parser/lexer.nit:1306 */
+               /* parser/lexer.nit:1307 */
                REGB18 = REGB17;
               } else {
-               /* parser/lexer.nit:1307 */
+               /* parser/lexer.nit:1308 */
                REGB17 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB17 = TAG_Int(UNTAG_Int(REGB20)+UNTAG_Int(REGB17));
-               /* parser/lexer.nit:1307 */
+               /* parser/lexer.nit:1308 */
                REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB17);
                REGB21 = TAG_Bool(VAL_ISA(REGB17, VTCOLOR_standard___kernel___Comparable___OTHER(REGB11), VTID_standard___kernel___Comparable___OTHER(REGB11))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB21)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:237 */
+               /* ../lib/standard/kernel.nit:244 */
                REGB17 = TAG_Bool(UNTAG_Int(REGB11)>UNTAG_Int(REGB17));
-               /* parser/lexer.nit:1307 */
-               if (UNTAG_Bool(REGB17)) {
                /* parser/lexer.nit:1308 */
+               if (UNTAG_Bool(REGB17)) {
+               /* parser/lexer.nit:1309 */
                REGB17 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB17 = TAG_Int(UNTAG_Int(REGB19)+UNTAG_Int(REGB17));
-               /* parser/lexer.nit:1308 */
+               /* parser/lexer.nit:1309 */
                REGB16 = REGB17;
                } else {
-               /* parser/lexer.nit:1310 */
+               /* parser/lexer.nit:1311 */
                REGB17 = TAG_Int(2);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB17 = TAG_Int(UNTAG_Int(REGB20)+UNTAG_Int(REGB17));
-               /* parser/lexer.nit:1310 */
+               /* parser/lexer.nit:1311 */
                REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB17);
                REGB0 = REGB17;
-               /* parser/lexer.nit:1311 */
+               /* parser/lexer.nit:1312 */
                goto label1;
                }
               }
             } else {
-              /* parser/lexer.nit:1301 */
+              /* parser/lexer.nit:1302 */
               goto label1;
             }
           }
           label1: while(0);
         }
-        /* parser/lexer.nit:1315 */
+        /* parser/lexer.nit:1316 */
         REGB15 = TAG_Int(2);
-        /* ../lib/standard/kernel.nit:239 */
+        /* ../lib/standard/kernel.nit:246 */
         REGB15 = TAG_Int(-UNTAG_Int(REGB15));
         REGB16 = TAG_Bool(VAL_ISA(REGB15, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB16)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB15 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB15));
-        /* parser/lexer.nit:1315 */
+        /* parser/lexer.nit:1316 */
         if (UNTAG_Bool(REGB15)) {
           goto label2;
         }
       }
       label2: while(0);
-      /* parser/lexer.nit:1318 */
-      ATTR_parser___lexer___Lexer____cr(fra.me.REG[0]) = REGB12;
       /* parser/lexer.nit:1319 */
-      ATTR_parser___lexer___Lexer____line(fra.me.REG[0]) = REGB13;
+      ATTR_parser___lexer___Lexer____cr(fra.me.REG[0]) = REGB12;
       /* parser/lexer.nit:1320 */
+      ATTR_parser___lexer___Lexer____line(fra.me.REG[0]) = REGB13;
+      /* parser/lexer.nit:1321 */
       ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]) = REGB14;
     }
-    /* parser/lexer.nit:1323 */
+    /* parser/lexer.nit:1324 */
     REGB14 = TAG_Int(0);
     REGB13 = TAG_Bool(VAL_ISA(REGB14, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB13)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB14 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB14));
-    /* parser/lexer.nit:1323 */
+    /* parser/lexer.nit:1324 */
     if (UNTAG_Bool(REGB14)) {
-      /* parser/lexer.nit:1324 */
-      REGB14 = CALL_parser___tables___TablesCapable___lexer_accept(fra.me.REG[0])(fra.me.REG[0], REGB0);
       /* parser/lexer.nit:1325 */
+      REGB14 = CALL_parser___tables___TablesCapable___lexer_accept(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      /* parser/lexer.nit:1326 */
       REGB13 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB13 = TAG_Int(-UNTAG_Int(REGB13));
-      /* parser/lexer.nit:1325 */
+      /* parser/lexer.nit:1326 */
       REGB12 = TAG_Bool(IS_EQUAL_OO(REGB14,REGB13));
       if (UNTAG_Bool(REGB12)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB13 = TAG_Bool((REGB14)==(REGB13));
-        /* parser/lexer.nit:1325 */
+        /* parser/lexer.nit:1326 */
         REGB12 = REGB13;
       }
       REGB12 = TAG_Bool(!UNTAG_Bool(REGB12));
       if (UNTAG_Bool(REGB12)) {
-        /* parser/lexer.nit:1326 */
-        REGB6 = REGB0;
         /* parser/lexer.nit:1327 */
+        REGB6 = REGB0;
+        /* parser/lexer.nit:1328 */
         REGB7 = REGB14;
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB14 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-        /* parser/lexer.nit:1328 */
-        REGB8 = REGB14;
         /* parser/lexer.nit:1329 */
+        REGB8 = REGB14;
+        /* parser/lexer.nit:1330 */
         REGB14 = TAG_Bool(ATTR_parser___lexer___Lexer____pos(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB14)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_pos", LOCATE_parser___lexer, 1329);
+          nit_abort("Uninitialized attribute %s", "_pos", LOCATE_parser___lexer, 1330);
         }
         REGB14 = ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]);
         REGB9 = REGB14;
-        /* parser/lexer.nit:1330 */
+        /* parser/lexer.nit:1331 */
         REGB14 = TAG_Bool(ATTR_parser___lexer___Lexer____line(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB14)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_line", LOCATE_parser___lexer, 1330);
+          nit_abort("Uninitialized attribute %s", "_line", LOCATE_parser___lexer, 1331);
         }
         REGB14 = ATTR_parser___lexer___Lexer____line(fra.me.REG[0]);
         REGB10 = REGB14;
       }
     } else {
-      /* parser/lexer.nit:1333 */
+      /* parser/lexer.nit:1334 */
       REGB14 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB14 = TAG_Int(-UNTAG_Int(REGB14));
-      /* parser/lexer.nit:1333 */
+      /* parser/lexer.nit:1334 */
       REGB12 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB14));
       if (UNTAG_Bool(REGB12)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB14 = TAG_Bool((REGB6)==(REGB14));
-        /* parser/lexer.nit:1333 */
+        /* parser/lexer.nit:1334 */
         REGB12 = REGB14;
       }
       REGB12 = TAG_Bool(!UNTAG_Bool(REGB12));
       if (UNTAG_Bool(REGB12)) {
-        /* parser/lexer.nit:1334 */
+        /* parser/lexer.nit:1335 */
         REGB12 = TAG_Bool(ATTR_parser___lexer___Lexer____file(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB12)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1334);
+          nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1335);
         }
         fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
         REGB12 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB12 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB12));
-        /* parser/lexer.nit:1334 */
+        /* parser/lexer.nit:1335 */
         REGB14 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB14 = TAG_Int(UNTAG_Int(REGB10)+UNTAG_Int(REGB14));
-        /* parser/lexer.nit:1334 */
+        /* parser/lexer.nit:1335 */
         REGB13 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB13 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB13));
-        /* parser/lexer.nit:1334 */
-        fra.me.REG[2] = NEW_Location_location___Location___init(fra.me.REG[2], REGB12, REGB14, REGB13, REGB9);
         /* parser/lexer.nit:1335 */
-        ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]) = REGB9;
+        fra.me.REG[2] = NEW_Location_location___Location___init(fra.me.REG[2], REGB12, REGB14, REGB13, REGB9);
         /* parser/lexer.nit:1336 */
+        ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]) = REGB9;
+        /* parser/lexer.nit:1337 */
         ATTR_parser___lexer___Lexer____line(fra.me.REG[0]) = REGB10;
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB13 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB8));
-        /* parser/lexer.nit:1337 */
-        ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB13;
         /* parser/lexer.nit:1338 */
+        ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB13;
+        /* parser/lexer.nit:1339 */
         REGB13 = TAG_Int(0);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1338 */
+          /* parser/lexer.nit:1339 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1339 */
+          /* parser/lexer.nit:1340 */
           fra.me.REG[3] = NIT_NULL;
           goto label3;
         }
-        /* parser/lexer.nit:1341 */
+        /* parser/lexer.nit:1342 */
         REGB14 = TAG_Int(1);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1341 */
+          /* parser/lexer.nit:1342 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1342 */
+          /* parser/lexer.nit:1343 */
           fra.me.REG[4] = NEW_TEol_parser___lexer___TEol___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1344 */
+        /* parser/lexer.nit:1345 */
         REGB13 = TAG_Int(2);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1344 */
+          /* parser/lexer.nit:1345 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1345 */
+          /* parser/lexer.nit:1346 */
           fra.me.REG[4] = NEW_TComment_parser___lexer___TComment___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1347 */
+        /* parser/lexer.nit:1348 */
         REGB14 = TAG_Int(3);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1347 */
+          /* parser/lexer.nit:1348 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1348 */
+          /* parser/lexer.nit:1349 */
           fra.me.REG[4] = NEW_TKwmodule_parser___lexer___TKwmodule___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1350 */
+        /* parser/lexer.nit:1351 */
         REGB13 = TAG_Int(4);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1350 */
+          /* parser/lexer.nit:1351 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1351 */
+          /* parser/lexer.nit:1352 */
           fra.me.REG[4] = NEW_TKwimport_parser___lexer___TKwimport___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1353 */
+        /* parser/lexer.nit:1354 */
         REGB14 = TAG_Int(5);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1353 */
+          /* parser/lexer.nit:1354 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1354 */
+          /* parser/lexer.nit:1355 */
           fra.me.REG[4] = NEW_TKwclass_parser___lexer___TKwclass___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1356 */
+        /* parser/lexer.nit:1357 */
         REGB13 = TAG_Int(6);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1356 */
+          /* parser/lexer.nit:1357 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1357 */
+          /* parser/lexer.nit:1358 */
           fra.me.REG[4] = NEW_TKwabstract_parser___lexer___TKwabstract___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1359 */
+        /* parser/lexer.nit:1360 */
         REGB14 = TAG_Int(7);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1359 */
+          /* parser/lexer.nit:1360 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1360 */
+          /* parser/lexer.nit:1361 */
           fra.me.REG[4] = NEW_TKwinterface_parser___lexer___TKwinterface___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1362 */
+        /* parser/lexer.nit:1363 */
         REGB13 = TAG_Int(8);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1362 */
+          /* parser/lexer.nit:1363 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1363 */
+          /* parser/lexer.nit:1364 */
           fra.me.REG[4] = NEW_TKwenum_parser___lexer___TKwenum___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1365 */
+        /* parser/lexer.nit:1366 */
         REGB14 = TAG_Int(9);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1365 */
+          /* parser/lexer.nit:1366 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1366 */
+          /* parser/lexer.nit:1367 */
           fra.me.REG[4] = NEW_TKwend_parser___lexer___TKwend___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1368 */
+        /* parser/lexer.nit:1369 */
         REGB13 = TAG_Int(10);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1368 */
+          /* parser/lexer.nit:1369 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1369 */
+          /* parser/lexer.nit:1370 */
           fra.me.REG[4] = NEW_TKwmeth_parser___lexer___TKwmeth___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1371 */
+        /* parser/lexer.nit:1372 */
         REGB14 = TAG_Int(11);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1371 */
+          /* parser/lexer.nit:1372 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1372 */
+          /* parser/lexer.nit:1373 */
           fra.me.REG[4] = NEW_TKwtype_parser___lexer___TKwtype___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1374 */
+        /* parser/lexer.nit:1375 */
         REGB13 = TAG_Int(12);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1374 */
+          /* parser/lexer.nit:1375 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1375 */
+          /* parser/lexer.nit:1376 */
           fra.me.REG[4] = NEW_TKwinit_parser___lexer___TKwinit___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1377 */
+        /* parser/lexer.nit:1378 */
         REGB14 = TAG_Int(13);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1377 */
+          /* parser/lexer.nit:1378 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1378 */
+          /* parser/lexer.nit:1379 */
           fra.me.REG[4] = NEW_TKwredef_parser___lexer___TKwredef___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1380 */
+        /* parser/lexer.nit:1381 */
         REGB13 = TAG_Int(14);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1380 */
+          /* parser/lexer.nit:1381 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1381 */
+          /* parser/lexer.nit:1382 */
           fra.me.REG[4] = NEW_TKwis_parser___lexer___TKwis___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1383 */
+        /* parser/lexer.nit:1384 */
         REGB14 = TAG_Int(15);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1383 */
+          /* parser/lexer.nit:1384 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1384 */
+          /* parser/lexer.nit:1385 */
           fra.me.REG[4] = NEW_TKwdo_parser___lexer___TKwdo___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1386 */
+        /* parser/lexer.nit:1387 */
         REGB13 = TAG_Int(16);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1386 */
+          /* parser/lexer.nit:1387 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1387 */
+          /* parser/lexer.nit:1388 */
           fra.me.REG[4] = NEW_TKwreadable_parser___lexer___TKwreadable___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1389 */
+        /* parser/lexer.nit:1390 */
         REGB14 = TAG_Int(17);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1389 */
+          /* parser/lexer.nit:1390 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1390 */
+          /* parser/lexer.nit:1391 */
           fra.me.REG[4] = NEW_TKwwritable_parser___lexer___TKwwritable___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1392 */
+        /* parser/lexer.nit:1393 */
         REGB13 = TAG_Int(18);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1392 */
+          /* parser/lexer.nit:1393 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1393 */
+          /* parser/lexer.nit:1394 */
           fra.me.REG[4] = NEW_TKwvar_parser___lexer___TKwvar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1395 */
+        /* parser/lexer.nit:1396 */
         REGB14 = TAG_Int(19);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1395 */
+          /* parser/lexer.nit:1396 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1396 */
+          /* parser/lexer.nit:1397 */
           fra.me.REG[4] = NEW_TKwintern_parser___lexer___TKwintern___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1398 */
+        /* parser/lexer.nit:1399 */
         REGB13 = TAG_Int(20);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1398 */
+          /* parser/lexer.nit:1399 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1399 */
+          /* parser/lexer.nit:1400 */
           fra.me.REG[4] = NEW_TKwextern_parser___lexer___TKwextern___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1401 */
+        /* parser/lexer.nit:1402 */
         REGB14 = TAG_Int(21);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1401 */
+          /* parser/lexer.nit:1402 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1402 */
+          /* parser/lexer.nit:1403 */
           fra.me.REG[4] = NEW_TKwprotected_parser___lexer___TKwprotected___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1404 */
+        /* parser/lexer.nit:1405 */
         REGB13 = TAG_Int(22);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1404 */
+          /* parser/lexer.nit:1405 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1405 */
+          /* parser/lexer.nit:1406 */
           fra.me.REG[4] = NEW_TKwprivate_parser___lexer___TKwprivate___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1407 */
+        /* parser/lexer.nit:1408 */
         REGB14 = TAG_Int(23);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1407 */
+          /* parser/lexer.nit:1408 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1408 */
+          /* parser/lexer.nit:1409 */
           fra.me.REG[4] = NEW_TKwintrude_parser___lexer___TKwintrude___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1410 */
+        /* parser/lexer.nit:1411 */
         REGB13 = TAG_Int(24);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1410 */
+          /* parser/lexer.nit:1411 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1411 */
+          /* parser/lexer.nit:1412 */
           fra.me.REG[4] = NEW_TKwif_parser___lexer___TKwif___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1413 */
+        /* parser/lexer.nit:1414 */
         REGB14 = TAG_Int(25);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1413 */
+          /* parser/lexer.nit:1414 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1414 */
+          /* parser/lexer.nit:1415 */
           fra.me.REG[4] = NEW_TKwthen_parser___lexer___TKwthen___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1416 */
+        /* parser/lexer.nit:1417 */
         REGB13 = TAG_Int(26);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1416 */
+          /* parser/lexer.nit:1417 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1417 */
+          /* parser/lexer.nit:1418 */
           fra.me.REG[4] = NEW_TKwelse_parser___lexer___TKwelse___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1419 */
+        /* parser/lexer.nit:1420 */
         REGB14 = TAG_Int(27);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1419 */
+          /* parser/lexer.nit:1420 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1420 */
+          /* parser/lexer.nit:1421 */
           fra.me.REG[4] = NEW_TKwwhile_parser___lexer___TKwwhile___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1422 */
+        /* parser/lexer.nit:1423 */
         REGB13 = TAG_Int(28);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1422 */
+          /* parser/lexer.nit:1423 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1423 */
+          /* parser/lexer.nit:1424 */
           fra.me.REG[4] = NEW_TKwloop_parser___lexer___TKwloop___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1425 */
+        /* parser/lexer.nit:1426 */
         REGB14 = TAG_Int(29);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1425 */
+          /* parser/lexer.nit:1426 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1426 */
+          /* parser/lexer.nit:1427 */
           fra.me.REG[4] = NEW_TKwfor_parser___lexer___TKwfor___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1428 */
+        /* parser/lexer.nit:1429 */
         REGB13 = TAG_Int(30);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1428 */
+          /* parser/lexer.nit:1429 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1429 */
+          /* parser/lexer.nit:1430 */
           fra.me.REG[4] = NEW_TKwin_parser___lexer___TKwin___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1431 */
+        /* parser/lexer.nit:1432 */
         REGB14 = TAG_Int(31);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1431 */
+          /* parser/lexer.nit:1432 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1432 */
+          /* parser/lexer.nit:1433 */
           fra.me.REG[4] = NEW_TKwand_parser___lexer___TKwand___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1434 */
+        /* parser/lexer.nit:1435 */
         REGB13 = TAG_Int(32);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1434 */
+          /* parser/lexer.nit:1435 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1435 */
+          /* parser/lexer.nit:1436 */
           fra.me.REG[4] = NEW_TKwor_parser___lexer___TKwor___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1437 */
+        /* parser/lexer.nit:1438 */
         REGB14 = TAG_Int(33);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1437 */
+          /* parser/lexer.nit:1438 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1438 */
+          /* parser/lexer.nit:1439 */
           fra.me.REG[4] = NEW_TKwnot_parser___lexer___TKwnot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1440 */
+        /* parser/lexer.nit:1441 */
         REGB13 = TAG_Int(34);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1440 */
+          /* parser/lexer.nit:1441 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1441 */
+          /* parser/lexer.nit:1442 */
           fra.me.REG[4] = NEW_TKwreturn_parser___lexer___TKwreturn___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1443 */
+        /* parser/lexer.nit:1444 */
         REGB14 = TAG_Int(35);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1443 */
+          /* parser/lexer.nit:1444 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1444 */
+          /* parser/lexer.nit:1445 */
           fra.me.REG[4] = NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1446 */
+        /* parser/lexer.nit:1447 */
         REGB13 = TAG_Int(36);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1446 */
+          /* parser/lexer.nit:1447 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1447 */
+          /* parser/lexer.nit:1448 */
           fra.me.REG[4] = NEW_TKwbreak_parser___lexer___TKwbreak___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1449 */
+        /* parser/lexer.nit:1450 */
         REGB14 = TAG_Int(37);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1449 */
+          /* parser/lexer.nit:1450 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1450 */
+          /* parser/lexer.nit:1451 */
           fra.me.REG[4] = NEW_TKwabort_parser___lexer___TKwabort___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1452 */
+        /* parser/lexer.nit:1453 */
         REGB13 = TAG_Int(38);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1452 */
+          /* parser/lexer.nit:1453 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1453 */
+          /* parser/lexer.nit:1454 */
           fra.me.REG[4] = NEW_TKwassert_parser___lexer___TKwassert___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1455 */
+        /* parser/lexer.nit:1456 */
         REGB14 = TAG_Int(39);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1455 */
+          /* parser/lexer.nit:1456 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1456 */
+          /* parser/lexer.nit:1457 */
           fra.me.REG[4] = NEW_TKwnew_parser___lexer___TKwnew___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1458 */
+        /* parser/lexer.nit:1459 */
         REGB13 = TAG_Int(40);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1458 */
+          /* parser/lexer.nit:1459 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1459 */
+          /* parser/lexer.nit:1460 */
           fra.me.REG[4] = NEW_TKwisa_parser___lexer___TKwisa___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1461 */
+        /* parser/lexer.nit:1462 */
         REGB14 = TAG_Int(41);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1461 */
+          /* parser/lexer.nit:1462 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1462 */
+          /* parser/lexer.nit:1463 */
           fra.me.REG[4] = NEW_TKwonce_parser___lexer___TKwonce___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1464 */
+        /* parser/lexer.nit:1465 */
         REGB13 = TAG_Int(42);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1464 */
+          /* parser/lexer.nit:1465 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1465 */
+          /* parser/lexer.nit:1466 */
           fra.me.REG[4] = NEW_TKwsuper_parser___lexer___TKwsuper___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1467 */
+        /* parser/lexer.nit:1468 */
         REGB14 = TAG_Int(43);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1467 */
+          /* parser/lexer.nit:1468 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1468 */
+          /* parser/lexer.nit:1469 */
           fra.me.REG[4] = NEW_TKwself_parser___lexer___TKwself___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1470 */
+        /* parser/lexer.nit:1471 */
         REGB13 = TAG_Int(44);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1470 */
+          /* parser/lexer.nit:1471 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1471 */
+          /* parser/lexer.nit:1472 */
           fra.me.REG[4] = NEW_TKwtrue_parser___lexer___TKwtrue___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1473 */
+        /* parser/lexer.nit:1474 */
         REGB14 = TAG_Int(45);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1473 */
+          /* parser/lexer.nit:1474 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1474 */
+          /* parser/lexer.nit:1475 */
           fra.me.REG[4] = NEW_TKwfalse_parser___lexer___TKwfalse___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1476 */
+        /* parser/lexer.nit:1477 */
         REGB13 = TAG_Int(46);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1476 */
+          /* parser/lexer.nit:1477 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1477 */
+          /* parser/lexer.nit:1478 */
           fra.me.REG[4] = NEW_TKwnull_parser___lexer___TKwnull___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1479 */
+        /* parser/lexer.nit:1480 */
         REGB14 = TAG_Int(47);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1479 */
+          /* parser/lexer.nit:1480 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1480 */
+          /* parser/lexer.nit:1481 */
           fra.me.REG[4] = NEW_TKwas_parser___lexer___TKwas___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1482 */
+        /* parser/lexer.nit:1483 */
         REGB13 = TAG_Int(48);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1482 */
+          /* parser/lexer.nit:1483 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1483 */
+          /* parser/lexer.nit:1484 */
           fra.me.REG[4] = NEW_TKwnullable_parser___lexer___TKwnullable___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1485 */
+        /* parser/lexer.nit:1486 */
         REGB14 = TAG_Int(49);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1485 */
+          /* parser/lexer.nit:1486 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1486 */
+          /* parser/lexer.nit:1487 */
           fra.me.REG[4] = NEW_TKwisset_parser___lexer___TKwisset___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1488 */
+        /* parser/lexer.nit:1489 */
         REGB13 = TAG_Int(50);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1488 */
+          /* parser/lexer.nit:1489 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1489 */
+          /* parser/lexer.nit:1490 */
           fra.me.REG[4] = NEW_TKwlabel_parser___lexer___TKwlabel___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1491 */
+        /* parser/lexer.nit:1492 */
         REGB14 = TAG_Int(51);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1491 */
+          /* parser/lexer.nit:1492 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1492 */
+          /* parser/lexer.nit:1493 */
           fra.me.REG[4] = NEW_TKwdebug_parser___lexer___TKwdebug___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1494 */
+        /* parser/lexer.nit:1495 */
         REGB13 = TAG_Int(52);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1494 */
+          /* parser/lexer.nit:1495 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1495 */
+          /* parser/lexer.nit:1496 */
           fra.me.REG[4] = NEW_TOpar_parser___lexer___TOpar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1497 */
+        /* parser/lexer.nit:1498 */
         REGB14 = TAG_Int(53);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1497 */
+          /* parser/lexer.nit:1498 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1498 */
+          /* parser/lexer.nit:1499 */
           fra.me.REG[4] = NEW_TCpar_parser___lexer___TCpar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1500 */
+        /* parser/lexer.nit:1501 */
         REGB13 = TAG_Int(54);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1500 */
+          /* parser/lexer.nit:1501 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1501 */
+          /* parser/lexer.nit:1502 */
           fra.me.REG[4] = NEW_TObra_parser___lexer___TObra___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1503 */
+        /* parser/lexer.nit:1504 */
         REGB14 = TAG_Int(55);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1503 */
+          /* parser/lexer.nit:1504 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1504 */
+          /* parser/lexer.nit:1505 */
           fra.me.REG[4] = NEW_TCbra_parser___lexer___TCbra___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1506 */
+        /* parser/lexer.nit:1507 */
         REGB13 = TAG_Int(56);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1506 */
+          /* parser/lexer.nit:1507 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1507 */
+          /* parser/lexer.nit:1508 */
           fra.me.REG[4] = NEW_TComma_parser___lexer___TComma___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1509 */
+        /* parser/lexer.nit:1510 */
         REGB14 = TAG_Int(57);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1509 */
+          /* parser/lexer.nit:1510 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1510 */
+          /* parser/lexer.nit:1511 */
           fra.me.REG[4] = NEW_TColumn_parser___lexer___TColumn___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1512 */
+        /* parser/lexer.nit:1513 */
         REGB13 = TAG_Int(58);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1512 */
+          /* parser/lexer.nit:1513 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1513 */
+          /* parser/lexer.nit:1514 */
           fra.me.REG[4] = NEW_TQuad_parser___lexer___TQuad___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1515 */
+        /* parser/lexer.nit:1516 */
         REGB14 = TAG_Int(59);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1515 */
+          /* parser/lexer.nit:1516 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1516 */
+          /* parser/lexer.nit:1517 */
           fra.me.REG[4] = NEW_TAssign_parser___lexer___TAssign___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1518 */
+        /* parser/lexer.nit:1519 */
         REGB13 = TAG_Int(60);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1518 */
+          /* parser/lexer.nit:1519 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1519 */
+          /* parser/lexer.nit:1520 */
           fra.me.REG[4] = NEW_TPluseq_parser___lexer___TPluseq___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1521 */
+        /* parser/lexer.nit:1522 */
         REGB14 = TAG_Int(61);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1521 */
+          /* parser/lexer.nit:1522 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1522 */
+          /* parser/lexer.nit:1523 */
           fra.me.REG[4] = NEW_TMinuseq_parser___lexer___TMinuseq___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1524 */
+        /* parser/lexer.nit:1525 */
         REGB13 = TAG_Int(62);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1524 */
+          /* parser/lexer.nit:1525 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1525 */
+          /* parser/lexer.nit:1526 */
           fra.me.REG[4] = NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1527 */
+        /* parser/lexer.nit:1528 */
         REGB14 = TAG_Int(63);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1527 */
+          /* parser/lexer.nit:1528 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1528 */
+          /* parser/lexer.nit:1529 */
           fra.me.REG[4] = NEW_TDotdot_parser___lexer___TDotdot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1530 */
+        /* parser/lexer.nit:1531 */
         REGB13 = TAG_Int(64);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1530 */
+          /* parser/lexer.nit:1531 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1531 */
+          /* parser/lexer.nit:1532 */
           fra.me.REG[4] = NEW_TDot_parser___lexer___TDot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1533 */
+        /* parser/lexer.nit:1534 */
         REGB14 = TAG_Int(65);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1533 */
+          /* parser/lexer.nit:1534 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1534 */
+          /* parser/lexer.nit:1535 */
           fra.me.REG[4] = NEW_TPlus_parser___lexer___TPlus___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1536 */
+        /* parser/lexer.nit:1537 */
         REGB13 = TAG_Int(66);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1536 */
+          /* parser/lexer.nit:1537 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1537 */
+          /* parser/lexer.nit:1538 */
           fra.me.REG[4] = NEW_TMinus_parser___lexer___TMinus___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1539 */
+        /* parser/lexer.nit:1540 */
         REGB14 = TAG_Int(67);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1539 */
+          /* parser/lexer.nit:1540 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1540 */
+          /* parser/lexer.nit:1541 */
           fra.me.REG[4] = NEW_TStar_parser___lexer___TStar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1542 */
+        /* parser/lexer.nit:1543 */
         REGB13 = TAG_Int(68);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1542 */
+          /* parser/lexer.nit:1543 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1543 */
+          /* parser/lexer.nit:1544 */
           fra.me.REG[4] = NEW_TSlash_parser___lexer___TSlash___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1545 */
+        /* parser/lexer.nit:1546 */
         REGB14 = TAG_Int(69);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1545 */
+          /* parser/lexer.nit:1546 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1546 */
+          /* parser/lexer.nit:1547 */
           fra.me.REG[4] = NEW_TPercent_parser___lexer___TPercent___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1548 */
+        /* parser/lexer.nit:1549 */
         REGB13 = TAG_Int(70);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1548 */
+          /* parser/lexer.nit:1549 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1549 */
+          /* parser/lexer.nit:1550 */
           fra.me.REG[4] = NEW_TEq_parser___lexer___TEq___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1551 */
+        /* parser/lexer.nit:1552 */
         REGB14 = TAG_Int(71);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1551 */
+          /* parser/lexer.nit:1552 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1552 */
+          /* parser/lexer.nit:1553 */
           fra.me.REG[4] = NEW_TNe_parser___lexer___TNe___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1554 */
+        /* parser/lexer.nit:1555 */
         REGB13 = TAG_Int(72);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1554 */
+          /* parser/lexer.nit:1555 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1555 */
+          /* parser/lexer.nit:1556 */
           fra.me.REG[4] = NEW_TLt_parser___lexer___TLt___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1557 */
+        /* parser/lexer.nit:1558 */
         REGB14 = TAG_Int(73);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1557 */
+          /* parser/lexer.nit:1558 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1558 */
+          /* parser/lexer.nit:1559 */
           fra.me.REG[4] = NEW_TLe_parser___lexer___TLe___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1560 */
+        /* parser/lexer.nit:1561 */
         REGB13 = TAG_Int(74);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1560 */
+          /* parser/lexer.nit:1561 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1561 */
+          /* parser/lexer.nit:1562 */
           fra.me.REG[4] = NEW_TLl_parser___lexer___TLl___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1563 */
+        /* parser/lexer.nit:1564 */
         REGB14 = TAG_Int(75);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1563 */
+          /* parser/lexer.nit:1564 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1564 */
+          /* parser/lexer.nit:1565 */
           fra.me.REG[4] = NEW_TGt_parser___lexer___TGt___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1566 */
+        /* parser/lexer.nit:1567 */
         REGB13 = TAG_Int(76);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1566 */
+          /* parser/lexer.nit:1567 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1567 */
+          /* parser/lexer.nit:1568 */
           fra.me.REG[4] = NEW_TGe_parser___lexer___TGe___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1569 */
+        /* parser/lexer.nit:1570 */
         REGB14 = TAG_Int(77);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1569 */
+          /* parser/lexer.nit:1570 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1570 */
+          /* parser/lexer.nit:1571 */
           fra.me.REG[4] = NEW_TGg_parser___lexer___TGg___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1572 */
+        /* parser/lexer.nit:1573 */
         REGB13 = TAG_Int(78);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1572 */
+          /* parser/lexer.nit:1573 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1573 */
+          /* parser/lexer.nit:1574 */
           fra.me.REG[4] = NEW_TStarship_parser___lexer___TStarship___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1575 */
+        /* parser/lexer.nit:1576 */
         REGB14 = TAG_Int(79);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1575 */
+          /* parser/lexer.nit:1576 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1576 */
+          /* parser/lexer.nit:1577 */
           fra.me.REG[4] = NEW_TBang_parser___lexer___TBang___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1578 */
+        /* parser/lexer.nit:1579 */
         REGB13 = TAG_Int(80);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1578 */
+          /* parser/lexer.nit:1579 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1579 */
+          /* parser/lexer.nit:1580 */
           fra.me.REG[4] = NEW_TAt_parser___lexer___TAt___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1581 */
+        /* parser/lexer.nit:1582 */
         REGB14 = TAG_Int(81);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1581 */
+          /* parser/lexer.nit:1582 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1582 */
+          /* parser/lexer.nit:1583 */
           fra.me.REG[4] = NEW_TClassid_parser___lexer___TClassid___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1584 */
+        /* parser/lexer.nit:1585 */
         REGB13 = TAG_Int(82);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1584 */
+          /* parser/lexer.nit:1585 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1585 */
+          /* parser/lexer.nit:1586 */
           fra.me.REG[4] = NEW_TId_parser___lexer___TId___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1587 */
+        /* parser/lexer.nit:1588 */
         REGB14 = TAG_Int(83);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1587 */
+          /* parser/lexer.nit:1588 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1588 */
+          /* parser/lexer.nit:1589 */
           fra.me.REG[4] = NEW_TAttrid_parser___lexer___TAttrid___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1590 */
+        /* parser/lexer.nit:1591 */
         REGB13 = TAG_Int(84);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1590 */
+          /* parser/lexer.nit:1591 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1591 */
+          /* parser/lexer.nit:1592 */
           fra.me.REG[4] = NEW_TNumber_parser___lexer___TNumber___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1593 */
+        /* parser/lexer.nit:1594 */
         REGB14 = TAG_Int(85);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1593 */
+          /* parser/lexer.nit:1594 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1594 */
+          /* parser/lexer.nit:1595 */
           fra.me.REG[4] = NEW_TFloat_parser___lexer___TFloat___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1596 */
+        /* parser/lexer.nit:1597 */
         REGB13 = TAG_Int(86);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1596 */
+          /* parser/lexer.nit:1597 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1597 */
+          /* parser/lexer.nit:1598 */
           fra.me.REG[4] = NEW_TString_parser___lexer___TString___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1599 */
+        /* parser/lexer.nit:1600 */
         REGB14 = TAG_Int(87);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1599 */
+          /* parser/lexer.nit:1600 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1600 */
+          /* parser/lexer.nit:1601 */
           fra.me.REG[4] = NEW_TStartString_parser___lexer___TStartString___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1602 */
+        /* parser/lexer.nit:1603 */
         REGB13 = TAG_Int(88);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1602 */
+          /* parser/lexer.nit:1603 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1603 */
+          /* parser/lexer.nit:1604 */
           fra.me.REG[4] = NEW_TMidString_parser___lexer___TMidString___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1605 */
+        /* parser/lexer.nit:1606 */
         REGB14 = TAG_Int(89);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1605 */
+          /* parser/lexer.nit:1606 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1606 */
+          /* parser/lexer.nit:1607 */
           fra.me.REG[4] = NEW_TEndString_parser___lexer___TEndString___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1608 */
+        /* parser/lexer.nit:1609 */
         REGB13 = TAG_Int(90);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1608 */
+          /* parser/lexer.nit:1609 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1609 */
+          /* parser/lexer.nit:1610 */
           fra.me.REG[4] = NEW_TChar_parser___lexer___TChar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1611 */
+        /* parser/lexer.nit:1612 */
         REGB14 = TAG_Int(91);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1611 */
+          /* parser/lexer.nit:1612 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1612 */
+          /* parser/lexer.nit:1613 */
           fra.me.REG[4] = NEW_TBadString_parser___lexer___TBadString___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1614 */
+        /* parser/lexer.nit:1615 */
         REGB13 = TAG_Int(92);
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
-          /* parser/lexer.nit:1614 */
+          /* parser/lexer.nit:1615 */
           REGB14 = REGB13;
         }
         if (UNTAG_Bool(REGB14)) {
-          /* parser/lexer.nit:1615 */
+          /* parser/lexer.nit:1616 */
           fra.me.REG[4] = NEW_TBadChar_parser___lexer___TBadChar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* parser/lexer.nit:1617 */
+        /* parser/lexer.nit:1618 */
         REGB14 = TAG_Int(93);
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
-          /* parser/lexer.nit:1617 */
+          /* parser/lexer.nit:1618 */
           REGB13 = REGB14;
         }
         if (UNTAG_Bool(REGB13)) {
-          /* parser/lexer.nit:1618 */
+          /* parser/lexer.nit:1619 */
           fra.me.REG[2] = NEW_TExternCodeSegment_parser___lexer___TExternCodeSegment___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[2];
           goto label3;
         }
       } else {
-        /* parser/lexer.nit:1621 */
-        ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB1;
         /* parser/lexer.nit:1622 */
+        ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB1;
+        /* parser/lexer.nit:1623 */
         REGB13 = TAG_Bool(ATTR_parser___lexer___Lexer____file(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB13)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1622);
+          nit_abort("Uninitialized attribute %s", "_file", LOCATE_parser___lexer, 1623);
         }
         fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
         REGB13 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB13 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB13));
-        /* parser/lexer.nit:1622 */
+        /* parser/lexer.nit:1623 */
         REGB14 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB14 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB14));
-        /* parser/lexer.nit:1622 */
+        /* parser/lexer.nit:1623 */
         REGB12 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB12 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB12));
-        /* parser/lexer.nit:1622 */
+        /* parser/lexer.nit:1623 */
         REGB11 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB11 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB11));
-        /* parser/lexer.nit:1622 */
+        /* parser/lexer.nit:1623 */
         fra.me.REG[2] = NEW_Location_location___Location___init(fra.me.REG[2], REGB13, REGB14, REGB12, REGB11);
         REGB11 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB11)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB11 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-        /* parser/lexer.nit:1623 */
+        /* parser/lexer.nit:1624 */
         if (UNTAG_Bool(REGB11)) {
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB11 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-          /* parser/lexer.nit:1624 */
-          fra.me.REG[4] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB2, REGB11);
           /* parser/lexer.nit:1625 */
+          fra.me.REG[4] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB2, REGB11);
+          /* parser/lexer.nit:1626 */
           REGB11 = TAG_Int(3);
           fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB11);
           if (!once_value_4) {
             fra.me.REG[6] = BOX_NativeString("Syntax error: unknown token ");
             REGB11 = TAG_Int(28);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB11);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB11);
             once_value_4 = fra.me.REG[6];
             register_static_object(&once_value_4);
           } else fra.me.REG[6] = once_value_4;
@@ -6624,7 +6624,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
           if (!once_value_5) {
             fra.me.REG[6] = BOX_NativeString(".");
             REGB11 = TAG_Int(1);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB11);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB11);
             once_value_5 = fra.me.REG[6];
             register_static_object(&once_value_5);
           } else fra.me.REG[6] = once_value_5;
@@ -6632,13 +6632,13 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
           fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
           fra.me.REG[4] = NEW_ALexerError_parser___lexer___ALexerError___init_lexer_error(fra.me.REG[5], fra.me.REG[2], fra.me.REG[4]);
-          /* parser/lexer.nit:1626 */
+          /* parser/lexer.nit:1627 */
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         } else {
-          /* parser/lexer.nit:1628 */
-          fra.me.REG[2] = NEW_EOF_parser___lexer___EOF___init_tk(fra.me.REG[2]);
           /* parser/lexer.nit:1629 */
+          fra.me.REG[2] = NEW_EOF_parser___lexer___EOF___init_tk(fra.me.REG[2]);
+          /* parser/lexer.nit:1630 */
           fra.me.REG[3] = fra.me.REG[2];
           goto label3;
         }
index 18600c1..62f0a81 100644 (file)
@@ -7,7 +7,7 @@ val_t parser___parser_nodes___ANode___location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 27;
+  fra.me.line = 25;
   fra.me.meth = LOCATE_parser___parser_nodes___ANode___location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15,14 +15,14 @@ val_t parser___parser_nodes___ANode___location(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:27 */
+  /* parser/parser_nodes.nit:25 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* parser/parser_nodes.nit:29 */
+  /* parser/parser_nodes.nit:27 */
   fra.me.REG[1] = ATTR_parser___parser_nodes___ANode____location(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_nodes, 29);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_nodes, 27);
   }
   goto label1;
   label1: while(0);
@@ -35,39 +35,20 @@ val_t parser___parser_nodes___ANode___hot_location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 30;
+  fra.me.line = 29;
   fra.me.meth = LOCATE_parser___parser_nodes___ANode___hot_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:31 */
+  /* parser/parser_nodes.nit:30 */
   fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-static const char LOCATE_parser___parser_nodes___ANode___init[] = "parser_nodes::ANode::init";
-void parser___parser_nodes___ANode___init(val_t p0, int* init_table){
-  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANode].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos0]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 32;
-  fra.me.meth = LOCATE_parser___parser_nodes___ANode___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos0] = 1;
-  return;
-}
 static const char LOCATE_parser___parser_nodes___ANode___debug[] = "parser_nodes::ANode::debug";
 void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -81,7 +62,7 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 34;
+  fra.me.line = 32;
   fra.me.meth = LOCATE_parser___parser_nodes___ANode___debug;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -92,13 +73,13 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_nodes.nit:37 */
+  /* parser/parser_nodes.nit:35 */
   REGB0 = TAG_Int(9);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -110,7 +91,7 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(" ");
     REGB0 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
@@ -121,7 +102,7 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(": ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -131,7 +112,7 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[1] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_4 = fra.me.REG[1];
     register_static_object(&once_value_4);
   } else fra.me.REG[1] = once_value_4;
@@ -141,7 +122,7 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   if (!once_value_5) {
     fra.me.REG[3] = BOX_NativeString("0;32");
     REGB0 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_5 = fra.me.REG[3];
     register_static_object(&once_value_5);
   } else fra.me.REG[3] = once_value_5;
@@ -151,7 +132,7 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_6 = fra.me.REG[3];
     register_static_object(&once_value_6);
   } else fra.me.REG[3] = once_value_6;
@@ -162,93 +143,1043 @@ void parser___parser_nodes___ANode___debug(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_nodes___Token___text[] = "parser_nodes::Token::text";
-val_t parser___parser_nodes___Token___text(val_t p0){
+static const char LOCATE_parser___parser_nodes___ANode___parent[] = "parser_nodes::ANode::parent";
+val_t parser___parser_nodes___ANode___parent(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 38;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___parent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:38 */
+  fra.me.REG[0] = ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ANode___parent__eq[] = "parser_nodes::ANode::parent=";
+void parser___parser_nodes___ANode___parent__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 38;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___parent__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:38 */
+  ATTR_parser___parser_nodes___ANode_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANode___init[] = "parser_nodes::ANode::init";
+void parser___parser_nodes___ANode___init(val_t p0, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANode].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 41;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANode___replace_child[] = "parser_nodes::ANode::replace_child";
+void parser___parser_nodes___ANode___replace_child(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
   fra.me.line = 44;
-  fra.me.meth = LOCATE_parser___parser_nodes___Token___text;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   /* parser/parser_nodes.nit:44 */
   nit_abort("Deferred method called", NULL, LOCATE_parser___parser_nodes, 44);
   stack_frame_head = fra.me.prev;
-  return NIT_NULL;
+  return;
 }
-static const char LOCATE_parser___parser_nodes___Token___text__eq[] = "parser_nodes::Token::text=";
-void parser___parser_nodes___Token___text__eq(val_t p0, val_t p1){
+static const char LOCATE_parser___parser_nodes___ANode___detach[] = "parser_nodes::ANode::detach";
+void parser___parser_nodes___ANode___detach(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 47;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___detach;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:54 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser___parser_nodes, 54);
+  }
+  /* parser/parser_nodes.nit:55 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 55);
+  }
+  CALL_parser___parser_nodes___ANode___replace_child(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], NIT_NULL);
+  /* parser/parser_nodes.nit:56 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANode___replace_with[] = "parser_nodes::ANode::replace_with";
+void parser___parser_nodes___ANode___replace_with(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 59;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___replace_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:65 */
+  fra.me.REG[2] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser___parser_nodes, 65);
+  }
+  /* parser/parser_nodes.nit:66 */
+  fra.me.REG[2] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 66);
+  }
+  CALL_parser___parser_nodes___ANode___replace_child(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:67 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANode___visit_all[] = "parser_nodes::ANode::visit_all";
+void parser___parser_nodes___ANode___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 45;
-  fra.me.meth = LOCATE_parser___parser_nodes___Token___text__eq;
+  fra.me.line = 70;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANode___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* parser/parser_nodes.nit:45 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_nodes, 45);
+  /* parser/parser_nodes.nit:70 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_nodes, 70);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___parent[] = "parser_nodes::ANodes::parent";
+val_t parser___parser_nodes___ANodes___parent(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___parser_nodes;
+  fra.me.line = 79;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___parent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:79 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANodes_____atparent(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@parent", LOCATE_parser___parser_nodes, 79);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___ANodes_____atparent(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ANodes___parent__eq[] = "parser_nodes::ANodes::parent=";
+void parser___parser_nodes___ANodes___parent__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 79;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___parent__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:79 */
+  ATTR_parser___parser_nodes___ANodes_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___items[] = "parser_nodes::ANodes::items";
+val_t parser___parser_nodes___ANodes___items(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___parser_nodes;
+  fra.me.line = 80;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___items;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:80 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANodes_____atitems(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@items", LOCATE_parser___parser_nodes, 80);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___ANodes_____atitems(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ANodes___items__eq[] = "parser_nodes::ANodes::items=";
+void parser___parser_nodes___ANodes___items__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 80;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___items__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:80 */
+  ATTR_parser___parser_nodes___ANodes_____atitems(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___iterator[] = "parser_nodes::ANodes::(abstract_collection::Collection::iterator)";
+val_t parser___parser_nodes___ANodes___iterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 81;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:81 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ANodes___length[] = "parser_nodes::ANodes::(abstract_collection::Collection::length)";
+val_t parser___parser_nodes___ANodes___length(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___parser_nodes;
+  fra.me.line = 82;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:82 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:24 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+  }
+  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:82 */
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___is_empty[] = "parser_nodes::ANodes::(abstract_collection::Collection::is_empty)";
+val_t parser___parser_nodes___ANodes___is_empty(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___parser_nodes;
+  fra.me.line = 83;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___is_empty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:83 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___push[] = "parser_nodes::ANodes::(abstract_collection::Sequence::push)";
+void parser___parser_nodes___ANodes___push(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 84;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___push;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:86 */
+  CALL_parser___parser_nodes___ANodes___hook_add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:87 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___pop[] = "parser_nodes::ANodes::(abstract_collection::Sequence::pop)";
+val_t parser___parser_nodes___ANodes___pop(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 89;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___pop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:91 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:92 */
+  CALL_parser___parser_nodes___ANodes___hook_remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:93 */
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_parser___parser_nodes___ANodes___unshift[] = "parser_nodes::ANodes::(abstract_collection::Sequence::unshift)";
+void parser___parser_nodes___ANodes___unshift(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 95;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___unshift;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:97 */
+  CALL_parser___parser_nodes___ANodes___hook_add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:98 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___Sequence___unshift(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___shift[] = "parser_nodes::ANodes::(abstract_collection::Sequence::shift)";
+val_t parser___parser_nodes___ANodes___shift(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 100;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___shift;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:102 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_standard___collection___abstract_collection___Sequence___shift(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:103 */
+  CALL_parser___parser_nodes___ANodes___hook_remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:104 */
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_parser___parser_nodes___ANodes___has[] = "parser_nodes::ANodes::(abstract_collection::Collection::has)";
+val_t parser___parser_nodes___ANodes___has(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___parser_nodes;
+  fra.me.line = 106;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___has;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:108 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___parser_nodes___ANodes_____bra[] = "parser_nodes::ANodes::(abstract_collection::SequenceRead::[])";
+val_t parser___parser_nodes___ANodes_____bra(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 110;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes_____bra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser_nodes.nit:112 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:281 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:243 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ../lib/standard/collection/array.nit:281 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ../lib/standard/collection/array.nit:281 */
+    REGB2 = TAG_Bool(0);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
+  }
+  /* ../lib/standard/collection/array.nit:282 */
+  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
+  }
+  /* ../lib/standard/collection/array.nit:725 */
+  fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
+  /* ../lib/standard/collection/array.nit:282 */
+  goto label1;
+  label1: while(0);
+  /* parser/parser_nodes.nit:112 */
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ANodes_____braeq[] = "parser_nodes::ANodes::(abstract_collection::Sequence::[]=)";
+void parser___parser_nodes___ANodes_____braeq(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 114;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes_____braeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* parser/parser_nodes.nit:116 */
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  CALL_parser___parser_nodes___ANodes___hook_remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  /* parser/parser_nodes.nit:117 */
+  CALL_parser___parser_nodes___ANodes___hook_add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:118 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___remove_at[] = "parser_nodes::ANodes::(abstract_collection::Sequence::remove_at)";
+void parser___parser_nodes___ANodes___remove_at(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 120;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___remove_at;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser_nodes.nit:122 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:279 */
+  REGB1 = REGB0;
+  /* ../lib/standard/collection/array.nit:281 */
+  REGB2 = TAG_Int(0);
+  REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB3)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:243 */
+  REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
+  /* ../lib/standard/collection/array.nit:281 */
+  if (UNTAG_Bool(REGB2)) {
+    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
+    }
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+  } else {
+    /* ../lib/standard/collection/array.nit:281 */
+    REGB3 = TAG_Bool(0);
+    REGB2 = REGB3;
+  }
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
+  }
+  /* ../lib/standard/collection/array.nit:282 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB2)) {
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
+  }
+  /* ../lib/standard/collection/array.nit:725 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
+  /* ../lib/standard/collection/array.nit:282 */
+  goto label1;
+  label1: while(0);
+  /* parser/parser_nodes.nit:122 */
+  CALL_parser___parser_nodes___ANodes___hook_remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:123 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___items(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___hook_add[] = "parser_nodes::ANodes::hook_add";
+void parser___parser_nodes___ANodes___hook_add(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 125;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___hook_add;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:128 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___parent(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___hook_remove[] = "parser_nodes::ANodes::hook_remove";
+void parser___parser_nodes___ANodes___hook_remove(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 130;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___hook_remove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:132 */
+  fra.me.REG[2] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANodes___parent(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[2]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser___parser_nodes, 132);
+  }
+  /* parser/parser_nodes.nit:133 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___ANodes___init[] = "parser_nodes::ANodes::init";
+void parser___parser_nodes___ANodes___init(val_t p0, val_t p1, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANodes].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos1]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANodes___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  ATTR_parser___parser_nodes___ANodes_____atparent(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos1] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Token___text[] = "parser_nodes::Token::text";
+val_t parser___parser_nodes___Token___text(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 142;
+  fra.me.meth = LOCATE_parser___parser_nodes___Token___text;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  /* parser/parser_nodes.nit:142 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_nodes, 142);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+static const char LOCATE_parser___parser_nodes___Token___text__eq[] = "parser_nodes::Token::text=";
+void parser___parser_nodes___Token___text__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 144;
+  fra.me.meth = LOCATE_parser___parser_nodes___Token___text__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  /* parser/parser_nodes.nit:144 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_nodes, 144);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Token___to_s[] = "parser_nodes::Token::(string::Object::to_s)";
+val_t parser___parser_nodes___Token___to_s(val_t p0){
+  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 */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 146;
+  fra.me.meth = LOCATE_parser___parser_nodes___Token___to_s;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:147 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_1) {
+    fra.me.REG[2] = BOX_NativeString("'");
+    REGB0 = TAG_Int(1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
+    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];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  if (!once_value_2) {
+    fra.me.REG[0] = BOX_NativeString("'");
+    REGB0 = TAG_Int(1);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
+    once_value_2 = fra.me.REG[0];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[0] = once_value_2;
+  fra.me.REG[0] = fra.me.REG[0];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  goto label3;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_parser___parser_nodes___Token___visit_all[] = "parser_nodes::Token::(parser_nodes::ANode::visit_all)";
+void parser___parser_nodes___Token___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 150;
+  fra.me.meth = LOCATE_parser___parser_nodes___Token___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Token___replace_child[] = "parser_nodes::Token::(parser_nodes::ANode::replace_child)";
+void parser___parser_nodes___Token___replace_child(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 151;
+  fra.me.meth = LOCATE_parser___parser_nodes___Token___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Prod___location__eq[] = "parser_nodes::Prod::location=";
+void parser___parser_nodes___Prod___location__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 159;
+  fra.me.meth = LOCATE_parser___parser_nodes___Prod___location__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:159 */
+  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Prod___n_annotations[] = "parser_nodes::Prod::n_annotations";
+val_t parser___parser_nodes___Prod___n_annotations(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 161;
+  fra.me.meth = LOCATE_parser___parser_nodes___Prod___n_annotations;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:161 */
+  fra.me.REG[0] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___Prod___n_annotations__eq[] = "parser_nodes::Prod::n_annotations=";
+void parser___parser_nodes___Prod___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 161;
+  fra.me.meth = LOCATE_parser___parser_nodes___Prod___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:161 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Prod___replace_with[] = "parser_nodes::Prod::(parser_nodes::ANode::replace_with)";
+void parser___parser_nodes___Prod___replace_with(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 164;
+  fra.me.meth = LOCATE_parser___parser_nodes___Prod___replace_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:164 */
+  fra.me.REG[2] = fra.me.REG[0];
+  fra.me.REG[3] = fra.me.REG[1];
+  /* parser/parser_nodes.nit:166 */
+  CALL_SUPER_parser___parser_nodes___Prod___replace_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:167 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___Prod, ID_parser___parser_nodes___Prod)) /*cast Prod*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser___parser_nodes, 167);
+  }
+  /* parser/parser_nodes.nit:168 */
+  fra.me.REG[1] = ATTR_parser___parser_nodes___ANode____location(fra.me.REG[3]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[2] = ATTR_parser___parser_nodes___ANode____location(fra.me.REG[2]);
+    ATTR_parser___parser_nodes___ANode____location(fra.me.REG[3]) = fra.me.REG[2];
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Visitor___visit[] = "parser_nodes::Visitor::visit";
+void parser___parser_nodes___Visitor___visit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 174;
+  fra.me.meth = LOCATE_parser___parser_nodes___Visitor___visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  /* parser/parser_nodes.nit:174 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_nodes, 174);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___Visitor___enter_visit[] = "parser_nodes::Visitor::enter_visit";
+void parser___parser_nodes___Visitor___enter_visit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 179;
+  fra.me.meth = LOCATE_parser___parser_nodes___Visitor___enter_visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:184 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    goto label1;
+  }
+  /* parser/parser_nodes.nit:185 */
+  fra.me.REG[2] = ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:186 */
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:187 */
+  CALL_parser___parser_nodes___Visitor___visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* parser/parser_nodes.nit:188 */
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[2];
+  label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_nodes___Token___to_s[] = "parser_nodes::Token::(string::Object::to_s)";
-val_t parser___parser_nodes___Token___to_s(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
+static const char LOCATE_parser___parser_nodes___Visitor___current_node[] = "parser_nodes::Visitor::current_node";
+val_t parser___parser_nodes___Visitor___current_node(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 47;
-  fra.me.meth = LOCATE_parser___parser_nodes___Token___to_s;
+  fra.me.line = 191;
+  fra.me.meth = LOCATE_parser___parser_nodes___Visitor___current_node;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:48 */
-  REGB0 = TAG_Int(3);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_1) {
-    fra.me.REG[2] = BOX_NativeString("'");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    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];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  if (!once_value_2) {
-    fra.me.REG[0] = BOX_NativeString("'");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-    once_value_2 = fra.me.REG[0];
-    register_static_object(&once_value_2);
-  } else fra.me.REG[0] = once_value_2;
-  fra.me.REG[0] = fra.me.REG[0];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-  goto label3;
-  label3: while(0);
+  /* parser/parser_nodes.nit:191 */
+  fra.me.REG[0] = ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-static const char LOCATE_parser___parser_nodes___Prod___location__eq[] = "parser_nodes::Prod::location=";
-void parser___parser_nodes___Prod___location__eq(val_t p0, val_t p1){
+static const char LOCATE_parser___parser_nodes___Visitor___current_node__eq[] = "parser_nodes::Visitor::current_node=";
+void parser___parser_nodes___Visitor___current_node__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 55;
-  fra.me.meth = LOCATE_parser___parser_nodes___Prod___location__eq;
+  fra.me.line = 191;
+  fra.me.meth = LOCATE_parser___parser_nodes___Visitor___current_node__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
@@ -256,28 +1187,27 @@ void parser___parser_nodes___Prod___location__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_nodes.nit:55 */
-  ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:191 */
+  ATTR_parser___parser_nodes___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_nodes___Prod___n_annotations[] = "parser_nodes::Prod::n_annotations";
-val_t parser___parser_nodes___Prod___n_annotations(val_t p0){
+static const char LOCATE_parser___parser_nodes___Visitor___init[] = "parser_nodes::Visitor::init";
+void parser___parser_nodes___Visitor___init(val_t p0, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___Visitor].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
+  if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 56;
-  fra.me.meth = LOCATE_parser___parser_nodes___Prod___n_annotations;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_parser___parser_nodes___Visitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:56 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  init_table[itpos2] = 1;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___TEol___to_s[] = "parser_nodes::TEol::(string::Object::to_s)";
 val_t parser___parser_nodes___TEol___to_s(val_t p0){
@@ -287,18 +1217,18 @@ val_t parser___parser_nodes___TEol___to_s(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_parser___parser_nodes;
-  fra.me.line = 60;
+  fra.me.line = 198;
   fra.me.meth = LOCATE_parser___parser_nodes___TEol___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:62 */
+  /* parser/parser_nodes.nit:200 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("end of line");
     REGB0 = TAG_Int(11);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -317,7 +1247,7 @@ val_t parser___parser_nodes___TokenKeyword___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 70;
+  fra.me.line = 213;
   fra.me.meth = LOCATE_parser___parser_nodes___TokenKeyword___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -326,13 +1256,13 @@ val_t parser___parser_nodes___TokenKeyword___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:72 */
+  /* parser/parser_nodes.nit:215 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("keyword '");
     REGB0 = TAG_Int(9);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -343,7 +1273,7 @@ val_t parser___parser_nodes___TokenKeyword___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("'");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -364,7 +1294,7 @@ val_t parser___parser_nodes___TokenOperator___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 248;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_parser___parser_nodes___TokenOperator___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -373,13 +1303,13 @@ val_t parser___parser_nodes___TokenOperator___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:250 */
+  /* parser/parser_nodes.nit:395 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("operator '");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -390,7 +1320,7 @@ val_t parser___parser_nodes___TokenOperator___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("'");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -411,7 +1341,7 @@ val_t parser___parser_nodes___TClassid___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 318;
+  fra.me.line = 465;
   fra.me.meth = LOCATE_parser___parser_nodes___TClassid___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -420,13 +1350,13 @@ val_t parser___parser_nodes___TClassid___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:320 */
+  /* parser/parser_nodes.nit:467 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("type identifier '");
     REGB0 = TAG_Int(17);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -437,7 +1367,7 @@ val_t parser___parser_nodes___TClassid___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("'");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -458,7 +1388,7 @@ val_t parser___parser_nodes___TId___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 325;
+  fra.me.line = 474;
   fra.me.meth = LOCATE_parser___parser_nodes___TId___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -467,13 +1397,13 @@ val_t parser___parser_nodes___TId___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:327 */
+  /* parser/parser_nodes.nit:476 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("identifier '");
     REGB0 = TAG_Int(12);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -484,7 +1414,7 @@ val_t parser___parser_nodes___TId___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("'");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -505,7 +1435,7 @@ val_t parser___parser_nodes___TAttrid___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 332;
+  fra.me.line = 483;
   fra.me.meth = LOCATE_parser___parser_nodes___TAttrid___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -514,13 +1444,13 @@ val_t parser___parser_nodes___TAttrid___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:334 */
+  /* parser/parser_nodes.nit:485 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("attribute '");
     REGB0 = TAG_Int(11);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -531,7 +1461,7 @@ val_t parser___parser_nodes___TAttrid___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("'");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -552,7 +1482,7 @@ val_t parser___parser_nodes___TokenLiteral___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 339;
+  fra.me.line = 492;
   fra.me.meth = LOCATE_parser___parser_nodes___TokenLiteral___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -561,13 +1491,13 @@ val_t parser___parser_nodes___TokenLiteral___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:341 */
+  /* parser/parser_nodes.nit:494 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("literal value '");
     REGB0 = TAG_Int(15);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -578,7 +1508,7 @@ val_t parser___parser_nodes___TokenLiteral___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("'");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -599,7 +1529,7 @@ val_t parser___parser_nodes___TBadString___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 367;
+  fra.me.line = 522;
   fra.me.meth = LOCATE_parser___parser_nodes___TBadString___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -608,13 +1538,13 @@ val_t parser___parser_nodes___TBadString___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:369 */
+  /* parser/parser_nodes.nit:524 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("malformed string ");
     REGB0 = TAG_Int(17);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -625,7 +1555,7 @@ val_t parser___parser_nodes___TBadString___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -646,7 +1576,7 @@ val_t parser___parser_nodes___TBadChar___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 374;
+  fra.me.line = 531;
   fra.me.meth = LOCATE_parser___parser_nodes___TBadChar___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -655,13 +1585,13 @@ val_t parser___parser_nodes___TBadChar___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:376 */
+  /* parser/parser_nodes.nit:533 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("malformed character ");
     REGB0 = TAG_Int(20);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -672,7 +1602,7 @@ val_t parser___parser_nodes___TBadChar___to_s(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -692,18 +1622,18 @@ val_t parser___parser_nodes___EOF___to_s(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_parser___parser_nodes;
-  fra.me.line = 384;
+  fra.me.line = 544;
   fra.me.meth = LOCATE_parser___parser_nodes___EOF___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:386 */
+  /* parser/parser_nodes.nit:546 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("end of file");
     REGB0 = TAG_Int(11);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -719,18 +1649,38 @@ val_t parser___parser_nodes___AModule___n_moduledecl(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 401;
+  fra.me.line = 565;
   fra.me.meth = LOCATE_parser___parser_nodes___AModule___n_moduledecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:401 */
+  /* parser/parser_nodes.nit:565 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AModule___n_moduledecl__eq[] = "parser_nodes::AModule::n_moduledecl=";
+void parser___parser_nodes___AModule___n_moduledecl__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 565;
+  fra.me.meth = LOCATE_parser___parser_nodes___AModule___n_moduledecl__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:565 */
+  ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AModule___n_imports[] = "parser_nodes::AModule::n_imports";
 val_t parser___parser_nodes___AModule___n_imports(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -738,18 +1688,18 @@ val_t parser___parser_nodes___AModule___n_imports(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 402;
+  fra.me.line = 566;
   fra.me.meth = LOCATE_parser___parser_nodes___AModule___n_imports;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:402 */
+  /* parser/parser_nodes.nit:566 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_nodes, 402);
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_nodes, 566);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -762,18 +1712,18 @@ val_t parser___parser_nodes___AModule___n_extern_code_blocks(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 403;
+  fra.me.line = 567;
   fra.me.meth = LOCATE_parser___parser_nodes___AModule___n_extern_code_blocks;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:403 */
+  /* parser/parser_nodes.nit:567 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_nodes, 403);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_nodes, 567);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -786,18 +1736,18 @@ val_t parser___parser_nodes___AModule___n_classdefs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 404;
+  fra.me.line = 568;
   fra.me.meth = LOCATE_parser___parser_nodes___AModule___n_classdefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:404 */
+  /* parser/parser_nodes.nit:568 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_nodes, 404);
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_nodes, 568);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -809,18 +1759,38 @@ val_t parser___parser_nodes___AModuledecl___n_doc(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 408;
+  fra.me.line = 574;
   fra.me.meth = LOCATE_parser___parser_nodes___AModuledecl___n_doc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:408 */
+  /* parser/parser_nodes.nit:574 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AModuledecl___n_doc__eq[] = "parser_nodes::AModuledecl::n_doc=";
+void parser___parser_nodes___AModuledecl___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 574;
+  fra.me.meth = LOCATE_parser___parser_nodes___AModuledecl___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:574 */
+  ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AModuledecl___n_kwmodule[] = "parser_nodes::AModuledecl::n_kwmodule";
 val_t parser___parser_nodes___AModuledecl___n_kwmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -828,23 +1798,43 @@ val_t parser___parser_nodes___AModuledecl___n_kwmodule(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 409;
+  fra.me.line = 575;
   fra.me.meth = LOCATE_parser___parser_nodes___AModuledecl___n_kwmodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:409 */
+  /* parser/parser_nodes.nit:575 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser___parser_nodes, 409);
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser___parser_nodes, 575);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AModuledecl___n_kwmodule__eq[] = "parser_nodes::AModuledecl::n_kwmodule=";
+void parser___parser_nodes___AModuledecl___n_kwmodule__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 575;
+  fra.me.meth = LOCATE_parser___parser_nodes___AModuledecl___n_kwmodule__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:575 */
+  ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AModuledecl___n_name[] = "parser_nodes::AModuledecl::n_name";
 val_t parser___parser_nodes___AModuledecl___n_name(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -852,23 +1842,43 @@ val_t parser___parser_nodes___AModuledecl___n_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 410;
+  fra.me.line = 576;
   fra.me.meth = LOCATE_parser___parser_nodes___AModuledecl___n_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:410 */
+  /* parser/parser_nodes.nit:576 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_nodes, 410);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_nodes, 576);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AModuledecl___n_name__eq[] = "parser_nodes::AModuledecl::n_name=";
+void parser___parser_nodes___AModuledecl___n_name__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 576;
+  fra.me.meth = LOCATE_parser___parser_nodes___AModuledecl___n_name__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:576 */
+  ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdImport___n_visibility[] = "parser_nodes::AStdImport::n_visibility";
 val_t parser___parser_nodes___AStdImport___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -876,23 +1886,43 @@ val_t parser___parser_nodes___AStdImport___n_visibility(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 415;
+  fra.me.line = 587;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdImport___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:415 */
+  /* parser/parser_nodes.nit:587 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 415);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 587);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdImport___n_visibility__eq[] = "parser_nodes::AStdImport::n_visibility=";
+void parser___parser_nodes___AStdImport___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 587;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdImport___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:587 */
+  ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdImport___n_kwimport[] = "parser_nodes::AStdImport::n_kwimport";
 val_t parser___parser_nodes___AStdImport___n_kwimport(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -900,23 +1930,43 @@ val_t parser___parser_nodes___AStdImport___n_kwimport(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 416;
+  fra.me.line = 588;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdImport___n_kwimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:416 */
+  /* parser/parser_nodes.nit:588 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_nodes, 416);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_nodes, 588);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdImport___n_kwimport__eq[] = "parser_nodes::AStdImport::n_kwimport=";
+void parser___parser_nodes___AStdImport___n_kwimport__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 588;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdImport___n_kwimport__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:588 */
+  ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdImport___n_name[] = "parser_nodes::AStdImport::n_name";
 val_t parser___parser_nodes___AStdImport___n_name(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -924,23 +1974,43 @@ val_t parser___parser_nodes___AStdImport___n_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 417;
+  fra.me.line = 589;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdImport___n_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:417 */
+  /* parser/parser_nodes.nit:589 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_nodes, 417);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_nodes, 589);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdImport___n_name__eq[] = "parser_nodes::AStdImport::n_name=";
+void parser___parser_nodes___AStdImport___n_name__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 589;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdImport___n_name__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:589 */
+  ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANoImport___n_visibility[] = "parser_nodes::ANoImport::n_visibility";
 val_t parser___parser_nodes___ANoImport___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -948,23 +2018,43 @@ val_t parser___parser_nodes___ANoImport___n_visibility(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 421;
+  fra.me.line = 595;
   fra.me.meth = LOCATE_parser___parser_nodes___ANoImport___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:421 */
+  /* parser/parser_nodes.nit:595 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 421);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 595);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANoImport___n_visibility__eq[] = "parser_nodes::ANoImport::n_visibility=";
+void parser___parser_nodes___ANoImport___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 595;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANoImport___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:595 */
+  ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANoImport___n_kwimport[] = "parser_nodes::ANoImport::n_kwimport";
 val_t parser___parser_nodes___ANoImport___n_kwimport(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -972,23 +2062,43 @@ val_t parser___parser_nodes___ANoImport___n_kwimport(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 422;
+  fra.me.line = 596;
   fra.me.meth = LOCATE_parser___parser_nodes___ANoImport___n_kwimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:422 */
+  /* parser/parser_nodes.nit:596 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_nodes, 422);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_nodes, 596);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANoImport___n_kwimport__eq[] = "parser_nodes::ANoImport::n_kwimport=";
+void parser___parser_nodes___ANoImport___n_kwimport__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 596;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANoImport___n_kwimport__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:596 */
+  ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANoImport___n_kwend[] = "parser_nodes::ANoImport::n_kwend";
 val_t parser___parser_nodes___ANoImport___n_kwend(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -996,23 +2106,43 @@ val_t parser___parser_nodes___ANoImport___n_kwend(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 423;
+  fra.me.line = 597;
   fra.me.meth = LOCATE_parser___parser_nodes___ANoImport___n_kwend;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:423 */
+  /* parser/parser_nodes.nit:597 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_nodes, 423);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_nodes, 597);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANoImport___n_kwend__eq[] = "parser_nodes::ANoImport::n_kwend=";
+void parser___parser_nodes___ANoImport___n_kwend__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 597;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANoImport___n_kwend__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:597 */
+  ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___APrivateVisibility___n_kwprivate[] = "parser_nodes::APrivateVisibility::n_kwprivate";
 val_t parser___parser_nodes___APrivateVisibility___n_kwprivate(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1020,23 +2150,43 @@ val_t parser___parser_nodes___APrivateVisibility___n_kwprivate(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 431;
+  fra.me.line = 614;
   fra.me.meth = LOCATE_parser___parser_nodes___APrivateVisibility___n_kwprivate;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:431 */
+  /* parser/parser_nodes.nit:614 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser___parser_nodes, 431);
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser___parser_nodes, 614);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___APrivateVisibility___n_kwprivate__eq[] = "parser_nodes::APrivateVisibility::n_kwprivate=";
+void parser___parser_nodes___APrivateVisibility___n_kwprivate__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 614;
+  fra.me.meth = LOCATE_parser___parser_nodes___APrivateVisibility___n_kwprivate__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:614 */
+  ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AProtectedVisibility___n_kwprotected[] = "parser_nodes::AProtectedVisibility::n_kwprotected";
 val_t parser___parser_nodes___AProtectedVisibility___n_kwprotected(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1044,23 +2194,43 @@ val_t parser___parser_nodes___AProtectedVisibility___n_kwprotected(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 435;
+  fra.me.line = 618;
   fra.me.meth = LOCATE_parser___parser_nodes___AProtectedVisibility___n_kwprotected;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:435 */
+  /* parser/parser_nodes.nit:618 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser___parser_nodes, 435);
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser___parser_nodes, 618);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq[] = "parser_nodes::AProtectedVisibility::n_kwprotected=";
+void parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 618;
+  fra.me.meth = LOCATE_parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:618 */
+  ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIntrudeVisibility___n_kwintrude[] = "parser_nodes::AIntrudeVisibility::n_kwintrude";
 val_t parser___parser_nodes___AIntrudeVisibility___n_kwintrude(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1068,22 +2238,42 @@ val_t parser___parser_nodes___AIntrudeVisibility___n_kwintrude(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 439;
+  fra.me.line = 622;
   fra.me.meth = LOCATE_parser___parser_nodes___AIntrudeVisibility___n_kwintrude;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:439 */
+  /* parser/parser_nodes.nit:622 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser___parser_nodes, 439);
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser___parser_nodes, 622);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq[] = "parser_nodes::AIntrudeVisibility::n_kwintrude=";
+void parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 622;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:622 */
+  ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AClassdef___n_propdefs[] = "parser_nodes::AClassdef::n_propdefs";
 val_t parser___parser_nodes___AClassdef___n_propdefs(val_t p0){
@@ -1092,18 +2282,18 @@ val_t parser___parser_nodes___AClassdef___n_propdefs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 442;
+  fra.me.line = 629;
   fra.me.meth = LOCATE_parser___parser_nodes___AClassdef___n_propdefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:442 */
+  /* parser/parser_nodes.nit:629 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_nodes, 442);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_nodes, 629);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1115,36 +2305,76 @@ val_t parser___parser_nodes___AStdClassdef___n_doc(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 446;
+  fra.me.line = 635;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_doc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:446 */
+  /* parser/parser_nodes.nit:635 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_doc__eq[] = "parser_nodes::AStdClassdef::n_doc=";
+void parser___parser_nodes___AStdClassdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 635;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:635 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___n_kwredef[] = "parser_nodes::AStdClassdef::n_kwredef";
 val_t parser___parser_nodes___AStdClassdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 447;
+  fra.me.line = 636;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:447 */
+  /* parser/parser_nodes.nit:636 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_kwredef__eq[] = "parser_nodes::AStdClassdef::n_kwredef=";
+void parser___parser_nodes___AStdClassdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 636;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:636 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___n_visibility[] = "parser_nodes::AStdClassdef::n_visibility";
 val_t parser___parser_nodes___AStdClassdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1152,23 +2382,43 @@ val_t parser___parser_nodes___AStdClassdef___n_visibility(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 448;
+  fra.me.line = 637;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:448 */
+  /* parser/parser_nodes.nit:637 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 448);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 637);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_visibility__eq[] = "parser_nodes::AStdClassdef::n_visibility=";
+void parser___parser_nodes___AStdClassdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 637;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:637 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___n_classkind[] = "parser_nodes::AStdClassdef::n_classkind";
 val_t parser___parser_nodes___AStdClassdef___n_classkind(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1176,41 +2426,81 @@ val_t parser___parser_nodes___AStdClassdef___n_classkind(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 449;
+  fra.me.line = 638;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_classkind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:449 */
+  /* parser/parser_nodes.nit:638 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser___parser_nodes, 449);
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser___parser_nodes, 638);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_classkind__eq[] = "parser_nodes::AStdClassdef::n_classkind=";
+void parser___parser_nodes___AStdClassdef___n_classkind__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 638;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_classkind__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:638 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___n_id[] = "parser_nodes::AStdClassdef::n_id";
 val_t parser___parser_nodes___AStdClassdef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 450;
+  fra.me.line = 639;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:450 */
+  /* parser/parser_nodes.nit:639 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_id__eq[] = "parser_nodes::AStdClassdef::n_id=";
+void parser___parser_nodes___AStdClassdef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 639;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:639 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___n_formaldefs[] = "parser_nodes::AStdClassdef::n_formaldefs";
 val_t parser___parser_nodes___AStdClassdef___n_formaldefs(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1218,18 +2508,18 @@ val_t parser___parser_nodes___AStdClassdef___n_formaldefs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 451;
+  fra.me.line = 640;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_formaldefs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:451 */
+  /* parser/parser_nodes.nit:640 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_nodes, 451);
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_nodes, 640);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1241,18 +2531,38 @@ val_t parser___parser_nodes___AStdClassdef___n_extern_code_block(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 452;
+  fra.me.line = 641;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_extern_code_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:452 */
+  /* parser/parser_nodes.nit:641 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_extern_code_block__eq[] = "parser_nodes::AStdClassdef::n_extern_code_block=";
+void parser___parser_nodes___AStdClassdef___n_extern_code_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 641;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_extern_code_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:641 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___n_superclasses[] = "parser_nodes::AStdClassdef::n_superclasses";
 val_t parser___parser_nodes___AStdClassdef___n_superclasses(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1260,18 +2570,18 @@ val_t parser___parser_nodes___AStdClassdef___n_superclasses(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 453;
+  fra.me.line = 642;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_superclasses;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:453 */
+  /* parser/parser_nodes.nit:642 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_nodes, 453);
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_nodes, 642);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1284,23 +2594,43 @@ val_t parser___parser_nodes___AStdClassdef___n_kwend(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 454;
+  fra.me.line = 643;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_kwend;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:454 */
+  /* parser/parser_nodes.nit:643 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_nodes, 454);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_nodes, 643);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStdClassdef___n_kwend__eq[] = "parser_nodes::AStdClassdef::n_kwend=";
+void parser___parser_nodes___AStdClassdef___n_kwend__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 643;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___n_kwend__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:643 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStdClassdef___hot_location[] = "parser_nodes::AStdClassdef::(parser_nodes::ANode::hot_location)";
 val_t parser___parser_nodes___AStdClassdef___hot_location(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1308,18 +2638,18 @@ val_t parser___parser_nodes___AStdClassdef___hot_location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 455;
+  fra.me.line = 644;
   fra.me.meth = LOCATE_parser___parser_nodes___AStdClassdef___hot_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:455 */
+  /* parser/parser_nodes.nit:644 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 455);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 644);
   }
   fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1334,23 +2664,43 @@ val_t parser___parser_nodes___AConcreteClasskind___n_kwclass(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 466;
+  fra.me.line = 663;
   fra.me.meth = LOCATE_parser___parser_nodes___AConcreteClasskind___n_kwclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:466 */
+  /* parser/parser_nodes.nit:663 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_nodes, 466);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_nodes, 663);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AConcreteClasskind___n_kwclass__eq[] = "parser_nodes::AConcreteClasskind::n_kwclass=";
+void parser___parser_nodes___AConcreteClasskind___n_kwclass__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 663;
+  fra.me.meth = LOCATE_parser___parser_nodes___AConcreteClasskind___n_kwclass__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:663 */
+  ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwabstract[] = "parser_nodes::AAbstractClasskind::n_kwabstract";
 val_t parser___parser_nodes___AAbstractClasskind___n_kwabstract(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1358,23 +2708,43 @@ val_t parser___parser_nodes___AAbstractClasskind___n_kwabstract(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 470;
+  fra.me.line = 667;
   fra.me.meth = LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwabstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:470 */
+  /* parser/parser_nodes.nit:667 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser___parser_nodes, 470);
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser___parser_nodes, 667);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq[] = "parser_nodes::AAbstractClasskind::n_kwabstract=";
+void parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 667;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:667 */
+  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwclass[] = "parser_nodes::AAbstractClasskind::n_kwclass";
 val_t parser___parser_nodes___AAbstractClasskind___n_kwclass(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1382,23 +2752,43 @@ val_t parser___parser_nodes___AAbstractClasskind___n_kwclass(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 471;
+  fra.me.line = 668;
   fra.me.meth = LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:471 */
+  /* parser/parser_nodes.nit:668 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_nodes, 471);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_nodes, 668);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwclass__eq[] = "parser_nodes::AAbstractClasskind::n_kwclass=";
+void parser___parser_nodes___AAbstractClasskind___n_kwclass__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 668;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAbstractClasskind___n_kwclass__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:668 */
+  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AInterfaceClasskind___n_kwinterface[] = "parser_nodes::AInterfaceClasskind::n_kwinterface";
 val_t parser___parser_nodes___AInterfaceClasskind___n_kwinterface(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1406,23 +2796,43 @@ val_t parser___parser_nodes___AInterfaceClasskind___n_kwinterface(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 475;
+  fra.me.line = 672;
   fra.me.meth = LOCATE_parser___parser_nodes___AInterfaceClasskind___n_kwinterface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:475 */
+  /* parser/parser_nodes.nit:672 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser___parser_nodes, 475);
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser___parser_nodes, 672);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq[] = "parser_nodes::AInterfaceClasskind::n_kwinterface=";
+void parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 672;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:672 */
+  ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AEnumClasskind___n_kwenum[] = "parser_nodes::AEnumClasskind::n_kwenum";
 val_t parser___parser_nodes___AEnumClasskind___n_kwenum(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1430,23 +2840,43 @@ val_t parser___parser_nodes___AEnumClasskind___n_kwenum(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 479;
+  fra.me.line = 676;
   fra.me.meth = LOCATE_parser___parser_nodes___AEnumClasskind___n_kwenum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:479 */
+  /* parser/parser_nodes.nit:676 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser___parser_nodes, 479);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser___parser_nodes, 676);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AEnumClasskind___n_kwenum__eq[] = "parser_nodes::AEnumClasskind::n_kwenum=";
+void parser___parser_nodes___AEnumClasskind___n_kwenum__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 676;
+  fra.me.meth = LOCATE_parser___parser_nodes___AEnumClasskind___n_kwenum__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:676 */
+  ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternClasskind___n_kwextern[] = "parser_nodes::AExternClasskind::n_kwextern";
 val_t parser___parser_nodes___AExternClasskind___n_kwextern(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1454,41 +2884,81 @@ val_t parser___parser_nodes___AExternClasskind___n_kwextern(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 483;
+  fra.me.line = 680;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternClasskind___n_kwextern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:483 */
+  /* parser/parser_nodes.nit:680 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_parser___parser_nodes, 483);
+    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_parser___parser_nodes, 680);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternClasskind___n_kwextern__eq[] = "parser_nodes::AExternClasskind::n_kwextern=";
+void parser___parser_nodes___AExternClasskind___n_kwextern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 680;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternClasskind___n_kwextern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:680 */
+  ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternClasskind___n_kwclass[] = "parser_nodes::AExternClasskind::n_kwclass";
 val_t parser___parser_nodes___AExternClasskind___n_kwclass(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 484;
+  fra.me.line = 681;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternClasskind___n_kwclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:484 */
+  /* parser/parser_nodes.nit:681 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternClasskind___n_kwclass__eq[] = "parser_nodes::AExternClasskind::n_kwclass=";
+void parser___parser_nodes___AExternClasskind___n_kwclass__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 681;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternClasskind___n_kwclass__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:681 */
+  ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AFormaldef___n_id[] = "parser_nodes::AFormaldef::n_id";
 val_t parser___parser_nodes___AFormaldef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1496,41 +2966,81 @@ val_t parser___parser_nodes___AFormaldef___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 488;
+  fra.me.line = 687;
   fra.me.meth = LOCATE_parser___parser_nodes___AFormaldef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:488 */
+  /* parser/parser_nodes.nit:687 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 488);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 687);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AFormaldef___n_id__eq[] = "parser_nodes::AFormaldef::n_id=";
+void parser___parser_nodes___AFormaldef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 687;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFormaldef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:687 */
+  ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AFormaldef___n_type[] = "parser_nodes::AFormaldef::n_type";
 val_t parser___parser_nodes___AFormaldef___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 489;
+  fra.me.line = 688;
   fra.me.meth = LOCATE_parser___parser_nodes___AFormaldef___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:489 */
+  /* parser/parser_nodes.nit:688 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AFormaldef___n_type__eq[] = "parser_nodes::AFormaldef::n_type=";
+void parser___parser_nodes___AFormaldef___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 688;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFormaldef___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:688 */
+  ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASuperclass___n_kwsuper[] = "parser_nodes::ASuperclass::n_kwsuper";
 val_t parser___parser_nodes___ASuperclass___n_kwsuper(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1538,22 +3048,42 @@ val_t parser___parser_nodes___ASuperclass___n_kwsuper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 493;
+  fra.me.line = 695;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperclass___n_kwsuper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:493 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_nodes, 493);
-  }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:695 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_nodes, 695);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ASuperclass___n_kwsuper__eq[] = "parser_nodes::ASuperclass::n_kwsuper=";
+void parser___parser_nodes___ASuperclass___n_kwsuper__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 695;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASuperclass___n_kwsuper__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:695 */
+  ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return;
 }
 static const char LOCATE_parser___parser_nodes___ASuperclass___n_type[] = "parser_nodes::ASuperclass::n_type";
 val_t parser___parser_nodes___ASuperclass___n_type(val_t p0){
@@ -1562,59 +3092,119 @@ val_t parser___parser_nodes___ASuperclass___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 494;
+  fra.me.line = 696;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperclass___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:494 */
+  /* parser/parser_nodes.nit:696 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 494);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 696);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASuperclass___n_type__eq[] = "parser_nodes::ASuperclass::n_type=";
+void parser___parser_nodes___ASuperclass___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 696;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASuperclass___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:696 */
+  ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___APropdef___n_doc[] = "parser_nodes::APropdef::n_doc";
 val_t parser___parser_nodes___APropdef___n_doc(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 497;
+  fra.me.line = 702;
   fra.me.meth = LOCATE_parser___parser_nodes___APropdef___n_doc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:497 */
+  /* parser/parser_nodes.nit:702 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___APropdef___n_doc__eq[] = "parser_nodes::APropdef::n_doc=";
+void parser___parser_nodes___APropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 702;
+  fra.me.meth = LOCATE_parser___parser_nodes___APropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:702 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_kwredef[] = "parser_nodes::AAttrPropdef::n_kwredef";
 val_t parser___parser_nodes___AAttrPropdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 501;
+  fra.me.line = 709;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:501 */
+  /* parser/parser_nodes.nit:709 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_kwredef__eq[] = "parser_nodes::AAttrPropdef::n_kwredef=";
+void parser___parser_nodes___AAttrPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 709;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:709 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_visibility[] = "parser_nodes::AAttrPropdef::n_visibility";
 val_t parser___parser_nodes___AAttrPropdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1622,23 +3212,43 @@ val_t parser___parser_nodes___AAttrPropdef___n_visibility(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 502;
+  fra.me.line = 710;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:502 */
+  /* parser/parser_nodes.nit:710 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 502);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 710);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_visibility__eq[] = "parser_nodes::AAttrPropdef::n_visibility=";
+void parser___parser_nodes___AAttrPropdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 710;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:710 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_kwvar[] = "parser_nodes::AAttrPropdef::n_kwvar";
 val_t parser___parser_nodes___AAttrPropdef___n_kwvar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1646,131 +3256,271 @@ val_t parser___parser_nodes___AAttrPropdef___n_kwvar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 503;
+  fra.me.line = 711;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_kwvar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:503 */
+  /* parser/parser_nodes.nit:711 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_nodes, 503);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_nodes, 711);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_kwvar__eq[] = "parser_nodes::AAttrPropdef::n_kwvar=";
+void parser___parser_nodes___AAttrPropdef___n_kwvar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 711;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_kwvar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:711 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_id[] = "parser_nodes::AAttrPropdef::n_id";
 val_t parser___parser_nodes___AAttrPropdef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 504;
+  fra.me.line = 713;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:504 */
+  /* parser/parser_nodes.nit:713 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_id__eq[] = "parser_nodes::AAttrPropdef::n_id=";
+void parser___parser_nodes___AAttrPropdef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 713;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:713 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_id2[] = "parser_nodes::AAttrPropdef::n_id2";
 val_t parser___parser_nodes___AAttrPropdef___n_id2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 505;
+  fra.me.line = 716;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_id2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:505 */
+  /* parser/parser_nodes.nit:716 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_id2__eq[] = "parser_nodes::AAttrPropdef::n_id2=";
+void parser___parser_nodes___AAttrPropdef___n_id2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 716;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_id2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:716 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_type[] = "parser_nodes::AAttrPropdef::n_type";
 val_t parser___parser_nodes___AAttrPropdef___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 506;
+  fra.me.line = 719;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:506 */
+  /* parser/parser_nodes.nit:719 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_type__eq[] = "parser_nodes::AAttrPropdef::n_type=";
+void parser___parser_nodes___AAttrPropdef___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 719;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:719 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_readable[] = "parser_nodes::AAttrPropdef::n_readable";
 val_t parser___parser_nodes___AAttrPropdef___n_readable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 507;
+  fra.me.line = 720;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_readable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:507 */
+  /* parser/parser_nodes.nit:720 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_readable__eq[] = "parser_nodes::AAttrPropdef::n_readable=";
+void parser___parser_nodes___AAttrPropdef___n_readable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 720;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_readable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:720 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_writable[] = "parser_nodes::AAttrPropdef::n_writable";
 val_t parser___parser_nodes___AAttrPropdef___n_writable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 508;
+  fra.me.line = 721;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_writable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:508 */
+  /* parser/parser_nodes.nit:721 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_writable__eq[] = "parser_nodes::AAttrPropdef::n_writable=";
+void parser___parser_nodes___AAttrPropdef___n_writable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 721;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_writable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:721 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_expr[] = "parser_nodes::AAttrPropdef::n_expr";
 val_t parser___parser_nodes___AAttrPropdef___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 509;
+  fra.me.line = 723;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:509 */
+  /* parser/parser_nodes.nit:723 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrPropdef___n_expr__eq[] = "parser_nodes::AAttrPropdef::n_expr=";
+void parser___parser_nodes___AAttrPropdef___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 723;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:723 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrPropdef___hot_location[] = "parser_nodes::AAttrPropdef::(parser_nodes::ANode::hot_location)";
 val_t parser___parser_nodes___AAttrPropdef___hot_location(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1779,7 +3529,7 @@ val_t parser___parser_nodes___AAttrPropdef___hot_location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 510;
+  fra.me.line = 725;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrPropdef___hot_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1787,7 +3537,7 @@ val_t parser___parser_nodes___AAttrPropdef___hot_location(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:512 */
+  /* parser/parser_nodes.nit:727 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1806,7 +3556,7 @@ val_t parser___parser_nodes___AAttrPropdef___hot_location(val_t p0){
     fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 512);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 727);
     }
     fra.me.REG[1] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
     goto label1;
@@ -1814,7 +3564,7 @@ val_t parser___parser_nodes___AAttrPropdef___hot_location(val_t p0){
     fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 512);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 727);
     }
     fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = fra.me.REG[0];
@@ -1830,71 +3580,151 @@ val_t parser___parser_nodes___AMethPropdef___n_kwredef(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 517;
+  fra.me.line = 734;
   fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:517 */
+  /* parser/parser_nodes.nit:734 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AMethPropdef___n_kwredef__eq[] = "parser_nodes::AMethPropdef::n_kwredef=";
+void parser___parser_nodes___AMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 734;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:734 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AMethPropdef___n_visibility[] = "parser_nodes::AMethPropdef::n_visibility";
 val_t parser___parser_nodes___AMethPropdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 518;
+  fra.me.line = 735;
   fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:518 */
+  /* parser/parser_nodes.nit:735 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AMethPropdef___n_visibility__eq[] = "parser_nodes::AMethPropdef::n_visibility=";
+void parser___parser_nodes___AMethPropdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 735;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:735 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_nodes___AMethPropdef___n_methid[] = "parser_nodes::AMethPropdef::n_methid";
+val_t parser___parser_nodes___AMethPropdef___n_methid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 736;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_methid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:736 */
+  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AMethPropdef___n_methid__eq[] = "parser_nodes::AMethPropdef::n_methid=";
+void parser___parser_nodes___AMethPropdef___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 736;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:736 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
-static const char LOCATE_parser___parser_nodes___AMethPropdef___n_methid[] = "parser_nodes::AMethPropdef::n_methid";
-val_t parser___parser_nodes___AMethPropdef___n_methid(val_t p0){
+static const char LOCATE_parser___parser_nodes___AMethPropdef___n_signature[] = "parser_nodes::AMethPropdef::n_signature";
+val_t parser___parser_nodes___AMethPropdef___n_signature(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 519;
-  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_methid;
+  fra.me.line = 737;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:519 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:737 */
+  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-static const char LOCATE_parser___parser_nodes___AMethPropdef___n_signature[] = "parser_nodes::AMethPropdef::n_signature";
-val_t parser___parser_nodes___AMethPropdef___n_signature(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_parser___parser_nodes___AMethPropdef___n_signature__eq[] = "parser_nodes::AMethPropdef::n_signature=";
+void parser___parser_nodes___AMethPropdef___n_signature__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 520;
-  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_signature;
+  fra.me.line = 737;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___n_signature__eq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:520 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:737 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AMethPropdef___hot_location[] = "parser_nodes::AMethPropdef::(parser_nodes::ANode::hot_location)";
 val_t parser___parser_nodes___AMethPropdef___hot_location(val_t p0){
@@ -1904,7 +3734,7 @@ val_t parser___parser_nodes___AMethPropdef___hot_location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 521;
+  fra.me.line = 738;
   fra.me.meth = LOCATE_parser___parser_nodes___AMethPropdef___hot_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1912,7 +3742,7 @@ val_t parser___parser_nodes___AMethPropdef___hot_location(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:523 */
+  /* parser/parser_nodes.nit:740 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1928,16 +3758,16 @@ val_t parser___parser_nodes___AMethPropdef___hot_location(val_t p0){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_nodes.nit:524 */
+    /* parser/parser_nodes.nit:741 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 524);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_nodes, 741);
     }
     fra.me.REG[1] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
     goto label1;
   } else {
-    /* parser/parser_nodes.nit:526 */
+    /* parser/parser_nodes.nit:743 */
     fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
@@ -1953,23 +3783,43 @@ val_t parser___parser_nodes___ADeferredMethPropdef___n_kwmeth(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 532;
+  fra.me.line = 752;
   fra.me.meth = LOCATE_parser___parser_nodes___ADeferredMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:532 */
+  /* parser/parser_nodes.nit:752 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_nodes, 532);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_nodes, 752);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq[] = "parser_nodes::ADeferredMethPropdef::n_kwmeth=";
+void parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 752;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:752 */
+  ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AInternMethPropdef___n_kwmeth[] = "parser_nodes::AInternMethPropdef::n_kwmeth";
 val_t parser___parser_nodes___AInternMethPropdef___n_kwmeth(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1977,77 +3827,157 @@ val_t parser___parser_nodes___AInternMethPropdef___n_kwmeth(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 536;
+  fra.me.line = 758;
   fra.me.meth = LOCATE_parser___parser_nodes___AInternMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:536 */
+  /* parser/parser_nodes.nit:758 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_nodes, 536);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_nodes, 758);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq[] = "parser_nodes::AInternMethPropdef::n_kwmeth=";
+void parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 758;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:758 */
+  ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternPropdef___n_extern[] = "parser_nodes::AExternPropdef::n_extern";
 val_t parser___parser_nodes___AExternPropdef___n_extern(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 540;
+  fra.me.line = 764;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternPropdef___n_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:540 */
+  /* parser/parser_nodes.nit:764 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternPropdef___n_extern__eq[] = "parser_nodes::AExternPropdef::n_extern=";
+void parser___parser_nodes___AExternPropdef___n_extern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 764;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternPropdef___n_extern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:764 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternPropdef___n_extern_calls[] = "parser_nodes::AExternPropdef::n_extern_calls";
 val_t parser___parser_nodes___AExternPropdef___n_extern_calls(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 541;
+  fra.me.line = 765;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternPropdef___n_extern_calls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:541 */
+  /* parser/parser_nodes.nit:765 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternPropdef___n_extern_calls__eq[] = "parser_nodes::AExternPropdef::n_extern_calls=";
+void parser___parser_nodes___AExternPropdef___n_extern_calls__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 765;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternPropdef___n_extern_calls__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:765 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternPropdef___n_extern_code_block[] = "parser_nodes::AExternPropdef::n_extern_code_block";
 val_t parser___parser_nodes___AExternPropdef___n_extern_code_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 542;
+  fra.me.line = 766;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternPropdef___n_extern_code_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:542 */
+  /* parser/parser_nodes.nit:766 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternPropdef___n_extern_code_block__eq[] = "parser_nodes::AExternPropdef::n_extern_code_block=";
+void parser___parser_nodes___AExternPropdef___n_extern_code_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 766;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternPropdef___n_extern_code_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:766 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternMethPropdef___n_kwmeth[] = "parser_nodes::AExternMethPropdef::n_kwmeth";
 val_t parser___parser_nodes___AExternMethPropdef___n_kwmeth(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2055,59 +3985,119 @@ val_t parser___parser_nodes___AExternMethPropdef___n_kwmeth(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 547;
+  fra.me.line = 772;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:547 */
+  /* parser/parser_nodes.nit:772 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_nodes, 547);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_nodes, 772);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq[] = "parser_nodes::AExternMethPropdef::n_kwmeth=";
+void parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 772;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:772 */
+  ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth[] = "parser_nodes::AConcreteMethPropdef::n_kwmeth";
 val_t parser___parser_nodes___AConcreteMethPropdef___n_kwmeth(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 551;
+  fra.me.line = 778;
   fra.me.meth = LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:551 */
+  /* parser/parser_nodes.nit:778 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq[] = "parser_nodes::AConcreteMethPropdef::n_kwmeth=";
+void parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 778;
+  fra.me.meth = LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:778 */
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_block[] = "parser_nodes::AConcreteMethPropdef::n_block";
 val_t parser___parser_nodes___AConcreteMethPropdef___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 552;
+  fra.me.line = 779;
   fra.me.meth = LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:552 */
+  /* parser/parser_nodes.nit:779 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_block__eq[] = "parser_nodes::AConcreteMethPropdef::n_block=";
+void parser___parser_nodes___AConcreteMethPropdef___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 779;
+  fra.me.meth = LOCATE_parser___parser_nodes___AConcreteMethPropdef___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:779 */
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AConcreteInitPropdef___n_kwinit[] = "parser_nodes::AConcreteInitPropdef::n_kwinit";
 val_t parser___parser_nodes___AConcreteInitPropdef___n_kwinit(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2115,37 +4105,57 @@ val_t parser___parser_nodes___AConcreteInitPropdef___n_kwinit(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 560;
+  fra.me.line = 791;
   fra.me.meth = LOCATE_parser___parser_nodes___AConcreteInitPropdef___n_kwinit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:560 */
+  /* parser/parser_nodes.nit:791 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_nodes, 560);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_nodes, 791);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq[] = "parser_nodes::AConcreteInitPropdef::n_kwinit=";
+void parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 791;
+  fra.me.meth = LOCATE_parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:791 */
+  ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AConcreteInitPropdef___hot_location[] = "parser_nodes::AConcreteInitPropdef::(parser_nodes::ANode::hot_location)";
 val_t parser___parser_nodes___AConcreteInitPropdef___hot_location(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 561;
+  fra.me.line = 792;
   fra.me.meth = LOCATE_parser___parser_nodes___AConcreteInitPropdef___hot_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:561 */
+  /* parser/parser_nodes.nit:792 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AConcreteInitPropdef___n_kwinit(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2160,23 +4170,43 @@ val_t parser___parser_nodes___AExternInitPropdef___n_kwnew(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 566;
+  fra.me.line = 799;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternInitPropdef___n_kwnew;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:566 */
+  /* parser/parser_nodes.nit:799 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_nodes, 566);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_nodes, 799);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternInitPropdef___n_kwnew__eq[] = "parser_nodes::AExternInitPropdef::n_kwnew=";
+void parser___parser_nodes___AExternInitPropdef___n_kwnew__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 799;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternInitPropdef___n_kwnew__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:799 */
+  ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternCalls___n_kwimport[] = "parser_nodes::AExternCalls::n_kwimport";
 val_t parser___parser_nodes___AExternCalls___n_kwimport(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2184,23 +4214,43 @@ val_t parser___parser_nodes___AExternCalls___n_kwimport(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 573;
+  fra.me.line = 810;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternCalls___n_kwimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:573 */
+  /* parser/parser_nodes.nit:810 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_nodes, 573);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_nodes, 810);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternCalls___n_kwimport__eq[] = "parser_nodes::AExternCalls::n_kwimport=";
+void parser___parser_nodes___AExternCalls___n_kwimport__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 810;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternCalls___n_kwimport__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:810 */
+  ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternCalls___n_extern_calls[] = "parser_nodes::AExternCalls::n_extern_calls";
 val_t parser___parser_nodes___AExternCalls___n_extern_calls(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2208,18 +4258,18 @@ val_t parser___parser_nodes___AExternCalls___n_extern_calls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 574;
+  fra.me.line = 811;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternCalls___n_extern_calls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:574 */
+  /* parser/parser_nodes.nit:811 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_nodes, 574);
+    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_nodes, 811);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2232,23 +4282,43 @@ val_t parser___parser_nodes___ALocalPropExternCall___n_methid(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 584;
+  fra.me.line = 821;
   fra.me.meth = LOCATE_parser___parser_nodes___ALocalPropExternCall___n_methid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:584 */
+  /* parser/parser_nodes.nit:821 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_nodes, 584);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_nodes, 821);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALocalPropExternCall___n_methid__eq[] = "parser_nodes::ALocalPropExternCall::n_methid=";
+void parser___parser_nodes___ALocalPropExternCall___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 821;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALocalPropExternCall___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:821 */
+  ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AFullPropExternCall___n_classid[] = "parser_nodes::AFullPropExternCall::n_classid";
 val_t parser___parser_nodes___AFullPropExternCall___n_classid(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2256,40 +4326,80 @@ val_t parser___parser_nodes___AFullPropExternCall___n_classid(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 588;
+  fra.me.line = 825;
   fra.me.meth = LOCATE_parser___parser_nodes___AFullPropExternCall___n_classid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:588 */
+  /* parser/parser_nodes.nit:825 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_nodes, 588);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_nodes, 825);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AFullPropExternCall___n_classid__eq[] = "parser_nodes::AFullPropExternCall::n_classid=";
+void parser___parser_nodes___AFullPropExternCall___n_classid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 825;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFullPropExternCall___n_classid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:825 */
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AFullPropExternCall___n_quad[] = "parser_nodes::AFullPropExternCall::n_quad";
 val_t parser___parser_nodes___AFullPropExternCall___n_quad(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 589;
+  fra.me.line = 826;
   fra.me.meth = LOCATE_parser___parser_nodes___AFullPropExternCall___n_quad;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:589 */
+  /* parser/parser_nodes.nit:826 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AFullPropExternCall___n_quad__eq[] = "parser_nodes::AFullPropExternCall::n_quad=";
+void parser___parser_nodes___AFullPropExternCall___n_quad__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 826;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFullPropExternCall___n_quad__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:826 */
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AFullPropExternCall___n_methid[] = "parser_nodes::AFullPropExternCall::n_methid";
 val_t parser___parser_nodes___AFullPropExternCall___n_methid(val_t p0){
@@ -2298,23 +4408,43 @@ val_t parser___parser_nodes___AFullPropExternCall___n_methid(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 590;
+  fra.me.line = 827;
   fra.me.meth = LOCATE_parser___parser_nodes___AFullPropExternCall___n_methid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:590 */
+  /* parser/parser_nodes.nit:827 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_nodes, 590);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_nodes, 827);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AFullPropExternCall___n_methid__eq[] = "parser_nodes::AFullPropExternCall::n_methid=";
+void parser___parser_nodes___AFullPropExternCall___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 827;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFullPropExternCall___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:827 */
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AInitPropExternCall___n_classid[] = "parser_nodes::AInitPropExternCall::n_classid";
 val_t parser___parser_nodes___AInitPropExternCall___n_classid(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2322,23 +4452,43 @@ val_t parser___parser_nodes___AInitPropExternCall___n_classid(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 594;
+  fra.me.line = 831;
   fra.me.meth = LOCATE_parser___parser_nodes___AInitPropExternCall___n_classid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:594 */
+  /* parser/parser_nodes.nit:831 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_nodes, 594);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_nodes, 831);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AInitPropExternCall___n_classid__eq[] = "parser_nodes::AInitPropExternCall::n_classid=";
+void parser___parser_nodes___AInitPropExternCall___n_classid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 831;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInitPropExternCall___n_classid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:831 */
+  ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASuperExternCall___n_kwsuper[] = "parser_nodes::ASuperExternCall::n_kwsuper";
 val_t parser___parser_nodes___ASuperExternCall___n_kwsuper(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2346,23 +4496,43 @@ val_t parser___parser_nodes___ASuperExternCall___n_kwsuper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 598;
+  fra.me.line = 835;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperExternCall___n_kwsuper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:598 */
+  /* parser/parser_nodes.nit:835 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_nodes, 598);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_nodes, 835);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASuperExternCall___n_kwsuper__eq[] = "parser_nodes::ASuperExternCall::n_kwsuper=";
+void parser___parser_nodes___ASuperExternCall___n_kwsuper__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 835;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASuperExternCall___n_kwsuper__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:835 */
+  ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACastAsExternCall___n_from_type[] = "parser_nodes::ACastAsExternCall::n_from_type";
 val_t parser___parser_nodes___ACastAsExternCall___n_from_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2370,23 +4540,43 @@ val_t parser___parser_nodes___ACastAsExternCall___n_from_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 605;
+  fra.me.line = 842;
   fra.me.meth = LOCATE_parser___parser_nodes___ACastAsExternCall___n_from_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:605 */
+  /* parser/parser_nodes.nit:842 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_parser___parser_nodes, 605);
+    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_parser___parser_nodes, 842);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACastAsExternCall___n_from_type__eq[] = "parser_nodes::ACastAsExternCall::n_from_type=";
+void parser___parser_nodes___ACastAsExternCall___n_from_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 842;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACastAsExternCall___n_from_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:842 */
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACastAsExternCall___n_kwas[] = "parser_nodes::ACastAsExternCall::n_kwas";
 val_t parser___parser_nodes___ACastAsExternCall___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2394,23 +4584,43 @@ val_t parser___parser_nodes___ACastAsExternCall___n_kwas(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 606;
+  fra.me.line = 843;
   fra.me.meth = LOCATE_parser___parser_nodes___ACastAsExternCall___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:606 */
+  /* parser/parser_nodes.nit:843 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 606);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 843);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACastAsExternCall___n_kwas__eq[] = "parser_nodes::ACastAsExternCall::n_kwas=";
+void parser___parser_nodes___ACastAsExternCall___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 843;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACastAsExternCall___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:843 */
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACastAsExternCall___n_to_type[] = "parser_nodes::ACastAsExternCall::n_to_type";
 val_t parser___parser_nodes___ACastAsExternCall___n_to_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2418,23 +4628,43 @@ val_t parser___parser_nodes___ACastAsExternCall___n_to_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 607;
+  fra.me.line = 844;
   fra.me.meth = LOCATE_parser___parser_nodes___ACastAsExternCall___n_to_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:607 */
+  /* parser/parser_nodes.nit:844 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_parser___parser_nodes, 607);
+    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_parser___parser_nodes, 844);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACastAsExternCall___n_to_type__eq[] = "parser_nodes::ACastAsExternCall::n_to_type=";
+void parser___parser_nodes___ACastAsExternCall___n_to_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 844;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACastAsExternCall___n_to_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:844 */
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNullableExternCall___n_type[] = "parser_nodes::AAsNullableExternCall::n_type";
 val_t parser___parser_nodes___AAsNullableExternCall___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2442,23 +4672,43 @@ val_t parser___parser_nodes___AAsNullableExternCall___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 611;
+  fra.me.line = 848;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNullableExternCall___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:611 */
+  /* parser/parser_nodes.nit:848 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 611);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 848);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNullableExternCall___n_type__eq[] = "parser_nodes::AAsNullableExternCall::n_type=";
+void parser___parser_nodes___AAsNullableExternCall___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 848;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNullableExternCall___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:848 */
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwas[] = "parser_nodes::AAsNullableExternCall::n_kwas";
 val_t parser___parser_nodes___AAsNullableExternCall___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2466,23 +4716,43 @@ val_t parser___parser_nodes___AAsNullableExternCall___n_kwas(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 612;
+  fra.me.line = 849;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:612 */
+  /* parser/parser_nodes.nit:849 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 612);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 849);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwas__eq[] = "parser_nodes::AAsNullableExternCall::n_kwas=";
+void parser___parser_nodes___AAsNullableExternCall___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 849;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:849 */
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwnullable[] = "parser_nodes::AAsNullableExternCall::n_kwnullable";
 val_t parser___parser_nodes___AAsNullableExternCall___n_kwnullable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2490,23 +4760,43 @@ val_t parser___parser_nodes___AAsNullableExternCall___n_kwnullable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 613;
+  fra.me.line = 850;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwnullable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:613 */
+  /* parser/parser_nodes.nit:850 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_nodes, 613);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_nodes, 850);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq[] = "parser_nodes::AAsNullableExternCall::n_kwnullable=";
+void parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 850;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:850 */
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_type[] = "parser_nodes::AAsNotNullableExternCall::n_type";
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2514,23 +4804,43 @@ val_t parser___parser_nodes___AAsNotNullableExternCall___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 617;
+  fra.me.line = 854;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:617 */
+  /* parser/parser_nodes.nit:854 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 617);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 854);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_type__eq[] = "parser_nodes::AAsNotNullableExternCall::n_type=";
+void parser___parser_nodes___AAsNotNullableExternCall___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 854;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:854 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwas[] = "parser_nodes::AAsNotNullableExternCall::n_kwas";
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2538,23 +4848,43 @@ val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwas(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 618;
+  fra.me.line = 855;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:618 */
+  /* parser/parser_nodes.nit:855 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 618);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 855);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq[] = "parser_nodes::AAsNotNullableExternCall::n_kwas=";
+void parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 855;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:855 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot[] = "parser_nodes::AAsNotNullableExternCall::n_kwnot";
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwnot(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2562,23 +4892,43 @@ val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwnot(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 619;
+  fra.me.line = 856;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:619 */
+  /* parser/parser_nodes.nit:856 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_nodes, 619);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_nodes, 856);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq[] = "parser_nodes::AAsNotNullableExternCall::n_kwnot=";
+void parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 856;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:856 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable[] = "parser_nodes::AAsNotNullableExternCall::n_kwnullable";
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2586,41 +4936,81 @@ val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 620;
+  fra.me.line = 857;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:620 */
+  /* parser/parser_nodes.nit:857 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_nodes, 620);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_nodes, 857);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq[] = "parser_nodes::AAsNotNullableExternCall::n_kwnullable=";
+void parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 857;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:857 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ATypePropdef___n_kwredef[] = "parser_nodes::ATypePropdef::n_kwredef";
 val_t parser___parser_nodes___ATypePropdef___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 624;
+  fra.me.line = 863;
   fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:624 */
+  /* parser/parser_nodes.nit:863 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ATypePropdef___n_kwredef__eq[] = "parser_nodes::ATypePropdef::n_kwredef=";
+void parser___parser_nodes___ATypePropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 863;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:863 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ATypePropdef___n_visibility[] = "parser_nodes::ATypePropdef::n_visibility";
 val_t parser___parser_nodes___ATypePropdef___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2628,23 +5018,43 @@ val_t parser___parser_nodes___ATypePropdef___n_visibility(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 625;
+  fra.me.line = 864;
   fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:625 */
+  /* parser/parser_nodes.nit:864 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 625);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_nodes, 864);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ATypePropdef___n_visibility__eq[] = "parser_nodes::ATypePropdef::n_visibility=";
+void parser___parser_nodes___ATypePropdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 864;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:864 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ATypePropdef___n_kwtype[] = "parser_nodes::ATypePropdef::n_kwtype";
 val_t parser___parser_nodes___ATypePropdef___n_kwtype(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2652,23 +5062,43 @@ val_t parser___parser_nodes___ATypePropdef___n_kwtype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 626;
+  fra.me.line = 865;
   fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_kwtype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:626 */
+  /* parser/parser_nodes.nit:865 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_nodes, 626);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_nodes, 865);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ATypePropdef___n_kwtype__eq[] = "parser_nodes::ATypePropdef::n_kwtype=";
+void parser___parser_nodes___ATypePropdef___n_kwtype__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 865;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_kwtype__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:865 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ATypePropdef___n_id[] = "parser_nodes::ATypePropdef::n_id";
 val_t parser___parser_nodes___ATypePropdef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2676,22 +5106,42 @@ val_t parser___parser_nodes___ATypePropdef___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 627;
+  fra.me.line = 866;
   fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:627 */
+  /* parser/parser_nodes.nit:866 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 627);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 866);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ATypePropdef___n_id__eq[] = "parser_nodes::ATypePropdef::n_id=";
+void parser___parser_nodes___ATypePropdef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 866;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:866 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___ATypePropdef___n_type[] = "parser_nodes::ATypePropdef::n_type";
 val_t parser___parser_nodes___ATypePropdef___n_type(val_t p0){
@@ -2700,59 +5150,119 @@ val_t parser___parser_nodes___ATypePropdef___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 628;
+  fra.me.line = 867;
   fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:628 */
+  /* parser/parser_nodes.nit:867 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 628);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 867);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ATypePropdef___n_type__eq[] = "parser_nodes::ATypePropdef::n_type=";
+void parser___parser_nodes___ATypePropdef___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 867;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATypePropdef___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:867 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAble___n_visibility[] = "parser_nodes::AAble::n_visibility";
 val_t parser___parser_nodes___AAble___n_visibility(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 631;
+  fra.me.line = 873;
   fra.me.meth = LOCATE_parser___parser_nodes___AAble___n_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:631 */
+  /* parser/parser_nodes.nit:873 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAble___n_visibility__eq[] = "parser_nodes::AAble::n_visibility=";
+void parser___parser_nodes___AAble___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 873;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAble___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:873 */
+  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAble___n_kwredef[] = "parser_nodes::AAble::n_kwredef";
 val_t parser___parser_nodes___AAble___n_kwredef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 632;
+  fra.me.line = 874;
   fra.me.meth = LOCATE_parser___parser_nodes___AAble___n_kwredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:632 */
+  /* parser/parser_nodes.nit:874 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAble___n_kwredef__eq[] = "parser_nodes::AAble::n_kwredef=";
+void parser___parser_nodes___AAble___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 874;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAble___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:874 */
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AReadAble___n_kwreadable[] = "parser_nodes::AReadAble::n_kwreadable";
 val_t parser___parser_nodes___AReadAble___n_kwreadable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2760,23 +5270,43 @@ val_t parser___parser_nodes___AReadAble___n_kwreadable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 636;
+  fra.me.line = 880;
   fra.me.meth = LOCATE_parser___parser_nodes___AReadAble___n_kwreadable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:636 */
+  /* parser/parser_nodes.nit:880 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser___parser_nodes, 636);
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser___parser_nodes, 880);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AReadAble___n_kwreadable__eq[] = "parser_nodes::AReadAble::n_kwreadable=";
+void parser___parser_nodes___AReadAble___n_kwreadable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 880;
+  fra.me.meth = LOCATE_parser___parser_nodes___AReadAble___n_kwreadable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:880 */
+  ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AWriteAble___n_kwwritable[] = "parser_nodes::AWriteAble::n_kwwritable";
 val_t parser___parser_nodes___AWriteAble___n_kwwritable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2784,23 +5314,43 @@ val_t parser___parser_nodes___AWriteAble___n_kwwritable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 640;
+  fra.me.line = 886;
   fra.me.meth = LOCATE_parser___parser_nodes___AWriteAble___n_kwwritable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:640 */
+  /* parser/parser_nodes.nit:886 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser___parser_nodes, 640);
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser___parser_nodes, 886);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AWriteAble___n_kwwritable__eq[] = "parser_nodes::AWriteAble::n_kwwritable=";
+void parser___parser_nodes___AWriteAble___n_kwwritable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 886;
+  fra.me.meth = LOCATE_parser___parser_nodes___AWriteAble___n_kwwritable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:886 */
+  ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIdMethid___n_id[] = "parser_nodes::AIdMethid::n_id";
 val_t parser___parser_nodes___AIdMethid___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2808,23 +5358,43 @@ val_t parser___parser_nodes___AIdMethid___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 645;
+  fra.me.line = 896;
   fra.me.meth = LOCATE_parser___parser_nodes___AIdMethid___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:645 */
+  /* parser/parser_nodes.nit:896 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 645);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 896);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIdMethid___n_id__eq[] = "parser_nodes::AIdMethid::n_id=";
+void parser___parser_nodes___AIdMethid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 896;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIdMethid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:896 */
+  ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___APlusMethid___n_plus[] = "parser_nodes::APlusMethid::n_plus";
 val_t parser___parser_nodes___APlusMethid___n_plus(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2832,23 +5402,43 @@ val_t parser___parser_nodes___APlusMethid___n_plus(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 649;
+  fra.me.line = 900;
   fra.me.meth = LOCATE_parser___parser_nodes___APlusMethid___n_plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:649 */
+  /* parser/parser_nodes.nit:900 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser___parser_nodes, 649);
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser___parser_nodes, 900);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___APlusMethid___n_plus__eq[] = "parser_nodes::APlusMethid::n_plus=";
+void parser___parser_nodes___APlusMethid___n_plus__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 900;
+  fra.me.meth = LOCATE_parser___parser_nodes___APlusMethid___n_plus__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:900 */
+  ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AMinusMethid___n_minus[] = "parser_nodes::AMinusMethid::n_minus";
 val_t parser___parser_nodes___AMinusMethid___n_minus(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2856,23 +5446,43 @@ val_t parser___parser_nodes___AMinusMethid___n_minus(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 653;
+  fra.me.line = 904;
   fra.me.meth = LOCATE_parser___parser_nodes___AMinusMethid___n_minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:653 */
+  /* parser/parser_nodes.nit:904 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_nodes, 653);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_nodes, 904);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AMinusMethid___n_minus__eq[] = "parser_nodes::AMinusMethid::n_minus=";
+void parser___parser_nodes___AMinusMethid___n_minus__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 904;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMinusMethid___n_minus__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:904 */
+  ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStarMethid___n_star[] = "parser_nodes::AStarMethid::n_star";
 val_t parser___parser_nodes___AStarMethid___n_star(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2880,23 +5490,43 @@ val_t parser___parser_nodes___AStarMethid___n_star(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 657;
+  fra.me.line = 908;
   fra.me.meth = LOCATE_parser___parser_nodes___AStarMethid___n_star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:657 */
+  /* parser/parser_nodes.nit:908 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser___parser_nodes, 657);
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser___parser_nodes, 908);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStarMethid___n_star__eq[] = "parser_nodes::AStarMethid::n_star=";
+void parser___parser_nodes___AStarMethid___n_star__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 908;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStarMethid___n_star__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:908 */
+  ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASlashMethid___n_slash[] = "parser_nodes::ASlashMethid::n_slash";
 val_t parser___parser_nodes___ASlashMethid___n_slash(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2904,23 +5534,43 @@ val_t parser___parser_nodes___ASlashMethid___n_slash(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 661;
+  fra.me.line = 912;
   fra.me.meth = LOCATE_parser___parser_nodes___ASlashMethid___n_slash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:661 */
+  /* parser/parser_nodes.nit:912 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser___parser_nodes, 661);
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser___parser_nodes, 912);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASlashMethid___n_slash__eq[] = "parser_nodes::ASlashMethid::n_slash=";
+void parser___parser_nodes___ASlashMethid___n_slash__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 912;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASlashMethid___n_slash__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:912 */
+  ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___APercentMethid___n_percent[] = "parser_nodes::APercentMethid::n_percent";
 val_t parser___parser_nodes___APercentMethid___n_percent(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2928,23 +5578,43 @@ val_t parser___parser_nodes___APercentMethid___n_percent(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 665;
+  fra.me.line = 916;
   fra.me.meth = LOCATE_parser___parser_nodes___APercentMethid___n_percent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:665 */
+  /* parser/parser_nodes.nit:916 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser___parser_nodes, 665);
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser___parser_nodes, 916);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___APercentMethid___n_percent__eq[] = "parser_nodes::APercentMethid::n_percent=";
+void parser___parser_nodes___APercentMethid___n_percent__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 916;
+  fra.me.meth = LOCATE_parser___parser_nodes___APercentMethid___n_percent__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:916 */
+  ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AEqMethid___n_eq[] = "parser_nodes::AEqMethid::n_eq";
 val_t parser___parser_nodes___AEqMethid___n_eq(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2952,23 +5622,43 @@ val_t parser___parser_nodes___AEqMethid___n_eq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 669;
+  fra.me.line = 920;
   fra.me.meth = LOCATE_parser___parser_nodes___AEqMethid___n_eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:669 */
+  /* parser/parser_nodes.nit:920 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser___parser_nodes, 669);
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser___parser_nodes, 920);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AEqMethid___n_eq__eq[] = "parser_nodes::AEqMethid::n_eq=";
+void parser___parser_nodes___AEqMethid___n_eq__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 920;
+  fra.me.meth = LOCATE_parser___parser_nodes___AEqMethid___n_eq__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:920 */
+  ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANeMethid___n_ne[] = "parser_nodes::ANeMethid::n_ne";
 val_t parser___parser_nodes___ANeMethid___n_ne(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2976,23 +5666,43 @@ val_t parser___parser_nodes___ANeMethid___n_ne(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 673;
+  fra.me.line = 924;
   fra.me.meth = LOCATE_parser___parser_nodes___ANeMethid___n_ne;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:673 */
+  /* parser/parser_nodes.nit:924 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser___parser_nodes, 673);
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser___parser_nodes, 924);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANeMethid___n_ne__eq[] = "parser_nodes::ANeMethid::n_ne=";
+void parser___parser_nodes___ANeMethid___n_ne__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 924;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANeMethid___n_ne__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:924 */
+  ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ALeMethid___n_le[] = "parser_nodes::ALeMethid::n_le";
 val_t parser___parser_nodes___ALeMethid___n_le(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3000,23 +5710,43 @@ val_t parser___parser_nodes___ALeMethid___n_le(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 677;
+  fra.me.line = 928;
   fra.me.meth = LOCATE_parser___parser_nodes___ALeMethid___n_le;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:677 */
+  /* parser/parser_nodes.nit:928 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser___parser_nodes, 677);
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser___parser_nodes, 928);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALeMethid___n_le__eq[] = "parser_nodes::ALeMethid::n_le=";
+void parser___parser_nodes___ALeMethid___n_le__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 928;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALeMethid___n_le__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:928 */
+  ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AGeMethid___n_ge[] = "parser_nodes::AGeMethid::n_ge";
 val_t parser___parser_nodes___AGeMethid___n_ge(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3024,23 +5754,43 @@ val_t parser___parser_nodes___AGeMethid___n_ge(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 681;
+  fra.me.line = 932;
   fra.me.meth = LOCATE_parser___parser_nodes___AGeMethid___n_ge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:681 */
+  /* parser/parser_nodes.nit:932 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser___parser_nodes, 681);
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser___parser_nodes, 932);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AGeMethid___n_ge__eq[] = "parser_nodes::AGeMethid::n_ge=";
+void parser___parser_nodes___AGeMethid___n_ge__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 932;
+  fra.me.meth = LOCATE_parser___parser_nodes___AGeMethid___n_ge__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:932 */
+  ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ALtMethid___n_lt[] = "parser_nodes::ALtMethid::n_lt";
 val_t parser___parser_nodes___ALtMethid___n_lt(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3048,23 +5798,43 @@ val_t parser___parser_nodes___ALtMethid___n_lt(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 685;
+  fra.me.line = 936;
   fra.me.meth = LOCATE_parser___parser_nodes___ALtMethid___n_lt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:685 */
+  /* parser/parser_nodes.nit:936 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser___parser_nodes, 685);
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser___parser_nodes, 936);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALtMethid___n_lt__eq[] = "parser_nodes::ALtMethid::n_lt=";
+void parser___parser_nodes___ALtMethid___n_lt__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 936;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALtMethid___n_lt__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:936 */
+  ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AGtMethid___n_gt[] = "parser_nodes::AGtMethid::n_gt";
 val_t parser___parser_nodes___AGtMethid___n_gt(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3072,22 +5842,42 @@ val_t parser___parser_nodes___AGtMethid___n_gt(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 689;
+  fra.me.line = 940;
   fra.me.meth = LOCATE_parser___parser_nodes___AGtMethid___n_gt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:689 */
+  /* parser/parser_nodes.nit:940 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser___parser_nodes, 689);
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser___parser_nodes, 940);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AGtMethid___n_gt__eq[] = "parser_nodes::AGtMethid::n_gt=";
+void parser___parser_nodes___AGtMethid___n_gt__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 940;
+  fra.me.meth = LOCATE_parser___parser_nodes___AGtMethid___n_gt__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:940 */
+  ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___ALlMethid___n_ll[] = "parser_nodes::ALlMethid::n_ll";
 val_t parser___parser_nodes___ALlMethid___n_ll(val_t p0){
@@ -3096,18 +5886,18 @@ val_t parser___parser_nodes___ALlMethid___n_ll(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 693;
+  fra.me.line = 944;
   fra.me.meth = LOCATE_parser___parser_nodes___ALlMethid___n_ll;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:693 */
+  /* parser/parser_nodes.nit:944 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser___parser_nodes, 693);
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser___parser_nodes, 944);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3119,7 +5909,7 @@ void parser___parser_nodes___ALlMethid___n_ll__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 693;
+  fra.me.line = 944;
   fra.me.meth = LOCATE_parser___parser_nodes___ALlMethid___n_ll__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3128,7 +5918,7 @@ void parser___parser_nodes___ALlMethid___n_ll__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_nodes.nit:693 */
+  /* parser/parser_nodes.nit:944 */
   ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -3140,18 +5930,18 @@ val_t parser___parser_nodes___AGgMethid___n_gg(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 697;
+  fra.me.line = 948;
   fra.me.meth = LOCATE_parser___parser_nodes___AGgMethid___n_gg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:697 */
+  /* parser/parser_nodes.nit:948 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser___parser_nodes, 697);
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser___parser_nodes, 948);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3163,7 +5953,7 @@ void parser___parser_nodes___AGgMethid___n_gg__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 697;
+  fra.me.line = 948;
   fra.me.meth = LOCATE_parser___parser_nodes___AGgMethid___n_gg__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3172,7 +5962,7 @@ void parser___parser_nodes___AGgMethid___n_gg__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_nodes.nit:697 */
+  /* parser/parser_nodes.nit:948 */
   ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -3184,23 +5974,43 @@ val_t parser___parser_nodes___ABraMethid___n_obra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 701;
+  fra.me.line = 952;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraMethid___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:701 */
+  /* parser/parser_nodes.nit:952 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 701);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 952);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraMethid___n_obra__eq[] = "parser_nodes::ABraMethid::n_obra=";
+void parser___parser_nodes___ABraMethid___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 952;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraMethid___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:952 */
+  ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABraMethid___n_cbra[] = "parser_nodes::ABraMethid::n_cbra";
 val_t parser___parser_nodes___ABraMethid___n_cbra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3208,23 +6018,43 @@ val_t parser___parser_nodes___ABraMethid___n_cbra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 702;
+  fra.me.line = 953;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraMethid___n_cbra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:702 */
+  /* parser/parser_nodes.nit:953 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 702);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 953);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraMethid___n_cbra__eq[] = "parser_nodes::ABraMethid::n_cbra=";
+void parser___parser_nodes___ABraMethid___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 953;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraMethid___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:953 */
+  ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStarshipMethid___n_starship[] = "parser_nodes::AStarshipMethid::n_starship";
 val_t parser___parser_nodes___AStarshipMethid___n_starship(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3232,23 +6062,43 @@ val_t parser___parser_nodes___AStarshipMethid___n_starship(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 706;
+  fra.me.line = 957;
   fra.me.meth = LOCATE_parser___parser_nodes___AStarshipMethid___n_starship;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:706 */
+  /* parser/parser_nodes.nit:957 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser___parser_nodes, 706);
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser___parser_nodes, 957);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStarshipMethid___n_starship__eq[] = "parser_nodes::AStarshipMethid::n_starship=";
+void parser___parser_nodes___AStarshipMethid___n_starship__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 957;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStarshipMethid___n_starship__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:957 */
+  ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssignMethid___n_id[] = "parser_nodes::AAssignMethid::n_id";
 val_t parser___parser_nodes___AAssignMethid___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3256,23 +6106,43 @@ val_t parser___parser_nodes___AAssignMethid___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 710;
+  fra.me.line = 961;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssignMethid___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:710 */
+  /* parser/parser_nodes.nit:961 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 710);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 961);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssignMethid___n_id__eq[] = "parser_nodes::AAssignMethid::n_id=";
+void parser___parser_nodes___AAssignMethid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 961;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssignMethid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:961 */
+  ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssignMethid___n_assign[] = "parser_nodes::AAssignMethid::n_assign";
 val_t parser___parser_nodes___AAssignMethid___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3280,23 +6150,43 @@ val_t parser___parser_nodes___AAssignMethid___n_assign(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 711;
+  fra.me.line = 962;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssignMethid___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:711 */
+  /* parser/parser_nodes.nit:962 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_nodes, 711);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_nodes, 962);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssignMethid___n_assign__eq[] = "parser_nodes::AAssignMethid::n_assign=";
+void parser___parser_nodes___AAssignMethid___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 962;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssignMethid___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:962 */
+  ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABraassignMethid___n_obra[] = "parser_nodes::ABraassignMethid::n_obra";
 val_t parser___parser_nodes___ABraassignMethid___n_obra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3304,23 +6194,43 @@ val_t parser___parser_nodes___ABraassignMethid___n_obra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 715;
+  fra.me.line = 966;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraassignMethid___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:715 */
+  /* parser/parser_nodes.nit:966 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 715);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 966);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraassignMethid___n_obra__eq[] = "parser_nodes::ABraassignMethid::n_obra=";
+void parser___parser_nodes___ABraassignMethid___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 966;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraassignMethid___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:966 */
+  ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABraassignMethid___n_cbra[] = "parser_nodes::ABraassignMethid::n_cbra";
 val_t parser___parser_nodes___ABraassignMethid___n_cbra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3328,23 +6238,43 @@ val_t parser___parser_nodes___ABraassignMethid___n_cbra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 716;
+  fra.me.line = 967;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraassignMethid___n_cbra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:716 */
+  /* parser/parser_nodes.nit:967 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 716);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 967);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraassignMethid___n_cbra__eq[] = "parser_nodes::ABraassignMethid::n_cbra=";
+void parser___parser_nodes___ABraassignMethid___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 967;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraassignMethid___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:967 */
+  ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABraassignMethid___n_assign[] = "parser_nodes::ABraassignMethid::n_assign";
 val_t parser___parser_nodes___ABraassignMethid___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3352,41 +6282,81 @@ val_t parser___parser_nodes___ABraassignMethid___n_assign(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 717;
+  fra.me.line = 968;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraassignMethid___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:717 */
+  /* parser/parser_nodes.nit:968 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_nodes, 717);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_nodes, 968);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraassignMethid___n_assign__eq[] = "parser_nodes::ABraassignMethid::n_assign=";
+void parser___parser_nodes___ABraassignMethid___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 968;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraassignMethid___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:968 */
+  ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASignature___n_opar[] = "parser_nodes::ASignature::n_opar";
 val_t parser___parser_nodes___ASignature___n_opar(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 721;
+  fra.me.line = 974;
   fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:721 */
+  /* parser/parser_nodes.nit:974 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASignature___n_opar__eq[] = "parser_nodes::ASignature::n_opar=";
+void parser___parser_nodes___ASignature___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 974;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:974 */
+  ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASignature___n_params[] = "parser_nodes::ASignature::n_params";
 val_t parser___parser_nodes___ASignature___n_params(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3394,18 +6364,18 @@ val_t parser___parser_nodes___ASignature___n_params(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 722;
+  fra.me.line = 975;
   fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:722 */
+  /* parser/parser_nodes.nit:975 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_nodes, 722);
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_nodes, 975);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3417,36 +6387,76 @@ val_t parser___parser_nodes___ASignature___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 723;
+  fra.me.line = 976;
   fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:723 */
+  /* parser/parser_nodes.nit:976 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASignature___n_cpar__eq[] = "parser_nodes::ASignature::n_cpar=";
+void parser___parser_nodes___ASignature___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 976;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:976 */
+  ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASignature___n_type[] = "parser_nodes::ASignature::n_type";
 val_t parser___parser_nodes___ASignature___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 724;
+  fra.me.line = 977;
   fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:724 */
+  /* parser/parser_nodes.nit:977 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASignature___n_type__eq[] = "parser_nodes::ASignature::n_type=";
+void parser___parser_nodes___ASignature___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 977;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:977 */
+  ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASignature___n_closure_decls[] = "parser_nodes::ASignature::n_closure_decls";
 val_t parser___parser_nodes___ASignature___n_closure_decls(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3454,18 +6464,18 @@ val_t parser___parser_nodes___ASignature___n_closure_decls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 725;
+  fra.me.line = 978;
   fra.me.meth = LOCATE_parser___parser_nodes___ASignature___n_closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:725 */
+  /* parser/parser_nodes.nit:978 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_nodes, 725);
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_nodes, 978);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3478,77 +6488,157 @@ val_t parser___parser_nodes___AParam___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 729;
+  fra.me.line = 984;
   fra.me.meth = LOCATE_parser___parser_nodes___AParam___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:729 */
+  /* parser/parser_nodes.nit:984 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 729);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 984);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParam___n_id__eq[] = "parser_nodes::AParam::n_id=";
+void parser___parser_nodes___AParam___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 984;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParam___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:984 */
+  ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AParam___n_type[] = "parser_nodes::AParam::n_type";
 val_t parser___parser_nodes___AParam___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 730;
+  fra.me.line = 985;
   fra.me.meth = LOCATE_parser___parser_nodes___AParam___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:730 */
+  /* parser/parser_nodes.nit:985 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParam___n_type__eq[] = "parser_nodes::AParam::n_type=";
+void parser___parser_nodes___AParam___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 985;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParam___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:985 */
+  ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AParam___n_dotdotdot[] = "parser_nodes::AParam::n_dotdotdot";
 val_t parser___parser_nodes___AParam___n_dotdotdot(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 731;
+  fra.me.line = 986;
   fra.me.meth = LOCATE_parser___parser_nodes___AParam___n_dotdotdot;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:731 */
+  /* parser/parser_nodes.nit:986 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParam___n_dotdotdot__eq[] = "parser_nodes::AParam::n_dotdotdot=";
+void parser___parser_nodes___AParam___n_dotdotdot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 986;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParam___n_dotdotdot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:986 */
+  ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDecl___n_kwbreak[] = "parser_nodes::AClosureDecl::n_kwbreak";
 val_t parser___parser_nodes___AClosureDecl___n_kwbreak(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 735;
+  fra.me.line = 991;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_kwbreak;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:735 */
+  /* parser/parser_nodes.nit:991 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDecl___n_kwbreak__eq[] = "parser_nodes::AClosureDecl::n_kwbreak=";
+void parser___parser_nodes___AClosureDecl___n_kwbreak__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 991;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_kwbreak__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:991 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDecl___n_bang[] = "parser_nodes::AClosureDecl::n_bang";
 val_t parser___parser_nodes___AClosureDecl___n_bang(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3556,22 +6646,42 @@ val_t parser___parser_nodes___AClosureDecl___n_bang(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 736;
+  fra.me.line = 992;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_bang;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:736 */
+  /* parser/parser_nodes.nit:992 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_nodes, 736);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_nodes, 992);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AClosureDecl___n_bang__eq[] = "parser_nodes::AClosureDecl::n_bang=";
+void parser___parser_nodes___AClosureDecl___n_bang__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 992;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_bang__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:992 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AClosureDecl___n_id[] = "parser_nodes::AClosureDecl::n_id";
 val_t parser___parser_nodes___AClosureDecl___n_id(val_t p0){
@@ -3580,23 +6690,43 @@ val_t parser___parser_nodes___AClosureDecl___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 737;
+  fra.me.line = 993;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:737 */
+  /* parser/parser_nodes.nit:993 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 737);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 993);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDecl___n_id__eq[] = "parser_nodes::AClosureDecl::n_id=";
+void parser___parser_nodes___AClosureDecl___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 993;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:993 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDecl___n_signature[] = "parser_nodes::AClosureDecl::n_signature";
 val_t parser___parser_nodes___AClosureDecl___n_signature(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3604,59 +6734,119 @@ val_t parser___parser_nodes___AClosureDecl___n_signature(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 738;
+  fra.me.line = 994;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:738 */
+  /* parser/parser_nodes.nit:994 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser___parser_nodes, 738);
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser___parser_nodes, 994);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDecl___n_signature__eq[] = "parser_nodes::AClosureDecl::n_signature=";
+void parser___parser_nodes___AClosureDecl___n_signature__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 994;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:994 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDecl___n_expr[] = "parser_nodes::AClosureDecl::n_expr";
 val_t parser___parser_nodes___AClosureDecl___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 739;
+  fra.me.line = 995;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:739 */
+  /* parser/parser_nodes.nit:995 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDecl___n_expr__eq[] = "parser_nodes::AClosureDecl::n_expr=";
+void parser___parser_nodes___AClosureDecl___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 995;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDecl___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:995 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AType___n_kwnullable[] = "parser_nodes::AType::n_kwnullable";
 val_t parser___parser_nodes___AType___n_kwnullable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 743;
+  fra.me.line = 1001;
   fra.me.meth = LOCATE_parser___parser_nodes___AType___n_kwnullable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:743 */
+  /* parser/parser_nodes.nit:1001 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AType___n_kwnullable__eq[] = "parser_nodes::AType::n_kwnullable=";
+void parser___parser_nodes___AType___n_kwnullable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1001;
+  fra.me.meth = LOCATE_parser___parser_nodes___AType___n_kwnullable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1001 */
+  ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AType___n_id[] = "parser_nodes::AType::n_id";
 val_t parser___parser_nodes___AType___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3664,23 +6854,43 @@ val_t parser___parser_nodes___AType___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 744;
+  fra.me.line = 1003;
   fra.me.meth = LOCATE_parser___parser_nodes___AType___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:744 */
+  /* parser/parser_nodes.nit:1003 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 744);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1003);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AType___n_id__eq[] = "parser_nodes::AType::n_id=";
+void parser___parser_nodes___AType___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1003;
+  fra.me.meth = LOCATE_parser___parser_nodes___AType___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1003 */
+  ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AType___n_types[] = "parser_nodes::AType::n_types";
 val_t parser___parser_nodes___AType___n_types(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3688,18 +6898,18 @@ val_t parser___parser_nodes___AType___n_types(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 745;
+  fra.me.line = 1006;
   fra.me.meth = LOCATE_parser___parser_nodes___AType___n_types;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:745 */
+  /* parser/parser_nodes.nit:1006 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_nodes, 745);
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_nodes, 1006);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3712,23 +6922,43 @@ val_t parser___parser_nodes___ALabel___n_kwlabel(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 749;
+  fra.me.line = 1013;
   fra.me.meth = LOCATE_parser___parser_nodes___ALabel___n_kwlabel;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:749 */
+  /* parser/parser_nodes.nit:1013 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser___parser_nodes, 749);
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser___parser_nodes, 1013);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALabel___n_kwlabel__eq[] = "parser_nodes::ALabel::n_kwlabel=";
+void parser___parser_nodes___ALabel___n_kwlabel__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1013;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALabel___n_kwlabel__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1013 */
+  ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ALabel___n_id[] = "parser_nodes::ALabel::n_id";
 val_t parser___parser_nodes___ALabel___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3736,23 +6966,43 @@ val_t parser___parser_nodes___ALabel___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 750;
+  fra.me.line = 1014;
   fra.me.meth = LOCATE_parser___parser_nodes___ALabel___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:750 */
+  /* parser/parser_nodes.nit:1014 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 750);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1014);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALabel___n_id__eq[] = "parser_nodes::ALabel::n_id=";
+void parser___parser_nodes___ALabel___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1014;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALabel___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1014 */
+  ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABlockExpr___n_expr[] = "parser_nodes::ABlockExpr::n_expr";
 val_t parser___parser_nodes___ABlockExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3760,18 +7010,18 @@ val_t parser___parser_nodes___ABlockExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 755;
+  fra.me.line = 1027;
   fra.me.meth = LOCATE_parser___parser_nodes___ABlockExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:755 */
+  /* parser/parser_nodes.nit:1027 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 755);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1027);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3783,18 +7033,38 @@ val_t parser___parser_nodes___ABlockExpr___n_kwend(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 756;
+  fra.me.line = 1028;
   fra.me.meth = LOCATE_parser___parser_nodes___ABlockExpr___n_kwend;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:756 */
+  /* parser/parser_nodes.nit:1028 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABlockExpr___n_kwend__eq[] = "parser_nodes::ABlockExpr::n_kwend=";
+void parser___parser_nodes___ABlockExpr___n_kwend__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1028;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABlockExpr___n_kwend__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1028 */
+  ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_kwvar[] = "parser_nodes::AVardeclExpr::n_kwvar";
 val_t parser___parser_nodes___AVardeclExpr___n_kwvar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3802,23 +7072,43 @@ val_t parser___parser_nodes___AVardeclExpr___n_kwvar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 760;
+  fra.me.line = 1034;
   fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_kwvar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:760 */
+  /* parser/parser_nodes.nit:1034 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_nodes, 760);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_nodes, 1034);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_kwvar__eq[] = "parser_nodes::AVardeclExpr::n_kwvar=";
+void parser___parser_nodes___AVardeclExpr___n_kwvar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1034;
+  fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_kwvar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1034 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_id[] = "parser_nodes::AVardeclExpr::n_id";
 val_t parser___parser_nodes___AVardeclExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3826,130 +7116,270 @@ val_t parser___parser_nodes___AVardeclExpr___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 761;
+  fra.me.line = 1035;
   fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:761 */
+  /* parser/parser_nodes.nit:1035 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 761);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1035);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_id__eq[] = "parser_nodes::AVardeclExpr::n_id=";
+void parser___parser_nodes___AVardeclExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1035;
+  fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1035 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_type[] = "parser_nodes::AVardeclExpr::n_type";
 val_t parser___parser_nodes___AVardeclExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 762;
+  fra.me.line = 1036;
   fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:762 */
+  /* parser/parser_nodes.nit:1036 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_type__eq[] = "parser_nodes::AVardeclExpr::n_type=";
+void parser___parser_nodes___AVardeclExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1036;
+  fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1036 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_assign[] = "parser_nodes::AVardeclExpr::n_assign";
 val_t parser___parser_nodes___AVardeclExpr___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 763;
+  fra.me.line = 1037;
   fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:763 */
+  /* parser/parser_nodes.nit:1037 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_assign__eq[] = "parser_nodes::AVardeclExpr::n_assign=";
+void parser___parser_nodes___AVardeclExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1037;
+  fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1037 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_expr[] = "parser_nodes::AVardeclExpr::n_expr";
 val_t parser___parser_nodes___AVardeclExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 764;
+  fra.me.line = 1039;
   fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:764 */
+  /* parser/parser_nodes.nit:1039 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AVardeclExpr___n_expr__eq[] = "parser_nodes::AVardeclExpr::n_expr=";
+void parser___parser_nodes___AVardeclExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1039;
+  fra.me.meth = LOCATE_parser___parser_nodes___AVardeclExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1039 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AReturnExpr___n_kwreturn[] = "parser_nodes::AReturnExpr::n_kwreturn";
 val_t parser___parser_nodes___AReturnExpr___n_kwreturn(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 768;
+  fra.me.line = 1046;
   fra.me.meth = LOCATE_parser___parser_nodes___AReturnExpr___n_kwreturn;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:768 */
+  /* parser/parser_nodes.nit:1046 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AReturnExpr___n_kwreturn__eq[] = "parser_nodes::AReturnExpr::n_kwreturn=";
+void parser___parser_nodes___AReturnExpr___n_kwreturn__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1046;
+  fra.me.meth = LOCATE_parser___parser_nodes___AReturnExpr___n_kwreturn__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1046 */
+  ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AReturnExpr___n_expr[] = "parser_nodes::AReturnExpr::n_expr";
 val_t parser___parser_nodes___AReturnExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 769;
+  fra.me.line = 1047;
   fra.me.meth = LOCATE_parser___parser_nodes___AReturnExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:769 */
+  /* parser/parser_nodes.nit:1047 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AReturnExpr___n_expr__eq[] = "parser_nodes::AReturnExpr::n_expr=";
+void parser___parser_nodes___AReturnExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1047;
+  fra.me.meth = LOCATE_parser___parser_nodes___AReturnExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1047 */
+  ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ALabelable___n_label[] = "parser_nodes::ALabelable::n_label";
 val_t parser___parser_nodes___ALabelable___n_label(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 773;
+  fra.me.line = 1053;
   fra.me.meth = LOCATE_parser___parser_nodes___ALabelable___n_label;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:773 */
+  /* parser/parser_nodes.nit:1053 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___ALabelable___n_label__eq[] = "parser_nodes::ALabelable::n_label=";
+void parser___parser_nodes___ALabelable___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1053;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALabelable___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1053 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___ABreakExpr___n_kwbreak[] = "parser_nodes::ABreakExpr::n_kwbreak";
 val_t parser___parser_nodes___ABreakExpr___n_kwbreak(val_t p0){
@@ -3958,41 +7388,81 @@ val_t parser___parser_nodes___ABreakExpr___n_kwbreak(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 778;
+  fra.me.line = 1060;
   fra.me.meth = LOCATE_parser___parser_nodes___ABreakExpr___n_kwbreak;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:778 */
+  /* parser/parser_nodes.nit:1060 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_nodes, 778);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_nodes, 1060);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABreakExpr___n_kwbreak__eq[] = "parser_nodes::ABreakExpr::n_kwbreak=";
+void parser___parser_nodes___ABreakExpr___n_kwbreak__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1060;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABreakExpr___n_kwbreak__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1060 */
+  ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABreakExpr___n_expr[] = "parser_nodes::ABreakExpr::n_expr";
 val_t parser___parser_nodes___ABreakExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 779;
+  fra.me.line = 1061;
   fra.me.meth = LOCATE_parser___parser_nodes___ABreakExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:779 */
+  /* parser/parser_nodes.nit:1061 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABreakExpr___n_expr__eq[] = "parser_nodes::ABreakExpr::n_expr=";
+void parser___parser_nodes___ABreakExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1061;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABreakExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1061 */
+  ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAbortExpr___n_kwabort[] = "parser_nodes::AAbortExpr::n_kwabort";
 val_t parser___parser_nodes___AAbortExpr___n_kwabort(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4000,59 +7470,119 @@ val_t parser___parser_nodes___AAbortExpr___n_kwabort(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 783;
+  fra.me.line = 1067;
   fra.me.meth = LOCATE_parser___parser_nodes___AAbortExpr___n_kwabort;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:783 */
+  /* parser/parser_nodes.nit:1067 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser___parser_nodes, 783);
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser___parser_nodes, 1067);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAbortExpr___n_kwabort__eq[] = "parser_nodes::AAbortExpr::n_kwabort=";
+void parser___parser_nodes___AAbortExpr___n_kwabort__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1067;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAbortExpr___n_kwabort__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1067 */
+  ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AContinueExpr___n_kwcontinue[] = "parser_nodes::AContinueExpr::n_kwcontinue";
 val_t parser___parser_nodes___AContinueExpr___n_kwcontinue(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 788;
+  fra.me.line = 1074;
   fra.me.meth = LOCATE_parser___parser_nodes___AContinueExpr___n_kwcontinue;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:788 */
+  /* parser/parser_nodes.nit:1074 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AContinueExpr___n_kwcontinue__eq[] = "parser_nodes::AContinueExpr::n_kwcontinue=";
+void parser___parser_nodes___AContinueExpr___n_kwcontinue__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1074;
+  fra.me.meth = LOCATE_parser___parser_nodes___AContinueExpr___n_kwcontinue__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1074 */
+  ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AContinueExpr___n_expr[] = "parser_nodes::AContinueExpr::n_expr";
 val_t parser___parser_nodes___AContinueExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 789;
+  fra.me.line = 1075;
   fra.me.meth = LOCATE_parser___parser_nodes___AContinueExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:789 */
+  /* parser/parser_nodes.nit:1075 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AContinueExpr___n_expr__eq[] = "parser_nodes::AContinueExpr::n_expr=";
+void parser___parser_nodes___AContinueExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1075;
+  fra.me.meth = LOCATE_parser___parser_nodes___AContinueExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1075 */
+  ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ADoExpr___n_kwdo[] = "parser_nodes::ADoExpr::n_kwdo";
 val_t parser___parser_nodes___ADoExpr___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4060,41 +7590,81 @@ val_t parser___parser_nodes___ADoExpr___n_kwdo(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 794;
+  fra.me.line = 1082;
   fra.me.meth = LOCATE_parser___parser_nodes___ADoExpr___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:794 */
+  /* parser/parser_nodes.nit:1082 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_nodes, 794);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_nodes, 1082);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADoExpr___n_kwdo__eq[] = "parser_nodes::ADoExpr::n_kwdo=";
+void parser___parser_nodes___ADoExpr___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1082;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADoExpr___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1082 */
+  ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ADoExpr___n_block[] = "parser_nodes::ADoExpr::n_block";
 val_t parser___parser_nodes___ADoExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 795;
+  fra.me.line = 1083;
   fra.me.meth = LOCATE_parser___parser_nodes___ADoExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:795 */
+  /* parser/parser_nodes.nit:1083 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADoExpr___n_block__eq[] = "parser_nodes::ADoExpr::n_block=";
+void parser___parser_nodes___ADoExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1083;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADoExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1083 */
+  ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfExpr___n_kwif[] = "parser_nodes::AIfExpr::n_kwif";
 val_t parser___parser_nodes___AIfExpr___n_kwif(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4102,23 +7672,43 @@ val_t parser___parser_nodes___AIfExpr___n_kwif(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 799;
+  fra.me.line = 1089;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_kwif;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:799 */
+  /* parser/parser_nodes.nit:1089 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_nodes, 799);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_nodes, 1089);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfExpr___n_kwif__eq[] = "parser_nodes::AIfExpr::n_kwif=";
+void parser___parser_nodes___AIfExpr___n_kwif__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1089;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_kwif__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1089 */
+  ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfExpr___n_expr[] = "parser_nodes::AIfExpr::n_expr";
 val_t parser___parser_nodes___AIfExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4126,59 +7716,119 @@ val_t parser___parser_nodes___AIfExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 800;
+  fra.me.line = 1090;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:800 */
+  /* parser/parser_nodes.nit:1090 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 800);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1090);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfExpr___n_expr__eq[] = "parser_nodes::AIfExpr::n_expr=";
+void parser___parser_nodes___AIfExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1090;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1090 */
+  ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfExpr___n_then[] = "parser_nodes::AIfExpr::n_then";
 val_t parser___parser_nodes___AIfExpr___n_then(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 801;
+  fra.me.line = 1091;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_then;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:801 */
+  /* parser/parser_nodes.nit:1091 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfExpr___n_then__eq[] = "parser_nodes::AIfExpr::n_then=";
+void parser___parser_nodes___AIfExpr___n_then__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1091;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_then__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1091 */
+  ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfExpr___n_else[] = "parser_nodes::AIfExpr::n_else";
 val_t parser___parser_nodes___AIfExpr___n_else(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 802;
+  fra.me.line = 1092;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_else;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:802 */
+  /* parser/parser_nodes.nit:1092 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfExpr___n_else__eq[] = "parser_nodes::AIfExpr::n_else=";
+void parser___parser_nodes___AIfExpr___n_else__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1092;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfExpr___n_else__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1092 */
+  ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_kwif[] = "parser_nodes::AIfexprExpr::n_kwif";
 val_t parser___parser_nodes___AIfexprExpr___n_kwif(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4186,23 +7836,43 @@ val_t parser___parser_nodes___AIfexprExpr___n_kwif(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 806;
+  fra.me.line = 1098;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_kwif;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:806 */
+  /* parser/parser_nodes.nit:1098 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_nodes, 806);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_nodes, 1098);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_kwif__eq[] = "parser_nodes::AIfexprExpr::n_kwif=";
+void parser___parser_nodes___AIfexprExpr___n_kwif__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1098;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_kwif__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1098 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_expr[] = "parser_nodes::AIfexprExpr::n_expr";
 val_t parser___parser_nodes___AIfexprExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4210,23 +7880,43 @@ val_t parser___parser_nodes___AIfexprExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 807;
+  fra.me.line = 1099;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:807 */
+  /* parser/parser_nodes.nit:1099 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 807);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1099);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_expr__eq[] = "parser_nodes::AIfexprExpr::n_expr=";
+void parser___parser_nodes___AIfexprExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1099;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1099 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_kwthen[] = "parser_nodes::AIfexprExpr::n_kwthen";
 val_t parser___parser_nodes___AIfexprExpr___n_kwthen(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4234,23 +7924,43 @@ val_t parser___parser_nodes___AIfexprExpr___n_kwthen(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 808;
+  fra.me.line = 1100;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_kwthen;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:808 */
+  /* parser/parser_nodes.nit:1100 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser___parser_nodes, 808);
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser___parser_nodes, 1100);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_kwthen__eq[] = "parser_nodes::AIfexprExpr::n_kwthen=";
+void parser___parser_nodes___AIfexprExpr___n_kwthen__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1100;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_kwthen__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1100 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_then[] = "parser_nodes::AIfexprExpr::n_then";
 val_t parser___parser_nodes___AIfexprExpr___n_then(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4258,23 +7968,43 @@ val_t parser___parser_nodes___AIfexprExpr___n_then(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 809;
+  fra.me.line = 1101;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_then;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:809 */
+  /* parser/parser_nodes.nit:1101 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser___parser_nodes, 809);
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser___parser_nodes, 1101);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_then__eq[] = "parser_nodes::AIfexprExpr::n_then=";
+void parser___parser_nodes___AIfexprExpr___n_then__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1101;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_then__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1101 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_kwelse[] = "parser_nodes::AIfexprExpr::n_kwelse";
 val_t parser___parser_nodes___AIfexprExpr___n_kwelse(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4282,23 +8012,43 @@ val_t parser___parser_nodes___AIfexprExpr___n_kwelse(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 810;
+  fra.me.line = 1102;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_kwelse;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:810 */
+  /* parser/parser_nodes.nit:1102 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser___parser_nodes, 810);
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser___parser_nodes, 1102);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_kwelse__eq[] = "parser_nodes::AIfexprExpr::n_kwelse=";
+void parser___parser_nodes___AIfexprExpr___n_kwelse__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1102;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_kwelse__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1102 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_else[] = "parser_nodes::AIfexprExpr::n_else";
 val_t parser___parser_nodes___AIfexprExpr___n_else(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4306,22 +8056,42 @@ val_t parser___parser_nodes___AIfexprExpr___n_else(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 811;
+  fra.me.line = 1103;
   fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_else;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:811 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser___parser_nodes, 811);
-  }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:1103 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser___parser_nodes, 1103);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AIfexprExpr___n_else__eq[] = "parser_nodes::AIfexprExpr::n_else=";
+void parser___parser_nodes___AIfexprExpr___n_else__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1103;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIfexprExpr___n_else__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1103 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AWhileExpr___n_kwwhile[] = "parser_nodes::AWhileExpr::n_kwwhile";
 val_t parser___parser_nodes___AWhileExpr___n_kwwhile(val_t p0){
@@ -4330,23 +8100,43 @@ val_t parser___parser_nodes___AWhileExpr___n_kwwhile(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 816;
+  fra.me.line = 1110;
   fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_kwwhile;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:816 */
+  /* parser/parser_nodes.nit:1110 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser___parser_nodes, 816);
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser___parser_nodes, 1110);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AWhileExpr___n_kwwhile__eq[] = "parser_nodes::AWhileExpr::n_kwwhile=";
+void parser___parser_nodes___AWhileExpr___n_kwwhile__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1110;
+  fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_kwwhile__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1110 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AWhileExpr___n_expr[] = "parser_nodes::AWhileExpr::n_expr";
 val_t parser___parser_nodes___AWhileExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4354,23 +8144,43 @@ val_t parser___parser_nodes___AWhileExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 817;
+  fra.me.line = 1111;
   fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:817 */
+  /* parser/parser_nodes.nit:1111 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 817);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1111);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AWhileExpr___n_expr__eq[] = "parser_nodes::AWhileExpr::n_expr=";
+void parser___parser_nodes___AWhileExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1111;
+  fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1111 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AWhileExpr___n_kwdo[] = "parser_nodes::AWhileExpr::n_kwdo";
 val_t parser___parser_nodes___AWhileExpr___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4378,41 +8188,81 @@ val_t parser___parser_nodes___AWhileExpr___n_kwdo(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 818;
+  fra.me.line = 1112;
   fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:818 */
+  /* parser/parser_nodes.nit:1112 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_nodes, 818);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_nodes, 1112);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AWhileExpr___n_kwdo__eq[] = "parser_nodes::AWhileExpr::n_kwdo=";
+void parser___parser_nodes___AWhileExpr___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1112;
+  fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1112 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AWhileExpr___n_block[] = "parser_nodes::AWhileExpr::n_block";
 val_t parser___parser_nodes___AWhileExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 819;
+  fra.me.line = 1113;
   fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:819 */
+  /* parser/parser_nodes.nit:1113 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AWhileExpr___n_block__eq[] = "parser_nodes::AWhileExpr::n_block=";
+void parser___parser_nodes___AWhileExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1113;
+  fra.me.meth = LOCATE_parser___parser_nodes___AWhileExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1113 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ALoopExpr___n_kwloop[] = "parser_nodes::ALoopExpr::n_kwloop";
 val_t parser___parser_nodes___ALoopExpr___n_kwloop(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4420,41 +8270,81 @@ val_t parser___parser_nodes___ALoopExpr___n_kwloop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 824;
+  fra.me.line = 1120;
   fra.me.meth = LOCATE_parser___parser_nodes___ALoopExpr___n_kwloop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:824 */
+  /* parser/parser_nodes.nit:1120 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser___parser_nodes, 824);
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser___parser_nodes, 1120);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALoopExpr___n_kwloop__eq[] = "parser_nodes::ALoopExpr::n_kwloop=";
+void parser___parser_nodes___ALoopExpr___n_kwloop__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1120;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALoopExpr___n_kwloop__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1120 */
+  ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ALoopExpr___n_block[] = "parser_nodes::ALoopExpr::n_block";
 val_t parser___parser_nodes___ALoopExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 825;
+  fra.me.line = 1121;
   fra.me.meth = LOCATE_parser___parser_nodes___ALoopExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:825 */
+  /* parser/parser_nodes.nit:1121 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ALoopExpr___n_block__eq[] = "parser_nodes::ALoopExpr::n_block=";
+void parser___parser_nodes___ALoopExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_parser___parser_nodes___ALoopExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1121 */
+  ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AForExpr___n_kwfor[] = "parser_nodes::AForExpr::n_kwfor";
 val_t parser___parser_nodes___AForExpr___n_kwfor(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4462,23 +8352,43 @@ val_t parser___parser_nodes___AForExpr___n_kwfor(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 830;
+  fra.me.line = 1128;
   fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_kwfor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:830 */
+  /* parser/parser_nodes.nit:1128 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser___parser_nodes, 830);
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser___parser_nodes, 1128);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AForExpr___n_kwfor__eq[] = "parser_nodes::AForExpr::n_kwfor=";
+void parser___parser_nodes___AForExpr___n_kwfor__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1128;
+  fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_kwfor__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1128 */
+  ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AForExpr___n_ids[] = "parser_nodes::AForExpr::n_ids";
 val_t parser___parser_nodes___AForExpr___n_ids(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4486,18 +8396,18 @@ val_t parser___parser_nodes___AForExpr___n_ids(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 831;
+  fra.me.line = 1129;
   fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_ids;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:831 */
+  /* parser/parser_nodes.nit:1129 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_nodes, 831);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_nodes, 1129);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -4510,23 +8420,43 @@ val_t parser___parser_nodes___AForExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 832;
+  fra.me.line = 1130;
   fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:832 */
+  /* parser/parser_nodes.nit:1130 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 832);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1130);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AForExpr___n_expr__eq[] = "parser_nodes::AForExpr::n_expr=";
+void parser___parser_nodes___AForExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1130;
+  fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1130 */
+  ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AForExpr___n_kwdo[] = "parser_nodes::AForExpr::n_kwdo";
 val_t parser___parser_nodes___AForExpr___n_kwdo(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4534,41 +8464,81 @@ val_t parser___parser_nodes___AForExpr___n_kwdo(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 833;
+  fra.me.line = 1131;
   fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:833 */
+  /* parser/parser_nodes.nit:1131 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_nodes, 833);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_nodes, 1131);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AForExpr___n_kwdo__eq[] = "parser_nodes::AForExpr::n_kwdo=";
+void parser___parser_nodes___AForExpr___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1131;
+  fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1131 */
+  ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AForExpr___n_block[] = "parser_nodes::AForExpr::n_block";
 val_t parser___parser_nodes___AForExpr___n_block(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 834;
+  fra.me.line = 1132;
   fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_block;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:834 */
+  /* parser/parser_nodes.nit:1132 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AForExpr___n_block__eq[] = "parser_nodes::AForExpr::n_block=";
+void parser___parser_nodes___AForExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1132;
+  fra.me.meth = LOCATE_parser___parser_nodes___AForExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1132 */
+  ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssertExpr___n_kwassert[] = "parser_nodes::AAssertExpr::n_kwassert";
 val_t parser___parser_nodes___AAssertExpr___n_kwassert(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4576,41 +8546,81 @@ val_t parser___parser_nodes___AAssertExpr___n_kwassert(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 838;
+  fra.me.line = 1138;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_kwassert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:838 */
+  /* parser/parser_nodes.nit:1138 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser___parser_nodes, 838);
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser___parser_nodes, 1138);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssertExpr___n_kwassert__eq[] = "parser_nodes::AAssertExpr::n_kwassert=";
+void parser___parser_nodes___AAssertExpr___n_kwassert__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1138;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_kwassert__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1138 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssertExpr___n_id[] = "parser_nodes::AAssertExpr::n_id";
 val_t parser___parser_nodes___AAssertExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 839;
+  fra.me.line = 1139;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:839 */
+  /* parser/parser_nodes.nit:1139 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssertExpr___n_id__eq[] = "parser_nodes::AAssertExpr::n_id=";
+void parser___parser_nodes___AAssertExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1139;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1139 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssertExpr___n_expr[] = "parser_nodes::AAssertExpr::n_expr";
 val_t parser___parser_nodes___AAssertExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4618,41 +8628,81 @@ val_t parser___parser_nodes___AAssertExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 840;
+  fra.me.line = 1140;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:840 */
+  /* parser/parser_nodes.nit:1140 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 840);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1140);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssertExpr___n_expr__eq[] = "parser_nodes::AAssertExpr::n_expr=";
+void parser___parser_nodes___AAssertExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1140;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1140 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssertExpr___n_else[] = "parser_nodes::AAssertExpr::n_else";
 val_t parser___parser_nodes___AAssertExpr___n_else(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 841;
+  fra.me.line = 1141;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_else;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:841 */
+  /* parser/parser_nodes.nit:1141 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssertExpr___n_else__eq[] = "parser_nodes::AAssertExpr::n_else=";
+void parser___parser_nodes___AAssertExpr___n_else__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1141;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssertExpr___n_else__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1141 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAssignFormExpr___n_assign[] = "parser_nodes::AAssignFormExpr::n_assign";
 val_t parser___parser_nodes___AAssignFormExpr___n_assign(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4660,22 +8710,42 @@ val_t parser___parser_nodes___AAssignFormExpr___n_assign(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 845;
+  fra.me.line = 1147;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssignFormExpr___n_assign;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:845 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_nodes, 845);
-  }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:1147 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_nodes, 1147);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AAssignFormExpr___n_assign__eq[] = "parser_nodes::AAssignFormExpr::n_assign=";
+void parser___parser_nodes___AAssignFormExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1147;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssignFormExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1147 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AAssignFormExpr___n_value[] = "parser_nodes::AAssignFormExpr::n_value";
 val_t parser___parser_nodes___AAssignFormExpr___n_value(val_t p0){
@@ -4684,23 +8754,43 @@ val_t parser___parser_nodes___AAssignFormExpr___n_value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 846;
+  fra.me.line = 1148;
   fra.me.meth = LOCATE_parser___parser_nodes___AAssignFormExpr___n_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:846 */
+  /* parser/parser_nodes.nit:1148 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_nodes, 846);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_nodes, 1148);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAssignFormExpr___n_value__eq[] = "parser_nodes::AAssignFormExpr::n_value=";
+void parser___parser_nodes___AAssignFormExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1148;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAssignFormExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1148 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AReassignFormExpr___n_assign_op[] = "parser_nodes::AReassignFormExpr::n_assign_op";
 val_t parser___parser_nodes___AReassignFormExpr___n_assign_op(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4708,23 +8798,43 @@ val_t parser___parser_nodes___AReassignFormExpr___n_assign_op(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 850;
+  fra.me.line = 1154;
   fra.me.meth = LOCATE_parser___parser_nodes___AReassignFormExpr___n_assign_op;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:850 */
+  /* parser/parser_nodes.nit:1154 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_nodes, 850);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_nodes, 1154);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AReassignFormExpr___n_assign_op__eq[] = "parser_nodes::AReassignFormExpr::n_assign_op=";
+void parser___parser_nodes___AReassignFormExpr___n_assign_op__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1154;
+  fra.me.meth = LOCATE_parser___parser_nodes___AReassignFormExpr___n_assign_op__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1154 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AReassignFormExpr___n_value[] = "parser_nodes::AReassignFormExpr::n_value";
 val_t parser___parser_nodes___AReassignFormExpr___n_value(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4732,23 +8842,43 @@ val_t parser___parser_nodes___AReassignFormExpr___n_value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 851;
+  fra.me.line = 1155;
   fra.me.meth = LOCATE_parser___parser_nodes___AReassignFormExpr___n_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:851 */
+  /* parser/parser_nodes.nit:1155 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_nodes, 851);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_nodes, 1155);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AReassignFormExpr___n_value__eq[] = "parser_nodes::AReassignFormExpr::n_value=";
+void parser___parser_nodes___AReassignFormExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1155;
+  fra.me.meth = LOCATE_parser___parser_nodes___AReassignFormExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1155 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOnceExpr___n_kwonce[] = "parser_nodes::AOnceExpr::n_kwonce";
 val_t parser___parser_nodes___AOnceExpr___n_kwonce(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4756,23 +8886,43 @@ val_t parser___parser_nodes___AOnceExpr___n_kwonce(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 855;
+  fra.me.line = 1161;
   fra.me.meth = LOCATE_parser___parser_nodes___AOnceExpr___n_kwonce;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:855 */
+  /* parser/parser_nodes.nit:1161 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser___parser_nodes, 855);
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser___parser_nodes, 1161);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOnceExpr___n_kwonce__eq[] = "parser_nodes::AOnceExpr::n_kwonce=";
+void parser___parser_nodes___AOnceExpr___n_kwonce__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1161;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOnceExpr___n_kwonce__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1161 */
+  ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASendExpr___n_expr[] = "parser_nodes::ASendExpr::n_expr";
 val_t parser___parser_nodes___ASendExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4780,23 +8930,43 @@ val_t parser___parser_nodes___ASendExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 859;
+  fra.me.line = 1168;
   fra.me.meth = LOCATE_parser___parser_nodes___ASendExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:859 */
+  /* parser/parser_nodes.nit:1168 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 859);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1168);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASendExpr___n_expr__eq[] = "parser_nodes::ASendExpr::n_expr=";
+void parser___parser_nodes___ASendExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1168;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASendExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1168 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASendExpr___n_closure_defs[] = "parser_nodes::ASendExpr::n_closure_defs";
 val_t parser___parser_nodes___ASendExpr___n_closure_defs(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4804,18 +8974,18 @@ val_t parser___parser_nodes___ASendExpr___n_closure_defs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 860;
+  fra.me.line = 1170;
   fra.me.meth = LOCATE_parser___parser_nodes___ASendExpr___n_closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:860 */
+  /* parser/parser_nodes.nit:1170 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_nodes, 860);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_nodes, 1170);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -4828,23 +8998,43 @@ val_t parser___parser_nodes___ABinopExpr___n_expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 864;
+  fra.me.line = 1176;
   fra.me.meth = LOCATE_parser___parser_nodes___ABinopExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:864 */
+  /* parser/parser_nodes.nit:1176 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 864);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1176);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABinopExpr___n_expr2__eq[] = "parser_nodes::ABinopExpr::n_expr2=";
+void parser___parser_nodes___ABinopExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1176;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABinopExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1176 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOrExpr___n_expr[] = "parser_nodes::AOrExpr::n_expr";
 val_t parser___parser_nodes___AOrExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4852,23 +9042,43 @@ val_t parser___parser_nodes___AOrExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 871;
+  fra.me.line = 1189;
   fra.me.meth = LOCATE_parser___parser_nodes___AOrExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:871 */
+  /* parser/parser_nodes.nit:1189 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 871);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1189);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOrExpr___n_expr__eq[] = "parser_nodes::AOrExpr::n_expr=";
+void parser___parser_nodes___AOrExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1189;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOrExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1189 */
+  ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOrExpr___n_expr2[] = "parser_nodes::AOrExpr::n_expr2";
 val_t parser___parser_nodes___AOrExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4876,23 +9086,43 @@ val_t parser___parser_nodes___AOrExpr___n_expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 872;
+  fra.me.line = 1190;
   fra.me.meth = LOCATE_parser___parser_nodes___AOrExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:872 */
+  /* parser/parser_nodes.nit:1190 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 872);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1190);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOrExpr___n_expr2__eq[] = "parser_nodes::AOrExpr::n_expr2=";
+void parser___parser_nodes___AOrExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1190;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOrExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1190 */
+  ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAndExpr___n_expr[] = "parser_nodes::AAndExpr::n_expr";
 val_t parser___parser_nodes___AAndExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4900,23 +9130,43 @@ val_t parser___parser_nodes___AAndExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 876;
+  fra.me.line = 1196;
   fra.me.meth = LOCATE_parser___parser_nodes___AAndExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:876 */
+  /* parser/parser_nodes.nit:1196 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 876);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1196);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAndExpr___n_expr__eq[] = "parser_nodes::AAndExpr::n_expr=";
+void parser___parser_nodes___AAndExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1196;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAndExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1196 */
+  ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAndExpr___n_expr2[] = "parser_nodes::AAndExpr::n_expr2";
 val_t parser___parser_nodes___AAndExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4924,23 +9174,43 @@ val_t parser___parser_nodes___AAndExpr___n_expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 877;
+  fra.me.line = 1197;
   fra.me.meth = LOCATE_parser___parser_nodes___AAndExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:877 */
+  /* parser/parser_nodes.nit:1197 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 877);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1197);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAndExpr___n_expr2__eq[] = "parser_nodes::AAndExpr::n_expr2=";
+void parser___parser_nodes___AAndExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1197;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAndExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1197 */
+  ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOrElseExpr___n_expr[] = "parser_nodes::AOrElseExpr::n_expr";
 val_t parser___parser_nodes___AOrElseExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4948,23 +9218,43 @@ val_t parser___parser_nodes___AOrElseExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 881;
+  fra.me.line = 1203;
   fra.me.meth = LOCATE_parser___parser_nodes___AOrElseExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:881 */
+  /* parser/parser_nodes.nit:1203 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 881);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1203);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOrElseExpr___n_expr__eq[] = "parser_nodes::AOrElseExpr::n_expr=";
+void parser___parser_nodes___AOrElseExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1203;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOrElseExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1203 */
+  ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOrElseExpr___n_expr2[] = "parser_nodes::AOrElseExpr::n_expr2";
 val_t parser___parser_nodes___AOrElseExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4972,23 +9262,43 @@ val_t parser___parser_nodes___AOrElseExpr___n_expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 882;
+  fra.me.line = 1204;
   fra.me.meth = LOCATE_parser___parser_nodes___AOrElseExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:882 */
+  /* parser/parser_nodes.nit:1204 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 882);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1204);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOrElseExpr___n_expr2__eq[] = "parser_nodes::AOrElseExpr::n_expr2=";
+void parser___parser_nodes___AOrElseExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1204;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOrElseExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1204 */
+  ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANotExpr___n_kwnot[] = "parser_nodes::ANotExpr::n_kwnot";
 val_t parser___parser_nodes___ANotExpr___n_kwnot(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4996,23 +9306,43 @@ val_t parser___parser_nodes___ANotExpr___n_kwnot(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 886;
+  fra.me.line = 1210;
   fra.me.meth = LOCATE_parser___parser_nodes___ANotExpr___n_kwnot;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:886 */
+  /* parser/parser_nodes.nit:1210 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_nodes, 886);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_nodes, 1210);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANotExpr___n_kwnot__eq[] = "parser_nodes::ANotExpr::n_kwnot=";
+void parser___parser_nodes___ANotExpr___n_kwnot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1210;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANotExpr___n_kwnot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1210 */
+  ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANotExpr___n_expr[] = "parser_nodes::ANotExpr::n_expr";
 val_t parser___parser_nodes___ANotExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5020,23 +9350,43 @@ val_t parser___parser_nodes___ANotExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 887;
+  fra.me.line = 1211;
   fra.me.meth = LOCATE_parser___parser_nodes___ANotExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:887 */
+  /* parser/parser_nodes.nit:1211 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 887);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1211);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANotExpr___n_expr__eq[] = "parser_nodes::ANotExpr::n_expr=";
+void parser___parser_nodes___ANotExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1211;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANotExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1211 */
+  ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AEeExpr___n_expr[] = "parser_nodes::AEeExpr::n_expr";
 val_t parser___parser_nodes___AEeExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5044,23 +9394,43 @@ val_t parser___parser_nodes___AEeExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 894;
+  fra.me.line = 1222;
   fra.me.meth = LOCATE_parser___parser_nodes___AEeExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:894 */
+  /* parser/parser_nodes.nit:1222 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 894);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1222);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AEeExpr___n_expr__eq[] = "parser_nodes::AEeExpr::n_expr=";
+void parser___parser_nodes___AEeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1222;
+  fra.me.meth = LOCATE_parser___parser_nodes___AEeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1222 */
+  ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AEeExpr___n_expr2[] = "parser_nodes::AEeExpr::n_expr2";
 val_t parser___parser_nodes___AEeExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5068,23 +9438,43 @@ val_t parser___parser_nodes___AEeExpr___n_expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 895;
+  fra.me.line = 1223;
   fra.me.meth = LOCATE_parser___parser_nodes___AEeExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:895 */
+  /* parser/parser_nodes.nit:1223 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 895);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1223);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AEeExpr___n_expr2__eq[] = "parser_nodes::AEeExpr::n_expr2=";
+void parser___parser_nodes___AEeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1223;
+  fra.me.meth = LOCATE_parser___parser_nodes___AEeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1223 */
+  ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIsaExpr___n_expr[] = "parser_nodes::AIsaExpr::n_expr";
 val_t parser___parser_nodes___AIsaExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5092,23 +9482,43 @@ val_t parser___parser_nodes___AIsaExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 920;
+  fra.me.line = 1264;
   fra.me.meth = LOCATE_parser___parser_nodes___AIsaExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:920 */
+  /* parser/parser_nodes.nit:1264 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 920);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1264);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIsaExpr___n_expr__eq[] = "parser_nodes::AIsaExpr::n_expr=";
+void parser___parser_nodes___AIsaExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1264;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIsaExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1264 */
+  ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIsaExpr___n_type[] = "parser_nodes::AIsaExpr::n_type";
 val_t parser___parser_nodes___AIsaExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5116,23 +9526,43 @@ val_t parser___parser_nodes___AIsaExpr___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 921;
+  fra.me.line = 1265;
   fra.me.meth = LOCATE_parser___parser_nodes___AIsaExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:921 */
+  /* parser/parser_nodes.nit:1265 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 921);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1265);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIsaExpr___n_type__eq[] = "parser_nodes::AIsaExpr::n_type=";
+void parser___parser_nodes___AIsaExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1265;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIsaExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1265 */
+  ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AUminusExpr___n_minus[] = "parser_nodes::AUminusExpr::n_minus";
 val_t parser___parser_nodes___AUminusExpr___n_minus(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5140,23 +9570,43 @@ val_t parser___parser_nodes___AUminusExpr___n_minus(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 943;
+  fra.me.line = 1301;
   fra.me.meth = LOCATE_parser___parser_nodes___AUminusExpr___n_minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:943 */
+  /* parser/parser_nodes.nit:1301 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_nodes, 943);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_nodes, 1301);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AUminusExpr___n_minus__eq[] = "parser_nodes::AUminusExpr::n_minus=";
+void parser___parser_nodes___AUminusExpr___n_minus__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1301;
+  fra.me.meth = LOCATE_parser___parser_nodes___AUminusExpr___n_minus__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1301 */
+  ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANewExpr___n_kwnew[] = "parser_nodes::ANewExpr::n_kwnew";
 val_t parser___parser_nodes___ANewExpr___n_kwnew(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5164,23 +9614,43 @@ val_t parser___parser_nodes___ANewExpr___n_kwnew(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 947;
+  fra.me.line = 1307;
   fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_kwnew;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:947 */
+  /* parser/parser_nodes.nit:1307 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_nodes, 947);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_nodes, 1307);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANewExpr___n_kwnew__eq[] = "parser_nodes::ANewExpr::n_kwnew=";
+void parser___parser_nodes___ANewExpr___n_kwnew__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_kwnew__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1307 */
+  ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANewExpr___n_type[] = "parser_nodes::ANewExpr::n_type";
 val_t parser___parser_nodes___ANewExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5188,41 +9658,81 @@ val_t parser___parser_nodes___ANewExpr___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 948;
+  fra.me.line = 1308;
   fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:948 */
+  /* parser/parser_nodes.nit:1308 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 948);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1308);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANewExpr___n_type__eq[] = "parser_nodes::ANewExpr::n_type=";
+void parser___parser_nodes___ANewExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1308;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1308 */
+  ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANewExpr___n_id[] = "parser_nodes::ANewExpr::n_id";
 val_t parser___parser_nodes___ANewExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 949;
+  fra.me.line = 1310;
   fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:949 */
+  /* parser/parser_nodes.nit:1310 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANewExpr___n_id__eq[] = "parser_nodes::ANewExpr::n_id=";
+void parser___parser_nodes___ANewExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1310;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1310 */
+  ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANewExpr___n_args[] = "parser_nodes::ANewExpr::n_args";
 val_t parser___parser_nodes___ANewExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5230,23 +9740,43 @@ val_t parser___parser_nodes___ANewExpr___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 950;
+  fra.me.line = 1312;
   fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:950 */
+  /* parser/parser_nodes.nit:1312 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 950);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1312);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANewExpr___n_args__eq[] = "parser_nodes::ANewExpr::n_args=";
+void parser___parser_nodes___ANewExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1312;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANewExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1312 */
+  ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrFormExpr___n_expr[] = "parser_nodes::AAttrFormExpr::n_expr";
 val_t parser___parser_nodes___AAttrFormExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5254,23 +9784,43 @@ val_t parser___parser_nodes___AAttrFormExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 954;
+  fra.me.line = 1319;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrFormExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:954 */
+  /* parser/parser_nodes.nit:1319 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 954);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1319);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrFormExpr___n_expr__eq[] = "parser_nodes::AAttrFormExpr::n_expr=";
+void parser___parser_nodes___AAttrFormExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1319;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrFormExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1319 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAttrFormExpr___n_id[] = "parser_nodes::AAttrFormExpr::n_id";
 val_t parser___parser_nodes___AAttrFormExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5278,23 +9828,43 @@ val_t parser___parser_nodes___AAttrFormExpr___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 955;
+  fra.me.line = 1322;
   fra.me.meth = LOCATE_parser___parser_nodes___AAttrFormExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:955 */
+  /* parser/parser_nodes.nit:1322 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 955);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1322);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAttrFormExpr___n_id__eq[] = "parser_nodes::AAttrFormExpr::n_id=";
+void parser___parser_nodes___AAttrFormExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1322;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAttrFormExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1322 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACallFormExpr___n_id[] = "parser_nodes::ACallFormExpr::n_id";
 val_t parser___parser_nodes___ACallFormExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5302,23 +9872,43 @@ val_t parser___parser_nodes___ACallFormExpr___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 966;
+  fra.me.line = 1341;
   fra.me.meth = LOCATE_parser___parser_nodes___ACallFormExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:966 */
+  /* parser/parser_nodes.nit:1341 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 966);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1341);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACallFormExpr___n_id__eq[] = "parser_nodes::ACallFormExpr::n_id=";
+void parser___parser_nodes___ACallFormExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1341;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACallFormExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1341 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACallFormExpr___n_args[] = "parser_nodes::ACallFormExpr::n_args";
 val_t parser___parser_nodes___ACallFormExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5326,41 +9916,81 @@ val_t parser___parser_nodes___ACallFormExpr___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 967;
+  fra.me.line = 1344;
   fra.me.meth = LOCATE_parser___parser_nodes___ACallFormExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:967 */
+  /* parser/parser_nodes.nit:1344 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 967);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1344);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACallFormExpr___n_args__eq[] = "parser_nodes::ACallFormExpr::n_args=";
+void parser___parser_nodes___ACallFormExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1344;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACallFormExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1344 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASuperExpr___n_qualified[] = "parser_nodes::ASuperExpr::n_qualified";
 val_t parser___parser_nodes___ASuperExpr___n_qualified(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 992;
+  fra.me.line = 1386;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperExpr___n_qualified;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:992 */
+  /* parser/parser_nodes.nit:1386 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASuperExpr___n_qualified__eq[] = "parser_nodes::ASuperExpr::n_qualified=";
+void parser___parser_nodes___ASuperExpr___n_qualified__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1386;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASuperExpr___n_qualified__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1386 */
+  ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASuperExpr___n_kwsuper[] = "parser_nodes::ASuperExpr::n_kwsuper";
 val_t parser___parser_nodes___ASuperExpr___n_kwsuper(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5368,23 +9998,43 @@ val_t parser___parser_nodes___ASuperExpr___n_kwsuper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 993;
+  fra.me.line = 1387;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperExpr___n_kwsuper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:993 */
+  /* parser/parser_nodes.nit:1387 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_nodes, 993);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_nodes, 1387);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASuperExpr___n_kwsuper__eq[] = "parser_nodes::ASuperExpr::n_kwsuper=";
+void parser___parser_nodes___ASuperExpr___n_kwsuper__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1387;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASuperExpr___n_kwsuper__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1387 */
+  ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASuperExpr___n_args[] = "parser_nodes::ASuperExpr::n_args";
 val_t parser___parser_nodes___ASuperExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5392,23 +10042,43 @@ val_t parser___parser_nodes___ASuperExpr___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 994;
+  fra.me.line = 1388;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:994 */
+  /* parser/parser_nodes.nit:1388 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 994);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1388);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASuperExpr___n_args__eq[] = "parser_nodes::ASuperExpr::n_args=";
+void parser___parser_nodes___ASuperExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1388;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASuperExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1388 */
+  ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AInitExpr___n_kwinit[] = "parser_nodes::AInitExpr::n_kwinit";
 val_t parser___parser_nodes___AInitExpr___n_kwinit(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5416,23 +10086,43 @@ val_t parser___parser_nodes___AInitExpr___n_kwinit(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 998;
+  fra.me.line = 1395;
   fra.me.meth = LOCATE_parser___parser_nodes___AInitExpr___n_kwinit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:998 */
+  /* parser/parser_nodes.nit:1395 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_nodes, 998);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_nodes, 1395);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AInitExpr___n_kwinit__eq[] = "parser_nodes::AInitExpr::n_kwinit=";
+void parser___parser_nodes___AInitExpr___n_kwinit__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1395;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInitExpr___n_kwinit__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1395 */
+  ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AInitExpr___n_args[] = "parser_nodes::AInitExpr::n_args";
 val_t parser___parser_nodes___AInitExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5440,22 +10130,42 @@ val_t parser___parser_nodes___AInitExpr___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 999;
-  fra.me.meth = LOCATE_parser___parser_nodes___AInitExpr___n_args;
+  fra.me.line = 1396;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInitExpr___n_args;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:1396 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1396);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AInitExpr___n_args__eq[] = "parser_nodes::AInitExpr::n_args=";
+void parser___parser_nodes___AInitExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1396;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInitExpr___n_args__eq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:999 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 999);
-  }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1396 */
+  ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return;
 }
 static const char LOCATE_parser___parser_nodes___ABraFormExpr___n_args[] = "parser_nodes::ABraFormExpr::n_args";
 val_t parser___parser_nodes___ABraFormExpr___n_args(val_t p0){
@@ -5464,23 +10174,43 @@ val_t parser___parser_nodes___ABraFormExpr___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1003;
+  fra.me.line = 1402;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraFormExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1003 */
+  /* parser/parser_nodes.nit:1402 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1003);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1402);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraFormExpr___n_args__eq[] = "parser_nodes::ABraFormExpr::n_args=";
+void parser___parser_nodes___ABraFormExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1402;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraFormExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1402 */
+  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AVarFormExpr___n_id[] = "parser_nodes::AVarFormExpr::n_id";
 val_t parser___parser_nodes___AVarFormExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5488,23 +10218,43 @@ val_t parser___parser_nodes___AVarFormExpr___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1014;
+  fra.me.line = 1419;
   fra.me.meth = LOCATE_parser___parser_nodes___AVarFormExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1014 */
+  /* parser/parser_nodes.nit:1419 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1014);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1419);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AVarFormExpr___n_id__eq[] = "parser_nodes::AVarFormExpr::n_id=";
+void parser___parser_nodes___AVarFormExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1419;
+  fra.me.meth = LOCATE_parser___parser_nodes___AVarFormExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1419 */
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureCallExpr___n_id[] = "parser_nodes::AClosureCallExpr::n_id";
 val_t parser___parser_nodes___AClosureCallExpr___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5512,23 +10262,43 @@ val_t parser___parser_nodes___AClosureCallExpr___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1022;
+  fra.me.line = 1430;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureCallExpr___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1022 */
+  /* parser/parser_nodes.nit:1430 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1022);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1430);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureCallExpr___n_id__eq[] = "parser_nodes::AClosureCallExpr::n_id=";
+void parser___parser_nodes___AClosureCallExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1430;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureCallExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1430 */
+  ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureCallExpr___n_args[] = "parser_nodes::AClosureCallExpr::n_args";
 val_t parser___parser_nodes___AClosureCallExpr___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5536,23 +10306,43 @@ val_t parser___parser_nodes___AClosureCallExpr___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1023;
+  fra.me.line = 1431;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureCallExpr___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1023 */
+  /* parser/parser_nodes.nit:1431 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1023);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1431);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureCallExpr___n_args__eq[] = "parser_nodes::AClosureCallExpr::n_args=";
+void parser___parser_nodes___AClosureCallExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1431;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureCallExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1431 */
+  ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureCallExpr___n_closure_defs[] = "parser_nodes::AClosureCallExpr::n_closure_defs";
 val_t parser___parser_nodes___AClosureCallExpr___n_closure_defs(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5560,18 +10350,18 @@ val_t parser___parser_nodes___AClosureCallExpr___n_closure_defs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1024;
+  fra.me.line = 1432;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureCallExpr___n_closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1024 */
+  /* parser/parser_nodes.nit:1432 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_nodes, 1024);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_nodes, 1432);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -5584,23 +10374,43 @@ val_t parser___parser_nodes___ARangeExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1039;
+  fra.me.line = 1458;
   fra.me.meth = LOCATE_parser___parser_nodes___ARangeExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1039 */
+  /* parser/parser_nodes.nit:1458 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1039);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1458);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ARangeExpr___n_expr__eq[] = "parser_nodes::ARangeExpr::n_expr=";
+void parser___parser_nodes___ARangeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1458;
+  fra.me.meth = LOCATE_parser___parser_nodes___ARangeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1458 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ARangeExpr___n_expr2[] = "parser_nodes::ARangeExpr::n_expr2";
 val_t parser___parser_nodes___ARangeExpr___n_expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5608,23 +10418,43 @@ val_t parser___parser_nodes___ARangeExpr___n_expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1040;
+  fra.me.line = 1459;
   fra.me.meth = LOCATE_parser___parser_nodes___ARangeExpr___n_expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1040 */
+  /* parser/parser_nodes.nit:1459 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1040);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_nodes, 1459);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ARangeExpr___n_expr2__eq[] = "parser_nodes::ARangeExpr::n_expr2=";
+void parser___parser_nodes___ARangeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1459;
+  fra.me.meth = LOCATE_parser___parser_nodes___ARangeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1459 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACrangeExpr___n_obra[] = "parser_nodes::ACrangeExpr::n_obra";
 val_t parser___parser_nodes___ACrangeExpr___n_obra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5632,23 +10462,43 @@ val_t parser___parser_nodes___ACrangeExpr___n_obra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1044;
+  fra.me.line = 1465;
   fra.me.meth = LOCATE_parser___parser_nodes___ACrangeExpr___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1044 */
+  /* parser/parser_nodes.nit:1465 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 1044);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 1465);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACrangeExpr___n_obra__eq[] = "parser_nodes::ACrangeExpr::n_obra=";
+void parser___parser_nodes___ACrangeExpr___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1465;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACrangeExpr___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1465 */
+  ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ACrangeExpr___n_cbra[] = "parser_nodes::ACrangeExpr::n_cbra";
 val_t parser___parser_nodes___ACrangeExpr___n_cbra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5656,23 +10506,43 @@ val_t parser___parser_nodes___ACrangeExpr___n_cbra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1045;
+  fra.me.line = 1466;
   fra.me.meth = LOCATE_parser___parser_nodes___ACrangeExpr___n_cbra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1045 */
+  /* parser/parser_nodes.nit:1466 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 1045);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 1466);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACrangeExpr___n_cbra__eq[] = "parser_nodes::ACrangeExpr::n_cbra=";
+void parser___parser_nodes___ACrangeExpr___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1466;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACrangeExpr___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1466 */
+  ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOrangeExpr___n_obra[] = "parser_nodes::AOrangeExpr::n_obra";
 val_t parser___parser_nodes___AOrangeExpr___n_obra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5680,23 +10550,43 @@ val_t parser___parser_nodes___AOrangeExpr___n_obra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1049;
+  fra.me.line = 1472;
   fra.me.meth = LOCATE_parser___parser_nodes___AOrangeExpr___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1049 */
+  /* parser/parser_nodes.nit:1472 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 1049);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 1472);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOrangeExpr___n_obra__eq[] = "parser_nodes::AOrangeExpr::n_obra=";
+void parser___parser_nodes___AOrangeExpr___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1472;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOrangeExpr___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1472 */
+  ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AOrangeExpr___n_cbra[] = "parser_nodes::AOrangeExpr::n_cbra";
 val_t parser___parser_nodes___AOrangeExpr___n_cbra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5704,23 +10594,43 @@ val_t parser___parser_nodes___AOrangeExpr___n_cbra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1050;
+  fra.me.line = 1473;
   fra.me.meth = LOCATE_parser___parser_nodes___AOrangeExpr___n_cbra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1050 */
+  /* parser/parser_nodes.nit:1473 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 1050);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 1473);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AOrangeExpr___n_cbra__eq[] = "parser_nodes::AOrangeExpr::n_cbra=";
+void parser___parser_nodes___AOrangeExpr___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1473;
+  fra.me.meth = LOCATE_parser___parser_nodes___AOrangeExpr___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1473 */
+  ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AArrayExpr___n_exprs[] = "parser_nodes::AArrayExpr::n_exprs";
 val_t parser___parser_nodes___AArrayExpr___n_exprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5728,41 +10638,81 @@ val_t parser___parser_nodes___AArrayExpr___n_exprs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1054;
+  fra.me.line = 1479;
   fra.me.meth = LOCATE_parser___parser_nodes___AArrayExpr___n_exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1054 */
+  /* parser/parser_nodes.nit:1479 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_nodes, 1054);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_nodes, 1479);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AArrayExpr___n_exprs__eq[] = "parser_nodes::AArrayExpr::n_exprs=";
+void parser___parser_nodes___AArrayExpr___n_exprs__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1479;
+  fra.me.meth = LOCATE_parser___parser_nodes___AArrayExpr___n_exprs__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1479 */
+  ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASelfExpr___n_kwself[] = "parser_nodes::ASelfExpr::n_kwself";
 val_t parser___parser_nodes___ASelfExpr___n_kwself(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1058;
+  fra.me.line = 1485;
   fra.me.meth = LOCATE_parser___parser_nodes___ASelfExpr___n_kwself;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1058 */
+  /* parser/parser_nodes.nit:1485 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASelfExpr___n_kwself__eq[] = "parser_nodes::ASelfExpr::n_kwself=";
+void parser___parser_nodes___ASelfExpr___n_kwself__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1485;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASelfExpr___n_kwself__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1485 */
+  ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ATrueExpr___n_kwtrue[] = "parser_nodes::ATrueExpr::n_kwtrue";
 val_t parser___parser_nodes___ATrueExpr___n_kwtrue(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5770,23 +10720,43 @@ val_t parser___parser_nodes___ATrueExpr___n_kwtrue(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1065;
+  fra.me.line = 1496;
   fra.me.meth = LOCATE_parser___parser_nodes___ATrueExpr___n_kwtrue;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1065 */
+  /* parser/parser_nodes.nit:1496 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser___parser_nodes, 1065);
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser___parser_nodes, 1496);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ATrueExpr___n_kwtrue__eq[] = "parser_nodes::ATrueExpr::n_kwtrue=";
+void parser___parser_nodes___ATrueExpr___n_kwtrue__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1496;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATrueExpr___n_kwtrue__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1496 */
+  ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AFalseExpr___n_kwfalse[] = "parser_nodes::AFalseExpr::n_kwfalse";
 val_t parser___parser_nodes___AFalseExpr___n_kwfalse(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5794,23 +10764,43 @@ val_t parser___parser_nodes___AFalseExpr___n_kwfalse(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1069;
+  fra.me.line = 1501;
   fra.me.meth = LOCATE_parser___parser_nodes___AFalseExpr___n_kwfalse;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1069 */
+  /* parser/parser_nodes.nit:1501 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser___parser_nodes, 1069);
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser___parser_nodes, 1501);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AFalseExpr___n_kwfalse__eq[] = "parser_nodes::AFalseExpr::n_kwfalse=";
+void parser___parser_nodes___AFalseExpr___n_kwfalse__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1501;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFalseExpr___n_kwfalse__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1501 */
+  ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ANullExpr___n_kwnull[] = "parser_nodes::ANullExpr::n_kwnull";
 val_t parser___parser_nodes___ANullExpr___n_kwnull(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5818,23 +10808,43 @@ val_t parser___parser_nodes___ANullExpr___n_kwnull(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1073;
+  fra.me.line = 1506;
   fra.me.meth = LOCATE_parser___parser_nodes___ANullExpr___n_kwnull;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1073 */
+  /* parser/parser_nodes.nit:1506 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_nodes, 1073);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_nodes, 1506);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ANullExpr___n_kwnull__eq[] = "parser_nodes::ANullExpr::n_kwnull=";
+void parser___parser_nodes___ANullExpr___n_kwnull__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1506;
+  fra.me.meth = LOCATE_parser___parser_nodes___ANullExpr___n_kwnull__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1506 */
+  ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIntExpr___n_number[] = "parser_nodes::AIntExpr::n_number";
 val_t parser___parser_nodes___AIntExpr___n_number(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5842,23 +10852,43 @@ val_t parser___parser_nodes___AIntExpr___n_number(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1077;
+  fra.me.line = 1511;
   fra.me.meth = LOCATE_parser___parser_nodes___AIntExpr___n_number;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1077 */
+  /* parser/parser_nodes.nit:1511 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser___parser_nodes, 1077);
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser___parser_nodes, 1511);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIntExpr___n_number__eq[] = "parser_nodes::AIntExpr::n_number=";
+void parser___parser_nodes___AIntExpr___n_number__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1511;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIntExpr___n_number__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1511 */
+  ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AFloatExpr___n_float[] = "parser_nodes::AFloatExpr::n_float";
 val_t parser___parser_nodes___AFloatExpr___n_float(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5866,22 +10896,42 @@ val_t parser___parser_nodes___AFloatExpr___n_float(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1081;
+  fra.me.line = 1516;
   fra.me.meth = LOCATE_parser___parser_nodes___AFloatExpr___n_float;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1081 */
+  /* parser/parser_nodes.nit:1516 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser___parser_nodes, 1081);
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser___parser_nodes, 1516);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AFloatExpr___n_float__eq[] = "parser_nodes::AFloatExpr::n_float=";
+void parser___parser_nodes___AFloatExpr___n_float__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1516;
+  fra.me.meth = LOCATE_parser___parser_nodes___AFloatExpr___n_float__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1516 */
+  ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___ACharExpr___n_char[] = "parser_nodes::ACharExpr::n_char";
 val_t parser___parser_nodes___ACharExpr___n_char(val_t p0){
@@ -5890,23 +10940,43 @@ val_t parser___parser_nodes___ACharExpr___n_char(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1085;
+  fra.me.line = 1521;
   fra.me.meth = LOCATE_parser___parser_nodes___ACharExpr___n_char;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1085 */
+  /* parser/parser_nodes.nit:1521 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser___parser_nodes, 1085);
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser___parser_nodes, 1521);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ACharExpr___n_char__eq[] = "parser_nodes::ACharExpr::n_char=";
+void parser___parser_nodes___ACharExpr___n_char__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1521;
+  fra.me.meth = LOCATE_parser___parser_nodes___ACharExpr___n_char__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1521 */
+  ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AStringFormExpr___n_string[] = "parser_nodes::AStringFormExpr::n_string";
 val_t parser___parser_nodes___AStringFormExpr___n_string(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5914,23 +10984,43 @@ val_t parser___parser_nodes___AStringFormExpr___n_string(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1089;
+  fra.me.line = 1526;
   fra.me.meth = LOCATE_parser___parser_nodes___AStringFormExpr___n_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1089 */
+  /* parser/parser_nodes.nit:1526 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_nodes, 1089);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_nodes, 1526);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AStringFormExpr___n_string__eq[] = "parser_nodes::AStringFormExpr::n_string=";
+void parser___parser_nodes___AStringFormExpr___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1526;
+  fra.me.meth = LOCATE_parser___parser_nodes___AStringFormExpr___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1526 */
+  ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ASuperstringExpr___n_exprs[] = "parser_nodes::ASuperstringExpr::n_exprs";
 val_t parser___parser_nodes___ASuperstringExpr___n_exprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5938,18 +11028,18 @@ val_t parser___parser_nodes___ASuperstringExpr___n_exprs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1105;
+  fra.me.line = 1553;
   fra.me.meth = LOCATE_parser___parser_nodes___ASuperstringExpr___n_exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1105 */
+  /* parser/parser_nodes.nit:1553 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_nodes, 1105);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_nodes, 1553);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -5962,23 +11052,43 @@ val_t parser___parser_nodes___AParExpr___n_opar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1109;
+  fra.me.line = 1559;
   fra.me.meth = LOCATE_parser___parser_nodes___AParExpr___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1109 */
+  /* parser/parser_nodes.nit:1559 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1109);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1559);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParExpr___n_opar__eq[] = "parser_nodes::AParExpr::n_opar=";
+void parser___parser_nodes___AParExpr___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1559;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParExpr___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1559 */
+  ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AParExpr___n_cpar[] = "parser_nodes::AParExpr::n_cpar";
 val_t parser___parser_nodes___AParExpr___n_cpar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5986,23 +11096,43 @@ val_t parser___parser_nodes___AParExpr___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1110;
+  fra.me.line = 1560;
   fra.me.meth = LOCATE_parser___parser_nodes___AParExpr___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1110 */
+  /* parser/parser_nodes.nit:1560 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1110);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1560);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParExpr___n_cpar__eq[] = "parser_nodes::AParExpr::n_cpar=";
+void parser___parser_nodes___AParExpr___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1560;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParExpr___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1560 */
+  ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AProxyExpr___n_expr[] = "parser_nodes::AProxyExpr::n_expr";
 val_t parser___parser_nodes___AProxyExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6010,23 +11140,43 @@ val_t parser___parser_nodes___AProxyExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1114;
+  fra.me.line = 1566;
   fra.me.meth = LOCATE_parser___parser_nodes___AProxyExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1114 */
+  /* parser/parser_nodes.nit:1566 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1114);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1566);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AProxyExpr___n_expr__eq[] = "parser_nodes::AProxyExpr::n_expr=";
+void parser___parser_nodes___AProxyExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_parser___parser_nodes___AProxyExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1566 */
+  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_expr[] = "parser_nodes::AAsCastExpr::n_expr";
 val_t parser___parser_nodes___AAsCastExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6034,23 +11184,43 @@ val_t parser___parser_nodes___AAsCastExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1118;
+  fra.me.line = 1572;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1118 */
+  /* parser/parser_nodes.nit:1572 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1118);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1572);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_expr__eq[] = "parser_nodes::AAsCastExpr::n_expr=";
+void parser___parser_nodes___AAsCastExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1572;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1572 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_kwas[] = "parser_nodes::AAsCastExpr::n_kwas";
 val_t parser___parser_nodes___AAsCastExpr___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6058,23 +11228,43 @@ val_t parser___parser_nodes___AAsCastExpr___n_kwas(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1119;
+  fra.me.line = 1573;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1119 */
+  /* parser/parser_nodes.nit:1573 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 1119);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 1573);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_kwas__eq[] = "parser_nodes::AAsCastExpr::n_kwas=";
+void parser___parser_nodes___AAsCastExpr___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1573;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1573 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_opar[] = "parser_nodes::AAsCastExpr::n_opar";
 val_t parser___parser_nodes___AAsCastExpr___n_opar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6082,23 +11272,43 @@ val_t parser___parser_nodes___AAsCastExpr___n_opar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1120;
+  fra.me.line = 1574;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1120 */
+  /* parser/parser_nodes.nit:1574 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1120);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1574);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_opar__eq[] = "parser_nodes::AAsCastExpr::n_opar=";
+void parser___parser_nodes___AAsCastExpr___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1574;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1574 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_type[] = "parser_nodes::AAsCastExpr::n_type";
 val_t parser___parser_nodes___AAsCastExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6106,23 +11316,43 @@ val_t parser___parser_nodes___AAsCastExpr___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1121;
+  fra.me.line = 1575;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1121 */
+  /* parser/parser_nodes.nit:1575 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1121);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1575);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_type__eq[] = "parser_nodes::AAsCastExpr::n_type=";
+void parser___parser_nodes___AAsCastExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1575;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1575 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_cpar[] = "parser_nodes::AAsCastExpr::n_cpar";
 val_t parser___parser_nodes___AAsCastExpr___n_cpar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6130,23 +11360,43 @@ val_t parser___parser_nodes___AAsCastExpr___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1122;
+  fra.me.line = 1576;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1122 */
+  /* parser/parser_nodes.nit:1576 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1122);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1576);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsCastExpr___n_cpar__eq[] = "parser_nodes::AAsCastExpr::n_cpar=";
+void parser___parser_nodes___AAsCastExpr___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1576;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsCastExpr___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1576 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_expr[] = "parser_nodes::AAsNotnullExpr::n_expr";
 val_t parser___parser_nodes___AAsNotnullExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6154,23 +11404,43 @@ val_t parser___parser_nodes___AAsNotnullExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1126;
+  fra.me.line = 1582;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1126 */
+  /* parser/parser_nodes.nit:1582 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1126);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1582);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_expr__eq[] = "parser_nodes::AAsNotnullExpr::n_expr=";
+void parser___parser_nodes___AAsNotnullExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1582;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1582 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwas[] = "parser_nodes::AAsNotnullExpr::n_kwas";
 val_t parser___parser_nodes___AAsNotnullExpr___n_kwas(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6178,23 +11448,43 @@ val_t parser___parser_nodes___AAsNotnullExpr___n_kwas(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1127;
+  fra.me.line = 1583;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwas;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1127 */
+  /* parser/parser_nodes.nit:1583 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 1127);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_nodes, 1583);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwas__eq[] = "parser_nodes::AAsNotnullExpr::n_kwas=";
+void parser___parser_nodes___AAsNotnullExpr___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1583;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1583 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_opar[] = "parser_nodes::AAsNotnullExpr::n_opar";
 val_t parser___parser_nodes___AAsNotnullExpr___n_opar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6202,23 +11492,43 @@ val_t parser___parser_nodes___AAsNotnullExpr___n_opar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1128;
+  fra.me.line = 1584;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1128 */
+  /* parser/parser_nodes.nit:1584 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1128);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1584);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_opar__eq[] = "parser_nodes::AAsNotnullExpr::n_opar=";
+void parser___parser_nodes___AAsNotnullExpr___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1584;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1584 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnot[] = "parser_nodes::AAsNotnullExpr::n_kwnot";
 val_t parser___parser_nodes___AAsNotnullExpr___n_kwnot(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6226,23 +11536,43 @@ val_t parser___parser_nodes___AAsNotnullExpr___n_kwnot(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1129;
+  fra.me.line = 1585;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnot;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1129 */
+  /* parser/parser_nodes.nit:1585 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_nodes, 1129);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_nodes, 1585);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq[] = "parser_nodes::AAsNotnullExpr::n_kwnot=";
+void parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1585;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1585 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnull[] = "parser_nodes::AAsNotnullExpr::n_kwnull";
 val_t parser___parser_nodes___AAsNotnullExpr___n_kwnull(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6250,23 +11580,43 @@ val_t parser___parser_nodes___AAsNotnullExpr___n_kwnull(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1130;
+  fra.me.line = 1586;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnull;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1130 */
+  /* parser/parser_nodes.nit:1586 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_nodes, 1130);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_nodes, 1586);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq[] = "parser_nodes::AAsNotnullExpr::n_kwnull=";
+void parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1586;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1586 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_cpar[] = "parser_nodes::AAsNotnullExpr::n_cpar";
 val_t parser___parser_nodes___AAsNotnullExpr___n_cpar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6274,23 +11624,43 @@ val_t parser___parser_nodes___AAsNotnullExpr___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1131;
+  fra.me.line = 1587;
   fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1131 */
+  /* parser/parser_nodes.nit:1587 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1131);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1587);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAsNotnullExpr___n_cpar__eq[] = "parser_nodes::AAsNotnullExpr::n_cpar=";
+void parser___parser_nodes___AAsNotnullExpr___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1587;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAsNotnullExpr___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1587 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AIssetAttrExpr___n_kwisset[] = "parser_nodes::AIssetAttrExpr::n_kwisset";
 val_t parser___parser_nodes___AIssetAttrExpr___n_kwisset(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6298,23 +11668,43 @@ val_t parser___parser_nodes___AIssetAttrExpr___n_kwisset(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1135;
+  fra.me.line = 1593;
   fra.me.meth = LOCATE_parser___parser_nodes___AIssetAttrExpr___n_kwisset;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1135 */
+  /* parser/parser_nodes.nit:1593 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser___parser_nodes, 1135);
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser___parser_nodes, 1593);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq[] = "parser_nodes::AIssetAttrExpr::n_kwisset=";
+void parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1593;
+  fra.me.meth = LOCATE_parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1593 */
+  ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExprs___n_exprs[] = "parser_nodes::AExprs::n_exprs";
 val_t parser___parser_nodes___AExprs___n_exprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6322,18 +11712,18 @@ val_t parser___parser_nodes___AExprs___n_exprs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1139;
+  fra.me.line = 1599;
   fra.me.meth = LOCATE_parser___parser_nodes___AExprs___n_exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1139 */
+  /* parser/parser_nodes.nit:1599 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_nodes, 1139);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_nodes, 1599);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -6346,23 +11736,43 @@ val_t parser___parser_nodes___ADebugTypeExpr___n_kwdebug(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1143;
+  fra.me.line = 1604;
   fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwdebug;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1143 */
+  /* parser/parser_nodes.nit:1604 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_parser___parser_nodes, 1143);
+    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_parser___parser_nodes, 1604);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq[] = "parser_nodes::ADebugTypeExpr::n_kwdebug=";
+void parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1604;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1604 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwtype[] = "parser_nodes::ADebugTypeExpr::n_kwtype";
 val_t parser___parser_nodes___ADebugTypeExpr___n_kwtype(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6370,23 +11780,43 @@ val_t parser___parser_nodes___ADebugTypeExpr___n_kwtype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1144;
+  fra.me.line = 1605;
   fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwtype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1144 */
+  /* parser/parser_nodes.nit:1605 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_nodes, 1144);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_nodes, 1605);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq[] = "parser_nodes::ADebugTypeExpr::n_kwtype=";
+void parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1605;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1605 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_expr[] = "parser_nodes::ADebugTypeExpr::n_expr";
 val_t parser___parser_nodes___ADebugTypeExpr___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6394,23 +11824,43 @@ val_t parser___parser_nodes___ADebugTypeExpr___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1145;
+  fra.me.line = 1606;
   fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1145 */
+  /* parser/parser_nodes.nit:1606 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1145);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1606);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_expr__eq[] = "parser_nodes::ADebugTypeExpr::n_expr=";
+void parser___parser_nodes___ADebugTypeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1606;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1606 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_type[] = "parser_nodes::ADebugTypeExpr::n_type";
 val_t parser___parser_nodes___ADebugTypeExpr___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6418,23 +11868,43 @@ val_t parser___parser_nodes___ADebugTypeExpr___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1146;
+  fra.me.line = 1607;
   fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1146 */
+  /* parser/parser_nodes.nit:1607 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1146);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1607);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ADebugTypeExpr___n_type__eq[] = "parser_nodes::ADebugTypeExpr::n_type=";
+void parser___parser_nodes___ADebugTypeExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1607;
+  fra.me.meth = LOCATE_parser___parser_nodes___ADebugTypeExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1607 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AParExprs___n_opar[] = "parser_nodes::AParExprs::n_opar";
 val_t parser___parser_nodes___AParExprs___n_opar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6442,23 +11912,43 @@ val_t parser___parser_nodes___AParExprs___n_opar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1153;
+  fra.me.line = 1618;
   fra.me.meth = LOCATE_parser___parser_nodes___AParExprs___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1153 */
+  /* parser/parser_nodes.nit:1618 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1153);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_nodes, 1618);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParExprs___n_opar__eq[] = "parser_nodes::AParExprs::n_opar=";
+void parser___parser_nodes___AParExprs___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1618;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParExprs___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1618 */
+  ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AParExprs___n_cpar[] = "parser_nodes::AParExprs::n_cpar";
 val_t parser___parser_nodes___AParExprs___n_cpar(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6466,23 +11956,43 @@ val_t parser___parser_nodes___AParExprs___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1154;
+  fra.me.line = 1619;
   fra.me.meth = LOCATE_parser___parser_nodes___AParExprs___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1154 */
+  /* parser/parser_nodes.nit:1619 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1154);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_nodes, 1619);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AParExprs___n_cpar__eq[] = "parser_nodes::AParExprs::n_cpar=";
+void parser___parser_nodes___AParExprs___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1619;
+  fra.me.meth = LOCATE_parser___parser_nodes___AParExprs___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1619 */
+  ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABraExprs___n_obra[] = "parser_nodes::ABraExprs::n_obra";
 val_t parser___parser_nodes___ABraExprs___n_obra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6490,23 +12000,43 @@ val_t parser___parser_nodes___ABraExprs___n_obra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1158;
+  fra.me.line = 1625;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraExprs___n_obra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1158 */
+  /* parser/parser_nodes.nit:1625 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 1158);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_nodes, 1625);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraExprs___n_obra__eq[] = "parser_nodes::ABraExprs::n_obra=";
+void parser___parser_nodes___ABraExprs___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1625;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraExprs___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1625 */
+  ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABraExprs___n_cbra[] = "parser_nodes::ABraExprs::n_cbra";
 val_t parser___parser_nodes___ABraExprs___n_cbra(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6514,23 +12044,43 @@ val_t parser___parser_nodes___ABraExprs___n_cbra(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1159;
+  fra.me.line = 1626;
   fra.me.meth = LOCATE_parser___parser_nodes___ABraExprs___n_cbra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1159 */
+  /* parser/parser_nodes.nit:1626 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 1159);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_nodes, 1626);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABraExprs___n_cbra__eq[] = "parser_nodes::ABraExprs::n_cbra=";
+void parser___parser_nodes___ABraExprs___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1626;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABraExprs___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1626 */
+  ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___APlusAssignOp___n_pluseq[] = "parser_nodes::APlusAssignOp::n_pluseq";
 val_t parser___parser_nodes___APlusAssignOp___n_pluseq(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6538,23 +12088,43 @@ val_t parser___parser_nodes___APlusAssignOp___n_pluseq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1164;
+  fra.me.line = 1635;
   fra.me.meth = LOCATE_parser___parser_nodes___APlusAssignOp___n_pluseq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1164 */
+  /* parser/parser_nodes.nit:1635 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser___parser_nodes, 1164);
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser___parser_nodes, 1635);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___APlusAssignOp___n_pluseq__eq[] = "parser_nodes::APlusAssignOp::n_pluseq=";
+void parser___parser_nodes___APlusAssignOp___n_pluseq__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1635;
+  fra.me.meth = LOCATE_parser___parser_nodes___APlusAssignOp___n_pluseq__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1635 */
+  ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AMinusAssignOp___n_minuseq[] = "parser_nodes::AMinusAssignOp::n_minuseq";
 val_t parser___parser_nodes___AMinusAssignOp___n_minuseq(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6562,23 +12132,43 @@ val_t parser___parser_nodes___AMinusAssignOp___n_minuseq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1168;
+  fra.me.line = 1639;
   fra.me.meth = LOCATE_parser___parser_nodes___AMinusAssignOp___n_minuseq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1168 */
+  /* parser/parser_nodes.nit:1639 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser___parser_nodes, 1168);
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser___parser_nodes, 1639);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AMinusAssignOp___n_minuseq__eq[] = "parser_nodes::AMinusAssignOp::n_minuseq=";
+void parser___parser_nodes___AMinusAssignOp___n_minuseq__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1639;
+  fra.me.meth = LOCATE_parser___parser_nodes___AMinusAssignOp___n_minuseq__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1639 */
+  ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDef___n_bang[] = "parser_nodes::AClosureDef::n_bang";
 val_t parser___parser_nodes___AClosureDef___n_bang(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6586,23 +12176,43 @@ val_t parser___parser_nodes___AClosureDef___n_bang(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1172;
+  fra.me.line = 1644;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_bang;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1172 */
+  /* parser/parser_nodes.nit:1644 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_nodes, 1172);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_nodes, 1644);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDef___n_bang__eq[] = "parser_nodes::AClosureDef::n_bang=";
+void parser___parser_nodes___AClosureDef___n_bang__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1644;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_bang__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1644 */
+  ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDef___n_id[] = "parser_nodes::AClosureDef::n_id";
 val_t parser___parser_nodes___AClosureDef___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6610,23 +12220,43 @@ val_t parser___parser_nodes___AClosureDef___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1173;
+  fra.me.line = 1645;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1173 */
+  /* parser/parser_nodes.nit:1645 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1173);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1645);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDef___n_id__eq[] = "parser_nodes::AClosureDef::n_id=";
+void parser___parser_nodes___AClosureDef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1645;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1645 */
+  ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDef___n_ids[] = "parser_nodes::AClosureDef::n_ids";
 val_t parser___parser_nodes___AClosureDef___n_ids(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6634,18 +12264,18 @@ val_t parser___parser_nodes___AClosureDef___n_ids(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1174;
+  fra.me.line = 1646;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_ids;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1174 */
+  /* parser/parser_nodes.nit:1646 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_nodes, 1174);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_nodes, 1646);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -6657,50 +12287,90 @@ val_t parser___parser_nodes___AClosureDef___n_kwdo(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1175;
+  fra.me.line = 1647;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_kwdo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1175 */
+  /* parser/parser_nodes.nit:1647 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDef___n_kwdo__eq[] = "parser_nodes::AClosureDef::n_kwdo=";
+void parser___parser_nodes___AClosureDef___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1647;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1647 */
+  ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDef___n_expr[] = "parser_nodes::AClosureDef::n_expr";
 val_t parser___parser_nodes___AClosureDef___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1176;
+  fra.me.line = 1648;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1176 */
+  /* parser/parser_nodes.nit:1648 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AClosureDef___n_expr__eq[] = "parser_nodes::AClosureDef::n_expr=";
+void parser___parser_nodes___AClosureDef___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1648;
+  fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1648 */
+  ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AClosureDef___hot_location[] = "parser_nodes::AClosureDef::(parser_nodes::ANode::hot_location)";
 val_t parser___parser_nodes___AClosureDef___hot_location(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1177;
+  fra.me.line = 1649;
   fra.me.meth = LOCATE_parser___parser_nodes___AClosureDef___hot_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1177 */
+  /* parser/parser_nodes.nit:1649 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -6715,23 +12385,43 @@ val_t parser___parser_nodes___ASimpleClosureId___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1184;
+  fra.me.line = 1656;
   fra.me.meth = LOCATE_parser___parser_nodes___ASimpleClosureId___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1184 */
+  /* parser/parser_nodes.nit:1656 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1184);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1656);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ASimpleClosureId___n_id__eq[] = "parser_nodes::ASimpleClosureId::n_id=";
+void parser___parser_nodes___ASimpleClosureId___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1656;
+  fra.me.meth = LOCATE_parser___parser_nodes___ASimpleClosureId___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1656 */
+  ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ABreakClosureId___n_kwbreak[] = "parser_nodes::ABreakClosureId::n_kwbreak";
 val_t parser___parser_nodes___ABreakClosureId___n_kwbreak(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6739,41 +12429,81 @@ val_t parser___parser_nodes___ABreakClosureId___n_kwbreak(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1188;
+  fra.me.line = 1660;
   fra.me.meth = LOCATE_parser___parser_nodes___ABreakClosureId___n_kwbreak;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1188 */
+  /* parser/parser_nodes.nit:1660 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_nodes, 1188);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_nodes, 1660);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ABreakClosureId___n_kwbreak__eq[] = "parser_nodes::ABreakClosureId::n_kwbreak=";
+void parser___parser_nodes___ABreakClosureId___n_kwbreak__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1660;
+  fra.me.meth = LOCATE_parser___parser_nodes___ABreakClosureId___n_kwbreak__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1660 */
+  ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AModuleName___n_quad[] = "parser_nodes::AModuleName::n_quad";
 val_t parser___parser_nodes___AModuleName___n_quad(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1192;
+  fra.me.line = 1664;
   fra.me.meth = LOCATE_parser___parser_nodes___AModuleName___n_quad;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1192 */
+  /* parser/parser_nodes.nit:1664 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AModuleName___n_quad__eq[] = "parser_nodes::AModuleName::n_quad=";
+void parser___parser_nodes___AModuleName___n_quad__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1664;
+  fra.me.meth = LOCATE_parser___parser_nodes___AModuleName___n_quad__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1664 */
+  ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AModuleName___n_path[] = "parser_nodes::AModuleName::n_path";
 val_t parser___parser_nodes___AModuleName___n_path(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6781,18 +12511,18 @@ val_t parser___parser_nodes___AModuleName___n_path(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1193;
+  fra.me.line = 1665;
   fra.me.meth = LOCATE_parser___parser_nodes___AModuleName___n_path;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1193 */
+  /* parser/parser_nodes.nit:1665 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_nodes, 1193);
+    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_nodes, 1665);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -6805,22 +12535,42 @@ val_t parser___parser_nodes___AModuleName___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1194;
+  fra.me.line = 1666;
   fra.me.meth = LOCATE_parser___parser_nodes___AModuleName___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1194 */
+  /* parser/parser_nodes.nit:1666 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1194);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1666);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___parser_nodes___AModuleName___n_id__eq[] = "parser_nodes::AModuleName::n_id=";
+void parser___parser_nodes___AModuleName___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1666;
+  fra.me.meth = LOCATE_parser___parser_nodes___AModuleName___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1666 */
+  ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
 }
 static const char LOCATE_parser___parser_nodes___AInLanguage___n_kwin[] = "parser_nodes::AInLanguage::n_kwin";
 val_t parser___parser_nodes___AInLanguage___n_kwin(val_t p0){
@@ -6829,23 +12579,43 @@ val_t parser___parser_nodes___AInLanguage___n_kwin(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1198;
+  fra.me.line = 1670;
   fra.me.meth = LOCATE_parser___parser_nodes___AInLanguage___n_kwin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1198 */
+  /* parser/parser_nodes.nit:1670 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_parser___parser_nodes, 1198);
+    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_parser___parser_nodes, 1670);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AInLanguage___n_kwin__eq[] = "parser_nodes::AInLanguage::n_kwin=";
+void parser___parser_nodes___AInLanguage___n_kwin__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1670;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInLanguage___n_kwin__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1670 */
+  ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AInLanguage___n_string[] = "parser_nodes::AInLanguage::n_string";
 val_t parser___parser_nodes___AInLanguage___n_string(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6853,41 +12623,81 @@ val_t parser___parser_nodes___AInLanguage___n_string(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1199;
+  fra.me.line = 1671;
   fra.me.meth = LOCATE_parser___parser_nodes___AInLanguage___n_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1199 */
+  /* parser/parser_nodes.nit:1671 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_nodes, 1199);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_nodes, 1671);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AInLanguage___n_string__eq[] = "parser_nodes::AInLanguage::n_string=";
+void parser___parser_nodes___AInLanguage___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1671;
+  fra.me.meth = LOCATE_parser___parser_nodes___AInLanguage___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1671 */
+  ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternCodeBlock___n_in_language[] = "parser_nodes::AExternCodeBlock::n_in_language";
 val_t parser___parser_nodes___AExternCodeBlock___n_in_language(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1203;
+  fra.me.line = 1675;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternCodeBlock___n_in_language;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1203 */
+  /* parser/parser_nodes.nit:1675 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternCodeBlock___n_in_language__eq[] = "parser_nodes::AExternCodeBlock::n_in_language=";
+void parser___parser_nodes___AExternCodeBlock___n_in_language__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1675;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternCodeBlock___n_in_language__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1675 */
+  ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment[] = "parser_nodes::AExternCodeBlock::n_extern_code_segment";
 val_t parser___parser_nodes___AExternCodeBlock___n_extern_code_segment(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6895,41 +12705,81 @@ val_t parser___parser_nodes___AExternCodeBlock___n_extern_code_segment(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1204;
+  fra.me.line = 1676;
   fra.me.meth = LOCATE_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1204 */
+  /* parser/parser_nodes.nit:1676 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_parser___parser_nodes, 1204);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_parser___parser_nodes, 1676);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq[] = "parser_nodes::AExternCodeBlock::n_extern_code_segment=";
+void parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1676;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1676 */
+  ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AQualified___n_quad[] = "parser_nodes::AQualified::n_quad";
 val_t parser___parser_nodes___AQualified___n_quad(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1208;
+  fra.me.line = 1680;
   fra.me.meth = LOCATE_parser___parser_nodes___AQualified___n_quad;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1208 */
+  /* parser/parser_nodes.nit:1680 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AQualified____n_quad(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AQualified___n_quad__eq[] = "parser_nodes::AQualified::n_quad=";
+void parser___parser_nodes___AQualified___n_quad__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1680;
+  fra.me.meth = LOCATE_parser___parser_nodes___AQualified___n_quad__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1680 */
+  ATTR_parser___parser_nodes___AQualified____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AQualified___n_id[] = "parser_nodes::AQualified::n_id";
 val_t parser___parser_nodes___AQualified___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6937,18 +12787,18 @@ val_t parser___parser_nodes___AQualified___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1209;
+  fra.me.line = 1681;
   fra.me.meth = LOCATE_parser___parser_nodes___AQualified___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1209 */
+  /* parser/parser_nodes.nit:1681 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1209);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1681);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -6960,18 +12810,38 @@ val_t parser___parser_nodes___AQualified___n_classid(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1210;
+  fra.me.line = 1682;
   fra.me.meth = LOCATE_parser___parser_nodes___AQualified___n_classid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1210 */
+  /* parser/parser_nodes.nit:1682 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AQualified___n_classid__eq[] = "parser_nodes::AQualified::n_classid=";
+void parser___parser_nodes___AQualified___n_classid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1682;
+  fra.me.meth = LOCATE_parser___parser_nodes___AQualified___n_classid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1682 */
+  ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ADoc___n_comment[] = "parser_nodes::ADoc::n_comment";
 val_t parser___parser_nodes___ADoc___n_comment(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6979,18 +12849,18 @@ val_t parser___parser_nodes___ADoc___n_comment(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1214;
+  fra.me.line = 1689;
   fra.me.meth = LOCATE_parser___parser_nodes___ADoc___n_comment;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1214 */
+  /* parser/parser_nodes.nit:1689 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_nodes, 1214);
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_nodes, 1689);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -7002,36 +12872,76 @@ val_t parser___parser_nodes___AAnnotations___n_at(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1219;
+  fra.me.line = 1694;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1219 */
+  /* parser/parser_nodes.nit:1694 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAnnotations___n_at__eq[] = "parser_nodes::AAnnotations::n_at=";
+void parser___parser_nodes___AAnnotations___n_at__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1694;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_at__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1694 */
+  ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAnnotations___n_opar[] = "parser_nodes::AAnnotations::n_opar";
 val_t parser___parser_nodes___AAnnotations___n_opar(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1220;
+  fra.me.line = 1695;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1220 */
+  /* parser/parser_nodes.nit:1695 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAnnotations___n_opar__eq[] = "parser_nodes::AAnnotations::n_opar=";
+void parser___parser_nodes___AAnnotations___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1695;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1695 */
+  ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAnnotations___n_items[] = "parser_nodes::AAnnotations::n_items";
 val_t parser___parser_nodes___AAnnotations___n_items(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7039,18 +12949,18 @@ val_t parser___parser_nodes___AAnnotations___n_items(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1221;
+  fra.me.line = 1696;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1221 */
+  /* parser/parser_nodes.nit:1696 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_nodes, 1221);
+    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_nodes, 1696);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -7062,18 +12972,38 @@ val_t parser___parser_nodes___AAnnotations___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1222;
+  fra.me.line = 1697;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1222 */
+  /* parser/parser_nodes.nit:1697 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAnnotations___n_cpar__eq[] = "parser_nodes::AAnnotations::n_cpar=";
+void parser___parser_nodes___AAnnotations___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1697;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAnnotations___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1697 */
+  ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAnnotation___n_atid[] = "parser_nodes::AAnnotation::n_atid";
 val_t parser___parser_nodes___AAnnotation___n_atid(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7081,41 +13011,81 @@ val_t parser___parser_nodes___AAnnotation___n_atid(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1226;
+  fra.me.line = 1701;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_atid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1226 */
+  /* parser/parser_nodes.nit:1701 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_parser___parser_nodes, 1226);
+    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_parser___parser_nodes, 1701);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAnnotation___n_atid__eq[] = "parser_nodes::AAnnotation::n_atid=";
+void parser___parser_nodes___AAnnotation___n_atid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1701;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_atid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1701 */
+  ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAnnotation___n_opar[] = "parser_nodes::AAnnotation::n_opar";
 val_t parser___parser_nodes___AAnnotation___n_opar(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1227;
+  fra.me.line = 1702;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_opar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1227 */
+  /* parser/parser_nodes.nit:1702 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAnnotation___n_opar__eq[] = "parser_nodes::AAnnotation::n_opar=";
+void parser___parser_nodes___AAnnotation___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1702;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1702 */
+  ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAnnotation___n_args[] = "parser_nodes::AAnnotation::n_args";
 val_t parser___parser_nodes___AAnnotation___n_args(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7123,18 +13093,18 @@ val_t parser___parser_nodes___AAnnotation___n_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1228;
+  fra.me.line = 1703;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1228 */
+  /* parser/parser_nodes.nit:1703 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1228);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_nodes, 1703);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -7146,18 +13116,38 @@ val_t parser___parser_nodes___AAnnotation___n_cpar(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1229;
+  fra.me.line = 1704;
   fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_cpar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1229 */
+  /* parser/parser_nodes.nit:1704 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAnnotation___n_cpar__eq[] = "parser_nodes::AAnnotation::n_cpar=";
+void parser___parser_nodes___AAnnotation___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1704;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAnnotation___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1704 */
+  ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___ATypeAtArg___n_type[] = "parser_nodes::ATypeAtArg::n_type";
 val_t parser___parser_nodes___ATypeAtArg___n_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7165,23 +13155,43 @@ val_t parser___parser_nodes___ATypeAtArg___n_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1236;
+  fra.me.line = 1711;
   fra.me.meth = LOCATE_parser___parser_nodes___ATypeAtArg___n_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1236 */
+  /* parser/parser_nodes.nit:1711 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1236);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_nodes, 1711);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___ATypeAtArg___n_type__eq[] = "parser_nodes::ATypeAtArg::n_type=";
+void parser___parser_nodes___ATypeAtArg___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1711;
+  fra.me.meth = LOCATE_parser___parser_nodes___ATypeAtArg___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1711 */
+  ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AExprAtArg___n_expr[] = "parser_nodes::AExprAtArg::n_expr";
 val_t parser___parser_nodes___AExprAtArg___n_expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7189,23 +13199,43 @@ val_t parser___parser_nodes___AExprAtArg___n_expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1240;
+  fra.me.line = 1715;
   fra.me.meth = LOCATE_parser___parser_nodes___AExprAtArg___n_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1240 */
+  /* parser/parser_nodes.nit:1715 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1240);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_nodes, 1715);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AExprAtArg___n_expr__eq[] = "parser_nodes::AExprAtArg::n_expr=";
+void parser___parser_nodes___AExprAtArg___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1715;
+  fra.me.meth = LOCATE_parser___parser_nodes___AExprAtArg___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1715 */
+  ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___AAtid___n_id[] = "parser_nodes::AAtid::n_id";
 val_t parser___parser_nodes___AAtid___n_id(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7213,41 +13243,81 @@ val_t parser___parser_nodes___AAtid___n_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1247;
+  fra.me.line = 1722;
   fra.me.meth = LOCATE_parser___parser_nodes___AAtid___n_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1247 */
+  /* parser/parser_nodes.nit:1722 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1247);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_nodes, 1722);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___AAtid___n_id__eq[] = "parser_nodes::AAtid::n_id=";
+void parser___parser_nodes___AAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1722;
+  fra.me.meth = LOCATE_parser___parser_nodes___AAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1722 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___Start___n_base[] = "parser_nodes::Start::n_base";
 val_t parser___parser_nodes___Start___n_base(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1270;
+  fra.me.line = 1746;
   fra.me.meth = LOCATE_parser___parser_nodes___Start___n_base;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1270 */
+  /* parser/parser_nodes.nit:1746 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___Start___n_base__eq[] = "parser_nodes::Start::n_base=";
+void parser___parser_nodes___Start___n_base__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1746;
+  fra.me.meth = LOCATE_parser___parser_nodes___Start___n_base__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1746 */
+  ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___Start___n_eof[] = "parser_nodes::Start::n_eof";
 val_t parser___parser_nodes___Start___n_eof(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -7255,32 +13325,52 @@ val_t parser___parser_nodes___Start___n_eof(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1271;
+  fra.me.line = 1747;
   fra.me.meth = LOCATE_parser___parser_nodes___Start___n_eof;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_nodes.nit:1271 */
+  /* parser/parser_nodes.nit:1747 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_parser___parser_nodes, 1271);
+    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_parser___parser_nodes, 1747);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_parser___parser_nodes___Start___n_eof__eq[] = "parser_nodes::Start::n_eof=";
+void parser___parser_nodes___Start___n_eof__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_nodes;
+  fra.me.line = 1747;
+  fra.me.meth = LOCATE_parser___parser_nodes___Start___n_eof__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1747 */
+  ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 static const char LOCATE_parser___parser_nodes___Start___init[] = "parser_nodes::Start::init";
 void parser___parser_nodes___Start___init(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___Start].i;
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___Start].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
-  if (init_table[itpos1]) return;
+  if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_nodes;
-  fra.me.line = 1272;
+  fra.me.line = 1748;
   fra.me.meth = LOCATE_parser___parser_nodes___Start___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -7291,11 +13381,11 @@ void parser___parser_nodes___Start___init(val_t p0, val_t p1, val_t p2, int* ini
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_nodes.nit:1274 */
+  /* parser/parser_nodes.nit:1750 */
   ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_nodes.nit:1275 */
+  /* parser/parser_nodes.nit:1751 */
   ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
-  init_table[itpos1] = 1;
+  init_table[itpos3] = 1;
   return;
 }
index de5377f..0e6d27d 100644 (file)
@@ -6,10 +6,14 @@
 
 extern const classtable_elt_t VFT_parser___parser_nodes___ANode[];
 
+extern const classtable_elt_t VFT_parser___parser_nodes___ANodes[];
+
 extern const classtable_elt_t VFT_parser___parser_nodes___Token[];
 
 extern const classtable_elt_t VFT_parser___parser_nodes___Prod[];
 
+extern const classtable_elt_t VFT_parser___parser_nodes___Visitor[];
+
 extern const classtable_elt_t VFT_parser___parser_nodes___TEol[];
 
 extern const classtable_elt_t VFT_parser___parser_nodes___TComment[];
@@ -594,1480 +598,1836 @@ extern const int SFT_parser___parser_nodes[];
 #define ID_parser___parser_nodes___ANode (SFT_parser___parser_nodes[0])
 #define COLOR_parser___parser_nodes___ANode (SFT_parser___parser_nodes[1])
 #define ATTR_parser___parser_nodes___ANode____location(recv) ATTR(recv, (SFT_parser___parser_nodes[2] + 0))
+#define ATTR_parser___parser_nodes___ANode_____atparent(recv) ATTR(recv, (SFT_parser___parser_nodes[2] + 1))
 #define INIT_TABLE_POS_parser___parser_nodes___ANode (SFT_parser___parser_nodes[3] + 0)
 #define CALL_parser___parser_nodes___ANode___location(recv) ((parser___parser_nodes___ANode___location_t)CALL((recv), (SFT_parser___parser_nodes[3] + 1)))
 #define CALL_parser___parser_nodes___ANode___hot_location(recv) ((parser___parser_nodes___ANode___hot_location_t)CALL((recv), (SFT_parser___parser_nodes[3] + 2)))
-#define CALL_parser___parser_nodes___ANode___init(recv) ((parser___parser_nodes___ANode___init_t)CALL((recv), (SFT_parser___parser_nodes[3] + 3)))
-#define CALL_parser___parser_nodes___ANode___debug(recv) ((parser___parser_nodes___ANode___debug_t)CALL((recv), (SFT_parser___parser_nodes[3] + 4)))
-#define ID_parser___parser_nodes___Token (SFT_parser___parser_nodes[4])
-#define COLOR_parser___parser_nodes___Token (SFT_parser___parser_nodes[5])
-#define INIT_TABLE_POS_parser___parser_nodes___Token (SFT_parser___parser_nodes[6] + 0)
-#define CALL_parser___parser_nodes___Token___text(recv) ((parser___parser_nodes___Token___text_t)CALL((recv), (SFT_parser___parser_nodes[6] + 1)))
-#define CALL_parser___parser_nodes___Token___text__eq(recv) ((parser___parser_nodes___Token___text__eq_t)CALL((recv), (SFT_parser___parser_nodes[6] + 2)))
-#define ID_parser___parser_nodes___Prod (SFT_parser___parser_nodes[7])
-#define COLOR_parser___parser_nodes___Prod (SFT_parser___parser_nodes[8])
-#define ATTR_parser___parser_nodes___Prod____n_annotations(recv) ATTR(recv, (SFT_parser___parser_nodes[9] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___Prod (SFT_parser___parser_nodes[10] + 0)
-#define CALL_parser___parser_nodes___Prod___location__eq(recv) ((parser___parser_nodes___Prod___location__eq_t)CALL((recv), (SFT_parser___parser_nodes[10] + 1)))
-#define CALL_parser___parser_nodes___Prod___n_annotations(recv) ((parser___parser_nodes___Prod___n_annotations_t)CALL((recv), (SFT_parser___parser_nodes[10] + 2)))
-#define ID_parser___parser_nodes___TEol (SFT_parser___parser_nodes[11])
-#define COLOR_parser___parser_nodes___TEol (SFT_parser___parser_nodes[12])
-#define INIT_TABLE_POS_parser___parser_nodes___TEol (SFT_parser___parser_nodes[13] + 0)
-#define ID_parser___parser_nodes___TComment (SFT_parser___parser_nodes[14])
-#define COLOR_parser___parser_nodes___TComment (SFT_parser___parser_nodes[15])
-#define INIT_TABLE_POS_parser___parser_nodes___TComment (SFT_parser___parser_nodes[16] + 0)
-#define ID_parser___parser_nodes___TokenKeyword (SFT_parser___parser_nodes[17])
-#define COLOR_parser___parser_nodes___TokenKeyword (SFT_parser___parser_nodes[18])
-#define INIT_TABLE_POS_parser___parser_nodes___TokenKeyword (SFT_parser___parser_nodes[19] + 0)
-#define ID_parser___parser_nodes___TKwmodule (SFT_parser___parser_nodes[20])
-#define COLOR_parser___parser_nodes___TKwmodule (SFT_parser___parser_nodes[21])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwmodule (SFT_parser___parser_nodes[22] + 0)
-#define ID_parser___parser_nodes___TKwimport (SFT_parser___parser_nodes[23])
-#define COLOR_parser___parser_nodes___TKwimport (SFT_parser___parser_nodes[24])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwimport (SFT_parser___parser_nodes[25] + 0)
-#define ID_parser___parser_nodes___TKwclass (SFT_parser___parser_nodes[26])
-#define COLOR_parser___parser_nodes___TKwclass (SFT_parser___parser_nodes[27])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwclass (SFT_parser___parser_nodes[28] + 0)
-#define ID_parser___parser_nodes___TKwabstract (SFT_parser___parser_nodes[29])
-#define COLOR_parser___parser_nodes___TKwabstract (SFT_parser___parser_nodes[30])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwabstract (SFT_parser___parser_nodes[31] + 0)
-#define ID_parser___parser_nodes___TKwinterface (SFT_parser___parser_nodes[32])
-#define COLOR_parser___parser_nodes___TKwinterface (SFT_parser___parser_nodes[33])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwinterface (SFT_parser___parser_nodes[34] + 0)
-#define ID_parser___parser_nodes___TKwenum (SFT_parser___parser_nodes[35])
-#define COLOR_parser___parser_nodes___TKwenum (SFT_parser___parser_nodes[36])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwenum (SFT_parser___parser_nodes[37] + 0)
-#define ID_parser___parser_nodes___TKwend (SFT_parser___parser_nodes[38])
-#define COLOR_parser___parser_nodes___TKwend (SFT_parser___parser_nodes[39])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwend (SFT_parser___parser_nodes[40] + 0)
-#define ID_parser___parser_nodes___TKwmeth (SFT_parser___parser_nodes[41])
-#define COLOR_parser___parser_nodes___TKwmeth (SFT_parser___parser_nodes[42])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwmeth (SFT_parser___parser_nodes[43] + 0)
-#define ID_parser___parser_nodes___TKwtype (SFT_parser___parser_nodes[44])
-#define COLOR_parser___parser_nodes___TKwtype (SFT_parser___parser_nodes[45])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwtype (SFT_parser___parser_nodes[46] + 0)
-#define ID_parser___parser_nodes___TKwinit (SFT_parser___parser_nodes[47])
-#define COLOR_parser___parser_nodes___TKwinit (SFT_parser___parser_nodes[48])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwinit (SFT_parser___parser_nodes[49] + 0)
-#define ID_parser___parser_nodes___TKwredef (SFT_parser___parser_nodes[50])
-#define COLOR_parser___parser_nodes___TKwredef (SFT_parser___parser_nodes[51])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwredef (SFT_parser___parser_nodes[52] + 0)
-#define ID_parser___parser_nodes___TKwis (SFT_parser___parser_nodes[53])
-#define COLOR_parser___parser_nodes___TKwis (SFT_parser___parser_nodes[54])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwis (SFT_parser___parser_nodes[55] + 0)
-#define ID_parser___parser_nodes___TKwdo (SFT_parser___parser_nodes[56])
-#define COLOR_parser___parser_nodes___TKwdo (SFT_parser___parser_nodes[57])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwdo (SFT_parser___parser_nodes[58] + 0)
-#define ID_parser___parser_nodes___TKwreadable (SFT_parser___parser_nodes[59])
-#define COLOR_parser___parser_nodes___TKwreadable (SFT_parser___parser_nodes[60])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwreadable (SFT_parser___parser_nodes[61] + 0)
-#define ID_parser___parser_nodes___TKwwritable (SFT_parser___parser_nodes[62])
-#define COLOR_parser___parser_nodes___TKwwritable (SFT_parser___parser_nodes[63])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwwritable (SFT_parser___parser_nodes[64] + 0)
-#define ID_parser___parser_nodes___TKwvar (SFT_parser___parser_nodes[65])
-#define COLOR_parser___parser_nodes___TKwvar (SFT_parser___parser_nodes[66])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwvar (SFT_parser___parser_nodes[67] + 0)
-#define ID_parser___parser_nodes___TKwintern (SFT_parser___parser_nodes[68])
-#define COLOR_parser___parser_nodes___TKwintern (SFT_parser___parser_nodes[69])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwintern (SFT_parser___parser_nodes[70] + 0)
-#define ID_parser___parser_nodes___TKwextern (SFT_parser___parser_nodes[71])
-#define COLOR_parser___parser_nodes___TKwextern (SFT_parser___parser_nodes[72])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwextern (SFT_parser___parser_nodes[73] + 0)
-#define ID_parser___parser_nodes___TKwprotected (SFT_parser___parser_nodes[74])
-#define COLOR_parser___parser_nodes___TKwprotected (SFT_parser___parser_nodes[75])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwprotected (SFT_parser___parser_nodes[76] + 0)
-#define ID_parser___parser_nodes___TKwprivate (SFT_parser___parser_nodes[77])
-#define COLOR_parser___parser_nodes___TKwprivate (SFT_parser___parser_nodes[78])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwprivate (SFT_parser___parser_nodes[79] + 0)
-#define ID_parser___parser_nodes___TKwintrude (SFT_parser___parser_nodes[80])
-#define COLOR_parser___parser_nodes___TKwintrude (SFT_parser___parser_nodes[81])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwintrude (SFT_parser___parser_nodes[82] + 0)
-#define ID_parser___parser_nodes___TKwif (SFT_parser___parser_nodes[83])
-#define COLOR_parser___parser_nodes___TKwif (SFT_parser___parser_nodes[84])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwif (SFT_parser___parser_nodes[85] + 0)
-#define ID_parser___parser_nodes___TKwthen (SFT_parser___parser_nodes[86])
-#define COLOR_parser___parser_nodes___TKwthen (SFT_parser___parser_nodes[87])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwthen (SFT_parser___parser_nodes[88] + 0)
-#define ID_parser___parser_nodes___TKwelse (SFT_parser___parser_nodes[89])
-#define COLOR_parser___parser_nodes___TKwelse (SFT_parser___parser_nodes[90])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwelse (SFT_parser___parser_nodes[91] + 0)
-#define ID_parser___parser_nodes___TKwwhile (SFT_parser___parser_nodes[92])
-#define COLOR_parser___parser_nodes___TKwwhile (SFT_parser___parser_nodes[93])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwwhile (SFT_parser___parser_nodes[94] + 0)
-#define ID_parser___parser_nodes___TKwloop (SFT_parser___parser_nodes[95])
-#define COLOR_parser___parser_nodes___TKwloop (SFT_parser___parser_nodes[96])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwloop (SFT_parser___parser_nodes[97] + 0)
-#define ID_parser___parser_nodes___TKwfor (SFT_parser___parser_nodes[98])
-#define COLOR_parser___parser_nodes___TKwfor (SFT_parser___parser_nodes[99])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwfor (SFT_parser___parser_nodes[100] + 0)
-#define ID_parser___parser_nodes___TKwin (SFT_parser___parser_nodes[101])
-#define COLOR_parser___parser_nodes___TKwin (SFT_parser___parser_nodes[102])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwin (SFT_parser___parser_nodes[103] + 0)
-#define ID_parser___parser_nodes___TKwand (SFT_parser___parser_nodes[104])
-#define COLOR_parser___parser_nodes___TKwand (SFT_parser___parser_nodes[105])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwand (SFT_parser___parser_nodes[106] + 0)
-#define ID_parser___parser_nodes___TKwor (SFT_parser___parser_nodes[107])
-#define COLOR_parser___parser_nodes___TKwor (SFT_parser___parser_nodes[108])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwor (SFT_parser___parser_nodes[109] + 0)
-#define ID_parser___parser_nodes___TKwnot (SFT_parser___parser_nodes[110])
-#define COLOR_parser___parser_nodes___TKwnot (SFT_parser___parser_nodes[111])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwnot (SFT_parser___parser_nodes[112] + 0)
-#define ID_parser___parser_nodes___TKwreturn (SFT_parser___parser_nodes[113])
-#define COLOR_parser___parser_nodes___TKwreturn (SFT_parser___parser_nodes[114])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwreturn (SFT_parser___parser_nodes[115] + 0)
-#define ID_parser___parser_nodes___TKwcontinue (SFT_parser___parser_nodes[116])
-#define COLOR_parser___parser_nodes___TKwcontinue (SFT_parser___parser_nodes[117])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwcontinue (SFT_parser___parser_nodes[118] + 0)
-#define ID_parser___parser_nodes___TKwbreak (SFT_parser___parser_nodes[119])
-#define COLOR_parser___parser_nodes___TKwbreak (SFT_parser___parser_nodes[120])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwbreak (SFT_parser___parser_nodes[121] + 0)
-#define ID_parser___parser_nodes___TKwabort (SFT_parser___parser_nodes[122])
-#define COLOR_parser___parser_nodes___TKwabort (SFT_parser___parser_nodes[123])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwabort (SFT_parser___parser_nodes[124] + 0)
-#define ID_parser___parser_nodes___TKwassert (SFT_parser___parser_nodes[125])
-#define COLOR_parser___parser_nodes___TKwassert (SFT_parser___parser_nodes[126])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwassert (SFT_parser___parser_nodes[127] + 0)
-#define ID_parser___parser_nodes___TKwnew (SFT_parser___parser_nodes[128])
-#define COLOR_parser___parser_nodes___TKwnew (SFT_parser___parser_nodes[129])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwnew (SFT_parser___parser_nodes[130] + 0)
-#define ID_parser___parser_nodes___TKwisa (SFT_parser___parser_nodes[131])
-#define COLOR_parser___parser_nodes___TKwisa (SFT_parser___parser_nodes[132])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwisa (SFT_parser___parser_nodes[133] + 0)
-#define ID_parser___parser_nodes___TKwonce (SFT_parser___parser_nodes[134])
-#define COLOR_parser___parser_nodes___TKwonce (SFT_parser___parser_nodes[135])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwonce (SFT_parser___parser_nodes[136] + 0)
-#define ID_parser___parser_nodes___TKwsuper (SFT_parser___parser_nodes[137])
-#define COLOR_parser___parser_nodes___TKwsuper (SFT_parser___parser_nodes[138])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwsuper (SFT_parser___parser_nodes[139] + 0)
-#define ID_parser___parser_nodes___TKwself (SFT_parser___parser_nodes[140])
-#define COLOR_parser___parser_nodes___TKwself (SFT_parser___parser_nodes[141])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwself (SFT_parser___parser_nodes[142] + 0)
-#define ID_parser___parser_nodes___TKwtrue (SFT_parser___parser_nodes[143])
-#define COLOR_parser___parser_nodes___TKwtrue (SFT_parser___parser_nodes[144])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwtrue (SFT_parser___parser_nodes[145] + 0)
-#define ID_parser___parser_nodes___TKwfalse (SFT_parser___parser_nodes[146])
-#define COLOR_parser___parser_nodes___TKwfalse (SFT_parser___parser_nodes[147])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwfalse (SFT_parser___parser_nodes[148] + 0)
-#define ID_parser___parser_nodes___TKwnull (SFT_parser___parser_nodes[149])
-#define COLOR_parser___parser_nodes___TKwnull (SFT_parser___parser_nodes[150])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwnull (SFT_parser___parser_nodes[151] + 0)
-#define ID_parser___parser_nodes___TKwas (SFT_parser___parser_nodes[152])
-#define COLOR_parser___parser_nodes___TKwas (SFT_parser___parser_nodes[153])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwas (SFT_parser___parser_nodes[154] + 0)
-#define ID_parser___parser_nodes___TKwnullable (SFT_parser___parser_nodes[155])
-#define COLOR_parser___parser_nodes___TKwnullable (SFT_parser___parser_nodes[156])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwnullable (SFT_parser___parser_nodes[157] + 0)
-#define ID_parser___parser_nodes___TKwisset (SFT_parser___parser_nodes[158])
-#define COLOR_parser___parser_nodes___TKwisset (SFT_parser___parser_nodes[159])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwisset (SFT_parser___parser_nodes[160] + 0)
-#define ID_parser___parser_nodes___TKwlabel (SFT_parser___parser_nodes[161])
-#define COLOR_parser___parser_nodes___TKwlabel (SFT_parser___parser_nodes[162])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwlabel (SFT_parser___parser_nodes[163] + 0)
-#define ID_parser___parser_nodes___TKwdebug (SFT_parser___parser_nodes[164])
-#define COLOR_parser___parser_nodes___TKwdebug (SFT_parser___parser_nodes[165])
-#define INIT_TABLE_POS_parser___parser_nodes___TKwdebug (SFT_parser___parser_nodes[166] + 0)
-#define ID_parser___parser_nodes___TOpar (SFT_parser___parser_nodes[167])
-#define COLOR_parser___parser_nodes___TOpar (SFT_parser___parser_nodes[168])
-#define INIT_TABLE_POS_parser___parser_nodes___TOpar (SFT_parser___parser_nodes[169] + 0)
-#define ID_parser___parser_nodes___TCpar (SFT_parser___parser_nodes[170])
-#define COLOR_parser___parser_nodes___TCpar (SFT_parser___parser_nodes[171])
-#define INIT_TABLE_POS_parser___parser_nodes___TCpar (SFT_parser___parser_nodes[172] + 0)
-#define ID_parser___parser_nodes___TObra (SFT_parser___parser_nodes[173])
-#define COLOR_parser___parser_nodes___TObra (SFT_parser___parser_nodes[174])
-#define INIT_TABLE_POS_parser___parser_nodes___TObra (SFT_parser___parser_nodes[175] + 0)
-#define ID_parser___parser_nodes___TCbra (SFT_parser___parser_nodes[176])
-#define COLOR_parser___parser_nodes___TCbra (SFT_parser___parser_nodes[177])
-#define INIT_TABLE_POS_parser___parser_nodes___TCbra (SFT_parser___parser_nodes[178] + 0)
-#define ID_parser___parser_nodes___TComma (SFT_parser___parser_nodes[179])
-#define COLOR_parser___parser_nodes___TComma (SFT_parser___parser_nodes[180])
-#define INIT_TABLE_POS_parser___parser_nodes___TComma (SFT_parser___parser_nodes[181] + 0)
-#define ID_parser___parser_nodes___TColumn (SFT_parser___parser_nodes[182])
-#define COLOR_parser___parser_nodes___TColumn (SFT_parser___parser_nodes[183])
-#define INIT_TABLE_POS_parser___parser_nodes___TColumn (SFT_parser___parser_nodes[184] + 0)
-#define ID_parser___parser_nodes___TQuad (SFT_parser___parser_nodes[185])
-#define COLOR_parser___parser_nodes___TQuad (SFT_parser___parser_nodes[186])
-#define INIT_TABLE_POS_parser___parser_nodes___TQuad (SFT_parser___parser_nodes[187] + 0)
-#define ID_parser___parser_nodes___TAssign (SFT_parser___parser_nodes[188])
-#define COLOR_parser___parser_nodes___TAssign (SFT_parser___parser_nodes[189])
-#define INIT_TABLE_POS_parser___parser_nodes___TAssign (SFT_parser___parser_nodes[190] + 0)
-#define ID_parser___parser_nodes___TokenOperator (SFT_parser___parser_nodes[191])
-#define COLOR_parser___parser_nodes___TokenOperator (SFT_parser___parser_nodes[192])
-#define INIT_TABLE_POS_parser___parser_nodes___TokenOperator (SFT_parser___parser_nodes[193] + 0)
-#define ID_parser___parser_nodes___TPluseq (SFT_parser___parser_nodes[194])
-#define COLOR_parser___parser_nodes___TPluseq (SFT_parser___parser_nodes[195])
-#define INIT_TABLE_POS_parser___parser_nodes___TPluseq (SFT_parser___parser_nodes[196] + 0)
-#define ID_parser___parser_nodes___TMinuseq (SFT_parser___parser_nodes[197])
-#define COLOR_parser___parser_nodes___TMinuseq (SFT_parser___parser_nodes[198])
-#define INIT_TABLE_POS_parser___parser_nodes___TMinuseq (SFT_parser___parser_nodes[199] + 0)
-#define ID_parser___parser_nodes___TDotdotdot (SFT_parser___parser_nodes[200])
-#define COLOR_parser___parser_nodes___TDotdotdot (SFT_parser___parser_nodes[201])
-#define INIT_TABLE_POS_parser___parser_nodes___TDotdotdot (SFT_parser___parser_nodes[202] + 0)
-#define ID_parser___parser_nodes___TDotdot (SFT_parser___parser_nodes[203])
-#define COLOR_parser___parser_nodes___TDotdot (SFT_parser___parser_nodes[204])
-#define INIT_TABLE_POS_parser___parser_nodes___TDotdot (SFT_parser___parser_nodes[205] + 0)
-#define ID_parser___parser_nodes___TDot (SFT_parser___parser_nodes[206])
-#define COLOR_parser___parser_nodes___TDot (SFT_parser___parser_nodes[207])
-#define INIT_TABLE_POS_parser___parser_nodes___TDot (SFT_parser___parser_nodes[208] + 0)
-#define ID_parser___parser_nodes___TPlus (SFT_parser___parser_nodes[209])
-#define COLOR_parser___parser_nodes___TPlus (SFT_parser___parser_nodes[210])
-#define INIT_TABLE_POS_parser___parser_nodes___TPlus (SFT_parser___parser_nodes[211] + 0)
-#define ID_parser___parser_nodes___TMinus (SFT_parser___parser_nodes[212])
-#define COLOR_parser___parser_nodes___TMinus (SFT_parser___parser_nodes[213])
-#define INIT_TABLE_POS_parser___parser_nodes___TMinus (SFT_parser___parser_nodes[214] + 0)
-#define ID_parser___parser_nodes___TStar (SFT_parser___parser_nodes[215])
-#define COLOR_parser___parser_nodes___TStar (SFT_parser___parser_nodes[216])
-#define INIT_TABLE_POS_parser___parser_nodes___TStar (SFT_parser___parser_nodes[217] + 0)
-#define ID_parser___parser_nodes___TSlash (SFT_parser___parser_nodes[218])
-#define COLOR_parser___parser_nodes___TSlash (SFT_parser___parser_nodes[219])
-#define INIT_TABLE_POS_parser___parser_nodes___TSlash (SFT_parser___parser_nodes[220] + 0)
-#define ID_parser___parser_nodes___TPercent (SFT_parser___parser_nodes[221])
-#define COLOR_parser___parser_nodes___TPercent (SFT_parser___parser_nodes[222])
-#define INIT_TABLE_POS_parser___parser_nodes___TPercent (SFT_parser___parser_nodes[223] + 0)
-#define ID_parser___parser_nodes___TEq (SFT_parser___parser_nodes[224])
-#define COLOR_parser___parser_nodes___TEq (SFT_parser___parser_nodes[225])
-#define INIT_TABLE_POS_parser___parser_nodes___TEq (SFT_parser___parser_nodes[226] + 0)
-#define ID_parser___parser_nodes___TNe (SFT_parser___parser_nodes[227])
-#define COLOR_parser___parser_nodes___TNe (SFT_parser___parser_nodes[228])
-#define INIT_TABLE_POS_parser___parser_nodes___TNe (SFT_parser___parser_nodes[229] + 0)
-#define ID_parser___parser_nodes___TLt (SFT_parser___parser_nodes[230])
-#define COLOR_parser___parser_nodes___TLt (SFT_parser___parser_nodes[231])
-#define INIT_TABLE_POS_parser___parser_nodes___TLt (SFT_parser___parser_nodes[232] + 0)
-#define ID_parser___parser_nodes___TLe (SFT_parser___parser_nodes[233])
-#define COLOR_parser___parser_nodes___TLe (SFT_parser___parser_nodes[234])
-#define INIT_TABLE_POS_parser___parser_nodes___TLe (SFT_parser___parser_nodes[235] + 0)
-#define ID_parser___parser_nodes___TLl (SFT_parser___parser_nodes[236])
-#define COLOR_parser___parser_nodes___TLl (SFT_parser___parser_nodes[237])
-#define INIT_TABLE_POS_parser___parser_nodes___TLl (SFT_parser___parser_nodes[238] + 0)
-#define ID_parser___parser_nodes___TGt (SFT_parser___parser_nodes[239])
-#define COLOR_parser___parser_nodes___TGt (SFT_parser___parser_nodes[240])
-#define INIT_TABLE_POS_parser___parser_nodes___TGt (SFT_parser___parser_nodes[241] + 0)
-#define ID_parser___parser_nodes___TGe (SFT_parser___parser_nodes[242])
-#define COLOR_parser___parser_nodes___TGe (SFT_parser___parser_nodes[243])
-#define INIT_TABLE_POS_parser___parser_nodes___TGe (SFT_parser___parser_nodes[244] + 0)
-#define ID_parser___parser_nodes___TGg (SFT_parser___parser_nodes[245])
-#define COLOR_parser___parser_nodes___TGg (SFT_parser___parser_nodes[246])
-#define INIT_TABLE_POS_parser___parser_nodes___TGg (SFT_parser___parser_nodes[247] + 0)
-#define ID_parser___parser_nodes___TStarship (SFT_parser___parser_nodes[248])
-#define COLOR_parser___parser_nodes___TStarship (SFT_parser___parser_nodes[249])
-#define INIT_TABLE_POS_parser___parser_nodes___TStarship (SFT_parser___parser_nodes[250] + 0)
-#define ID_parser___parser_nodes___TBang (SFT_parser___parser_nodes[251])
-#define COLOR_parser___parser_nodes___TBang (SFT_parser___parser_nodes[252])
-#define INIT_TABLE_POS_parser___parser_nodes___TBang (SFT_parser___parser_nodes[253] + 0)
-#define ID_parser___parser_nodes___TAt (SFT_parser___parser_nodes[254])
-#define COLOR_parser___parser_nodes___TAt (SFT_parser___parser_nodes[255])
-#define INIT_TABLE_POS_parser___parser_nodes___TAt (SFT_parser___parser_nodes[256] + 0)
-#define ID_parser___parser_nodes___TClassid (SFT_parser___parser_nodes[257])
-#define COLOR_parser___parser_nodes___TClassid (SFT_parser___parser_nodes[258])
-#define INIT_TABLE_POS_parser___parser_nodes___TClassid (SFT_parser___parser_nodes[259] + 0)
-#define ID_parser___parser_nodes___TId (SFT_parser___parser_nodes[260])
-#define COLOR_parser___parser_nodes___TId (SFT_parser___parser_nodes[261])
-#define INIT_TABLE_POS_parser___parser_nodes___TId (SFT_parser___parser_nodes[262] + 0)
-#define ID_parser___parser_nodes___TAttrid (SFT_parser___parser_nodes[263])
-#define COLOR_parser___parser_nodes___TAttrid (SFT_parser___parser_nodes[264])
-#define INIT_TABLE_POS_parser___parser_nodes___TAttrid (SFT_parser___parser_nodes[265] + 0)
-#define ID_parser___parser_nodes___TokenLiteral (SFT_parser___parser_nodes[266])
-#define COLOR_parser___parser_nodes___TokenLiteral (SFT_parser___parser_nodes[267])
-#define INIT_TABLE_POS_parser___parser_nodes___TokenLiteral (SFT_parser___parser_nodes[268] + 0)
-#define ID_parser___parser_nodes___TNumber (SFT_parser___parser_nodes[269])
-#define COLOR_parser___parser_nodes___TNumber (SFT_parser___parser_nodes[270])
-#define INIT_TABLE_POS_parser___parser_nodes___TNumber (SFT_parser___parser_nodes[271] + 0)
-#define ID_parser___parser_nodes___TFloat (SFT_parser___parser_nodes[272])
-#define COLOR_parser___parser_nodes___TFloat (SFT_parser___parser_nodes[273])
-#define INIT_TABLE_POS_parser___parser_nodes___TFloat (SFT_parser___parser_nodes[274] + 0)
-#define ID_parser___parser_nodes___TChar (SFT_parser___parser_nodes[275])
-#define COLOR_parser___parser_nodes___TChar (SFT_parser___parser_nodes[276])
-#define INIT_TABLE_POS_parser___parser_nodes___TChar (SFT_parser___parser_nodes[277] + 0)
-#define ID_parser___parser_nodes___TString (SFT_parser___parser_nodes[278])
-#define COLOR_parser___parser_nodes___TString (SFT_parser___parser_nodes[279])
-#define INIT_TABLE_POS_parser___parser_nodes___TString (SFT_parser___parser_nodes[280] + 0)
-#define ID_parser___parser_nodes___TStartString (SFT_parser___parser_nodes[281])
-#define COLOR_parser___parser_nodes___TStartString (SFT_parser___parser_nodes[282])
-#define INIT_TABLE_POS_parser___parser_nodes___TStartString (SFT_parser___parser_nodes[283] + 0)
-#define ID_parser___parser_nodes___TMidString (SFT_parser___parser_nodes[284])
-#define COLOR_parser___parser_nodes___TMidString (SFT_parser___parser_nodes[285])
-#define INIT_TABLE_POS_parser___parser_nodes___TMidString (SFT_parser___parser_nodes[286] + 0)
-#define ID_parser___parser_nodes___TEndString (SFT_parser___parser_nodes[287])
-#define COLOR_parser___parser_nodes___TEndString (SFT_parser___parser_nodes[288])
-#define INIT_TABLE_POS_parser___parser_nodes___TEndString (SFT_parser___parser_nodes[289] + 0)
-#define ID_parser___parser_nodes___TBadString (SFT_parser___parser_nodes[290])
-#define COLOR_parser___parser_nodes___TBadString (SFT_parser___parser_nodes[291])
-#define INIT_TABLE_POS_parser___parser_nodes___TBadString (SFT_parser___parser_nodes[292] + 0)
-#define ID_parser___parser_nodes___TBadChar (SFT_parser___parser_nodes[293])
-#define COLOR_parser___parser_nodes___TBadChar (SFT_parser___parser_nodes[294])
-#define INIT_TABLE_POS_parser___parser_nodes___TBadChar (SFT_parser___parser_nodes[295] + 0)
-#define ID_parser___parser_nodes___TExternCodeSegment (SFT_parser___parser_nodes[296])
-#define COLOR_parser___parser_nodes___TExternCodeSegment (SFT_parser___parser_nodes[297])
-#define INIT_TABLE_POS_parser___parser_nodes___TExternCodeSegment (SFT_parser___parser_nodes[298] + 0)
-#define ID_parser___parser_nodes___EOF (SFT_parser___parser_nodes[299])
-#define COLOR_parser___parser_nodes___EOF (SFT_parser___parser_nodes[300])
-#define INIT_TABLE_POS_parser___parser_nodes___EOF (SFT_parser___parser_nodes[301] + 0)
-#define ID_parser___parser_nodes___AError (SFT_parser___parser_nodes[302])
-#define COLOR_parser___parser_nodes___AError (SFT_parser___parser_nodes[303])
-#define INIT_TABLE_POS_parser___parser_nodes___AError (SFT_parser___parser_nodes[304] + 0)
-#define ID_parser___parser_nodes___ALexerError (SFT_parser___parser_nodes[305])
-#define COLOR_parser___parser_nodes___ALexerError (SFT_parser___parser_nodes[306])
-#define INIT_TABLE_POS_parser___parser_nodes___ALexerError (SFT_parser___parser_nodes[307] + 0)
-#define ID_parser___parser_nodes___AParserError (SFT_parser___parser_nodes[308])
-#define COLOR_parser___parser_nodes___AParserError (SFT_parser___parser_nodes[309])
-#define INIT_TABLE_POS_parser___parser_nodes___AParserError (SFT_parser___parser_nodes[310] + 0)
-#define ID_parser___parser_nodes___AModule (SFT_parser___parser_nodes[311])
-#define COLOR_parser___parser_nodes___AModule (SFT_parser___parser_nodes[312])
-#define ATTR_parser___parser_nodes___AModule____n_moduledecl(recv) ATTR(recv, (SFT_parser___parser_nodes[313] + 0))
-#define ATTR_parser___parser_nodes___AModule____n_imports(recv) ATTR(recv, (SFT_parser___parser_nodes[313] + 1))
-#define ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(recv) ATTR(recv, (SFT_parser___parser_nodes[313] + 2))
-#define ATTR_parser___parser_nodes___AModule____n_classdefs(recv) ATTR(recv, (SFT_parser___parser_nodes[313] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AModule (SFT_parser___parser_nodes[314] + 0)
-#define CALL_parser___parser_nodes___AModule___n_moduledecl(recv) ((parser___parser_nodes___AModule___n_moduledecl_t)CALL((recv), (SFT_parser___parser_nodes[314] + 1)))
-#define CALL_parser___parser_nodes___AModule___n_imports(recv) ((parser___parser_nodes___AModule___n_imports_t)CALL((recv), (SFT_parser___parser_nodes[314] + 2)))
-#define CALL_parser___parser_nodes___AModule___n_extern_code_blocks(recv) ((parser___parser_nodes___AModule___n_extern_code_blocks_t)CALL((recv), (SFT_parser___parser_nodes[314] + 3)))
-#define CALL_parser___parser_nodes___AModule___n_classdefs(recv) ((parser___parser_nodes___AModule___n_classdefs_t)CALL((recv), (SFT_parser___parser_nodes[314] + 4)))
-#define ID_parser___parser_nodes___AModuledecl (SFT_parser___parser_nodes[315])
-#define COLOR_parser___parser_nodes___AModuledecl (SFT_parser___parser_nodes[316])
-#define ATTR_parser___parser_nodes___AModuledecl____n_doc(recv) ATTR(recv, (SFT_parser___parser_nodes[317] + 0))
-#define ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(recv) ATTR(recv, (SFT_parser___parser_nodes[317] + 1))
-#define ATTR_parser___parser_nodes___AModuledecl____n_name(recv) ATTR(recv, (SFT_parser___parser_nodes[317] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AModuledecl (SFT_parser___parser_nodes[318] + 0)
-#define CALL_parser___parser_nodes___AModuledecl___n_doc(recv) ((parser___parser_nodes___AModuledecl___n_doc_t)CALL((recv), (SFT_parser___parser_nodes[318] + 1)))
-#define CALL_parser___parser_nodes___AModuledecl___n_kwmodule(recv) ((parser___parser_nodes___AModuledecl___n_kwmodule_t)CALL((recv), (SFT_parser___parser_nodes[318] + 2)))
-#define CALL_parser___parser_nodes___AModuledecl___n_name(recv) ((parser___parser_nodes___AModuledecl___n_name_t)CALL((recv), (SFT_parser___parser_nodes[318] + 3)))
-#define ID_parser___parser_nodes___AImport (SFT_parser___parser_nodes[319])
-#define COLOR_parser___parser_nodes___AImport (SFT_parser___parser_nodes[320])
-#define INIT_TABLE_POS_parser___parser_nodes___AImport (SFT_parser___parser_nodes[321] + 0)
-#define ID_parser___parser_nodes___AStdImport (SFT_parser___parser_nodes[322])
-#define COLOR_parser___parser_nodes___AStdImport (SFT_parser___parser_nodes[323])
-#define ATTR_parser___parser_nodes___AStdImport____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[324] + 0))
-#define ATTR_parser___parser_nodes___AStdImport____n_kwimport(recv) ATTR(recv, (SFT_parser___parser_nodes[324] + 1))
-#define ATTR_parser___parser_nodes___AStdImport____n_name(recv) ATTR(recv, (SFT_parser___parser_nodes[324] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AStdImport (SFT_parser___parser_nodes[325] + 0)
-#define CALL_parser___parser_nodes___AStdImport___n_visibility(recv) ((parser___parser_nodes___AStdImport___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[325] + 1)))
-#define CALL_parser___parser_nodes___AStdImport___n_kwimport(recv) ((parser___parser_nodes___AStdImport___n_kwimport_t)CALL((recv), (SFT_parser___parser_nodes[325] + 2)))
-#define CALL_parser___parser_nodes___AStdImport___n_name(recv) ((parser___parser_nodes___AStdImport___n_name_t)CALL((recv), (SFT_parser___parser_nodes[325] + 3)))
-#define ID_parser___parser_nodes___ANoImport (SFT_parser___parser_nodes[326])
-#define COLOR_parser___parser_nodes___ANoImport (SFT_parser___parser_nodes[327])
-#define ATTR_parser___parser_nodes___ANoImport____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[328] + 0))
-#define ATTR_parser___parser_nodes___ANoImport____n_kwimport(recv) ATTR(recv, (SFT_parser___parser_nodes[328] + 1))
-#define ATTR_parser___parser_nodes___ANoImport____n_kwend(recv) ATTR(recv, (SFT_parser___parser_nodes[328] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___ANoImport (SFT_parser___parser_nodes[329] + 0)
-#define CALL_parser___parser_nodes___ANoImport___n_visibility(recv) ((parser___parser_nodes___ANoImport___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[329] + 1)))
-#define CALL_parser___parser_nodes___ANoImport___n_kwimport(recv) ((parser___parser_nodes___ANoImport___n_kwimport_t)CALL((recv), (SFT_parser___parser_nodes[329] + 2)))
-#define CALL_parser___parser_nodes___ANoImport___n_kwend(recv) ((parser___parser_nodes___ANoImport___n_kwend_t)CALL((recv), (SFT_parser___parser_nodes[329] + 3)))
-#define ID_parser___parser_nodes___AVisibility (SFT_parser___parser_nodes[330])
-#define COLOR_parser___parser_nodes___AVisibility (SFT_parser___parser_nodes[331])
-#define INIT_TABLE_POS_parser___parser_nodes___AVisibility (SFT_parser___parser_nodes[332] + 0)
-#define ID_parser___parser_nodes___APublicVisibility (SFT_parser___parser_nodes[333])
-#define COLOR_parser___parser_nodes___APublicVisibility (SFT_parser___parser_nodes[334])
-#define INIT_TABLE_POS_parser___parser_nodes___APublicVisibility (SFT_parser___parser_nodes[335] + 0)
-#define ID_parser___parser_nodes___APrivateVisibility (SFT_parser___parser_nodes[336])
-#define COLOR_parser___parser_nodes___APrivateVisibility (SFT_parser___parser_nodes[337])
-#define ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(recv) ATTR(recv, (SFT_parser___parser_nodes[338] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___APrivateVisibility (SFT_parser___parser_nodes[339] + 0)
-#define CALL_parser___parser_nodes___APrivateVisibility___n_kwprivate(recv) ((parser___parser_nodes___APrivateVisibility___n_kwprivate_t)CALL((recv), (SFT_parser___parser_nodes[339] + 1)))
-#define ID_parser___parser_nodes___AProtectedVisibility (SFT_parser___parser_nodes[340])
-#define COLOR_parser___parser_nodes___AProtectedVisibility (SFT_parser___parser_nodes[341])
-#define ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(recv) ATTR(recv, (SFT_parser___parser_nodes[342] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AProtectedVisibility (SFT_parser___parser_nodes[343] + 0)
-#define CALL_parser___parser_nodes___AProtectedVisibility___n_kwprotected(recv) ((parser___parser_nodes___AProtectedVisibility___n_kwprotected_t)CALL((recv), (SFT_parser___parser_nodes[343] + 1)))
-#define ID_parser___parser_nodes___AIntrudeVisibility (SFT_parser___parser_nodes[344])
-#define COLOR_parser___parser_nodes___AIntrudeVisibility (SFT_parser___parser_nodes[345])
-#define ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(recv) ATTR(recv, (SFT_parser___parser_nodes[346] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AIntrudeVisibility (SFT_parser___parser_nodes[347] + 0)
-#define CALL_parser___parser_nodes___AIntrudeVisibility___n_kwintrude(recv) ((parser___parser_nodes___AIntrudeVisibility___n_kwintrude_t)CALL((recv), (SFT_parser___parser_nodes[347] + 1)))
-#define ID_parser___parser_nodes___AClassdef (SFT_parser___parser_nodes[348])
-#define COLOR_parser___parser_nodes___AClassdef (SFT_parser___parser_nodes[349])
-#define ATTR_parser___parser_nodes___AClassdef____n_propdefs(recv) ATTR(recv, (SFT_parser___parser_nodes[350] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AClassdef (SFT_parser___parser_nodes[351] + 0)
-#define CALL_parser___parser_nodes___AClassdef___n_propdefs(recv) ((parser___parser_nodes___AClassdef___n_propdefs_t)CALL((recv), (SFT_parser___parser_nodes[351] + 1)))
-#define ID_parser___parser_nodes___AStdClassdef (SFT_parser___parser_nodes[352])
-#define COLOR_parser___parser_nodes___AStdClassdef (SFT_parser___parser_nodes[353])
-#define ATTR_parser___parser_nodes___AStdClassdef____n_doc(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 0))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 1))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 2))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_classkind(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 3))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 4))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 5))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 6))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 7))
-#define ATTR_parser___parser_nodes___AStdClassdef____n_kwend(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 8))
-#define INIT_TABLE_POS_parser___parser_nodes___AStdClassdef (SFT_parser___parser_nodes[355] + 0)
-#define CALL_parser___parser_nodes___AStdClassdef___n_doc(recv) ((parser___parser_nodes___AStdClassdef___n_doc_t)CALL((recv), (SFT_parser___parser_nodes[355] + 1)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_kwredef(recv) ((parser___parser_nodes___AStdClassdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[355] + 2)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_visibility(recv) ((parser___parser_nodes___AStdClassdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[355] + 3)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_classkind(recv) ((parser___parser_nodes___AStdClassdef___n_classkind_t)CALL((recv), (SFT_parser___parser_nodes[355] + 4)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_id(recv) ((parser___parser_nodes___AStdClassdef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[355] + 5)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_formaldefs(recv) ((parser___parser_nodes___AStdClassdef___n_formaldefs_t)CALL((recv), (SFT_parser___parser_nodes[355] + 6)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_extern_code_block(recv) ((parser___parser_nodes___AStdClassdef___n_extern_code_block_t)CALL((recv), (SFT_parser___parser_nodes[355] + 7)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_superclasses(recv) ((parser___parser_nodes___AStdClassdef___n_superclasses_t)CALL((recv), (SFT_parser___parser_nodes[355] + 8)))
-#define CALL_parser___parser_nodes___AStdClassdef___n_kwend(recv) ((parser___parser_nodes___AStdClassdef___n_kwend_t)CALL((recv), (SFT_parser___parser_nodes[355] + 9)))
-#define ID_parser___parser_nodes___ATopClassdef (SFT_parser___parser_nodes[356])
-#define COLOR_parser___parser_nodes___ATopClassdef (SFT_parser___parser_nodes[357])
-#define INIT_TABLE_POS_parser___parser_nodes___ATopClassdef (SFT_parser___parser_nodes[358] + 0)
-#define ID_parser___parser_nodes___AMainClassdef (SFT_parser___parser_nodes[359])
-#define COLOR_parser___parser_nodes___AMainClassdef (SFT_parser___parser_nodes[360])
-#define INIT_TABLE_POS_parser___parser_nodes___AMainClassdef (SFT_parser___parser_nodes[361] + 0)
-#define ID_parser___parser_nodes___AClasskind (SFT_parser___parser_nodes[362])
-#define COLOR_parser___parser_nodes___AClasskind (SFT_parser___parser_nodes[363])
-#define INIT_TABLE_POS_parser___parser_nodes___AClasskind (SFT_parser___parser_nodes[364] + 0)
-#define ID_parser___parser_nodes___AConcreteClasskind (SFT_parser___parser_nodes[365])
-#define COLOR_parser___parser_nodes___AConcreteClasskind (SFT_parser___parser_nodes[366])
-#define ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(recv) ATTR(recv, (SFT_parser___parser_nodes[367] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AConcreteClasskind (SFT_parser___parser_nodes[368] + 0)
-#define CALL_parser___parser_nodes___AConcreteClasskind___n_kwclass(recv) ((parser___parser_nodes___AConcreteClasskind___n_kwclass_t)CALL((recv), (SFT_parser___parser_nodes[368] + 1)))
-#define ID_parser___parser_nodes___AAbstractClasskind (SFT_parser___parser_nodes[369])
-#define COLOR_parser___parser_nodes___AAbstractClasskind (SFT_parser___parser_nodes[370])
-#define ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(recv) ATTR(recv, (SFT_parser___parser_nodes[371] + 0))
-#define ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(recv) ATTR(recv, (SFT_parser___parser_nodes[371] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AAbstractClasskind (SFT_parser___parser_nodes[372] + 0)
-#define CALL_parser___parser_nodes___AAbstractClasskind___n_kwabstract(recv) ((parser___parser_nodes___AAbstractClasskind___n_kwabstract_t)CALL((recv), (SFT_parser___parser_nodes[372] + 1)))
-#define CALL_parser___parser_nodes___AAbstractClasskind___n_kwclass(recv) ((parser___parser_nodes___AAbstractClasskind___n_kwclass_t)CALL((recv), (SFT_parser___parser_nodes[372] + 2)))
-#define ID_parser___parser_nodes___AInterfaceClasskind (SFT_parser___parser_nodes[373])
-#define COLOR_parser___parser_nodes___AInterfaceClasskind (SFT_parser___parser_nodes[374])
-#define ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(recv) ATTR(recv, (SFT_parser___parser_nodes[375] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AInterfaceClasskind (SFT_parser___parser_nodes[376] + 0)
-#define CALL_parser___parser_nodes___AInterfaceClasskind___n_kwinterface(recv) ((parser___parser_nodes___AInterfaceClasskind___n_kwinterface_t)CALL((recv), (SFT_parser___parser_nodes[376] + 1)))
-#define ID_parser___parser_nodes___AEnumClasskind (SFT_parser___parser_nodes[377])
-#define COLOR_parser___parser_nodes___AEnumClasskind (SFT_parser___parser_nodes[378])
-#define ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(recv) ATTR(recv, (SFT_parser___parser_nodes[379] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AEnumClasskind (SFT_parser___parser_nodes[380] + 0)
-#define CALL_parser___parser_nodes___AEnumClasskind___n_kwenum(recv) ((parser___parser_nodes___AEnumClasskind___n_kwenum_t)CALL((recv), (SFT_parser___parser_nodes[380] + 1)))
-#define ID_parser___parser_nodes___AExternClasskind (SFT_parser___parser_nodes[381])
-#define COLOR_parser___parser_nodes___AExternClasskind (SFT_parser___parser_nodes[382])
-#define ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(recv) ATTR(recv, (SFT_parser___parser_nodes[383] + 0))
-#define ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(recv) ATTR(recv, (SFT_parser___parser_nodes[383] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AExternClasskind (SFT_parser___parser_nodes[384] + 0)
-#define CALL_parser___parser_nodes___AExternClasskind___n_kwextern(recv) ((parser___parser_nodes___AExternClasskind___n_kwextern_t)CALL((recv), (SFT_parser___parser_nodes[384] + 1)))
-#define CALL_parser___parser_nodes___AExternClasskind___n_kwclass(recv) ((parser___parser_nodes___AExternClasskind___n_kwclass_t)CALL((recv), (SFT_parser___parser_nodes[384] + 2)))
-#define ID_parser___parser_nodes___AFormaldef (SFT_parser___parser_nodes[385])
-#define COLOR_parser___parser_nodes___AFormaldef (SFT_parser___parser_nodes[386])
-#define ATTR_parser___parser_nodes___AFormaldef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[387] + 0))
-#define ATTR_parser___parser_nodes___AFormaldef____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[387] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AFormaldef (SFT_parser___parser_nodes[388] + 0)
-#define CALL_parser___parser_nodes___AFormaldef___n_id(recv) ((parser___parser_nodes___AFormaldef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[388] + 1)))
-#define CALL_parser___parser_nodes___AFormaldef___n_type(recv) ((parser___parser_nodes___AFormaldef___n_type_t)CALL((recv), (SFT_parser___parser_nodes[388] + 2)))
-#define ID_parser___parser_nodes___ASuperclass (SFT_parser___parser_nodes[389])
-#define COLOR_parser___parser_nodes___ASuperclass (SFT_parser___parser_nodes[390])
-#define ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(recv) ATTR(recv, (SFT_parser___parser_nodes[391] + 0))
-#define ATTR_parser___parser_nodes___ASuperclass____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[391] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ASuperclass (SFT_parser___parser_nodes[392] + 0)
-#define CALL_parser___parser_nodes___ASuperclass___n_kwsuper(recv) ((parser___parser_nodes___ASuperclass___n_kwsuper_t)CALL((recv), (SFT_parser___parser_nodes[392] + 1)))
-#define CALL_parser___parser_nodes___ASuperclass___n_type(recv) ((parser___parser_nodes___ASuperclass___n_type_t)CALL((recv), (SFT_parser___parser_nodes[392] + 2)))
-#define ID_parser___parser_nodes___APropdef (SFT_parser___parser_nodes[393])
-#define COLOR_parser___parser_nodes___APropdef (SFT_parser___parser_nodes[394])
-#define ATTR_parser___parser_nodes___APropdef____n_doc(recv) ATTR(recv, (SFT_parser___parser_nodes[395] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___APropdef (SFT_parser___parser_nodes[396] + 0)
-#define CALL_parser___parser_nodes___APropdef___n_doc(recv) ((parser___parser_nodes___APropdef___n_doc_t)CALL((recv), (SFT_parser___parser_nodes[396] + 1)))
-#define ID_parser___parser_nodes___AAttrPropdef (SFT_parser___parser_nodes[397])
-#define COLOR_parser___parser_nodes___AAttrPropdef (SFT_parser___parser_nodes[398])
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 0))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 1))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 2))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 3))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_id2(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 4))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 5))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_readable(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 6))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_writable(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 7))
-#define ATTR_parser___parser_nodes___AAttrPropdef____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 8))
-#define INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef (SFT_parser___parser_nodes[400] + 0)
-#define CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(recv) ((parser___parser_nodes___AAttrPropdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[400] + 1)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_visibility(recv) ((parser___parser_nodes___AAttrPropdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[400] + 2)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_kwvar(recv) ((parser___parser_nodes___AAttrPropdef___n_kwvar_t)CALL((recv), (SFT_parser___parser_nodes[400] + 3)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_id(recv) ((parser___parser_nodes___AAttrPropdef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[400] + 4)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_id2(recv) ((parser___parser_nodes___AAttrPropdef___n_id2_t)CALL((recv), (SFT_parser___parser_nodes[400] + 5)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_type(recv) ((parser___parser_nodes___AAttrPropdef___n_type_t)CALL((recv), (SFT_parser___parser_nodes[400] + 6)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_readable(recv) ((parser___parser_nodes___AAttrPropdef___n_readable_t)CALL((recv), (SFT_parser___parser_nodes[400] + 7)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_writable(recv) ((parser___parser_nodes___AAttrPropdef___n_writable_t)CALL((recv), (SFT_parser___parser_nodes[400] + 8)))
-#define CALL_parser___parser_nodes___AAttrPropdef___n_expr(recv) ((parser___parser_nodes___AAttrPropdef___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[400] + 9)))
-#define ID_parser___parser_nodes___AMethPropdef (SFT_parser___parser_nodes[401])
-#define COLOR_parser___parser_nodes___AMethPropdef (SFT_parser___parser_nodes[402])
-#define ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[403] + 0))
-#define ATTR_parser___parser_nodes___AMethPropdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[403] + 1))
-#define ATTR_parser___parser_nodes___AMethPropdef____n_methid(recv) ATTR(recv, (SFT_parser___parser_nodes[403] + 2))
-#define ATTR_parser___parser_nodes___AMethPropdef____n_signature(recv) ATTR(recv, (SFT_parser___parser_nodes[403] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AMethPropdef (SFT_parser___parser_nodes[404] + 0)
-#define CALL_parser___parser_nodes___AMethPropdef___n_kwredef(recv) ((parser___parser_nodes___AMethPropdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[404] + 1)))
-#define CALL_parser___parser_nodes___AMethPropdef___n_visibility(recv) ((parser___parser_nodes___AMethPropdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[404] + 2)))
-#define CALL_parser___parser_nodes___AMethPropdef___n_methid(recv) ((parser___parser_nodes___AMethPropdef___n_methid_t)CALL((recv), (SFT_parser___parser_nodes[404] + 3)))
-#define CALL_parser___parser_nodes___AMethPropdef___n_signature(recv) ((parser___parser_nodes___AMethPropdef___n_signature_t)CALL((recv), (SFT_parser___parser_nodes[404] + 4)))
-#define ID_parser___parser_nodes___ADeferredMethPropdef (SFT_parser___parser_nodes[405])
-#define COLOR_parser___parser_nodes___ADeferredMethPropdef (SFT_parser___parser_nodes[406])
-#define ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef (SFT_parser___parser_nodes[408] + 0)
-#define CALL_parser___parser_nodes___ADeferredMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___ADeferredMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[408] + 1)))
-#define ID_parser___parser_nodes___AInternMethPropdef (SFT_parser___parser_nodes[409])
-#define COLOR_parser___parser_nodes___AInternMethPropdef (SFT_parser___parser_nodes[410])
-#define ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[411] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AInternMethPropdef (SFT_parser___parser_nodes[412] + 0)
-#define CALL_parser___parser_nodes___AInternMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___AInternMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[412] + 1)))
-#define ID_parser___parser_nodes___AExternPropdef (SFT_parser___parser_nodes[413])
-#define COLOR_parser___parser_nodes___AExternPropdef (SFT_parser___parser_nodes[414])
-#define ATTR_parser___parser_nodes___AExternPropdef____n_extern(recv) ATTR(recv, (SFT_parser___parser_nodes[415] + 0))
-#define ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(recv) ATTR(recv, (SFT_parser___parser_nodes[415] + 1))
-#define ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(recv) ATTR(recv, (SFT_parser___parser_nodes[415] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AExternPropdef (SFT_parser___parser_nodes[416] + 0)
-#define CALL_parser___parser_nodes___AExternPropdef___n_extern(recv) ((parser___parser_nodes___AExternPropdef___n_extern_t)CALL((recv), (SFT_parser___parser_nodes[416] + 1)))
-#define CALL_parser___parser_nodes___AExternPropdef___n_extern_calls(recv) ((parser___parser_nodes___AExternPropdef___n_extern_calls_t)CALL((recv), (SFT_parser___parser_nodes[416] + 2)))
-#define CALL_parser___parser_nodes___AExternPropdef___n_extern_code_block(recv) ((parser___parser_nodes___AExternPropdef___n_extern_code_block_t)CALL((recv), (SFT_parser___parser_nodes[416] + 3)))
-#define ID_parser___parser_nodes___AExternMethPropdef (SFT_parser___parser_nodes[417])
-#define COLOR_parser___parser_nodes___AExternMethPropdef (SFT_parser___parser_nodes[418])
-#define ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[419] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef (SFT_parser___parser_nodes[420] + 0)
-#define CALL_parser___parser_nodes___AExternMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___AExternMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[420] + 1)))
-#define ID_parser___parser_nodes___AConcreteMethPropdef (SFT_parser___parser_nodes[421])
-#define COLOR_parser___parser_nodes___AConcreteMethPropdef (SFT_parser___parser_nodes[422])
-#define ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[423] + 0))
-#define ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[423] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef (SFT_parser___parser_nodes[424] + 0)
-#define CALL_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___AConcreteMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[424] + 1)))
-#define CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(recv) ((parser___parser_nodes___AConcreteMethPropdef___n_block_t)CALL((recv), (SFT_parser___parser_nodes[424] + 2)))
-#define ID_parser___parser_nodes___AInitPropdef (SFT_parser___parser_nodes[425])
-#define COLOR_parser___parser_nodes___AInitPropdef (SFT_parser___parser_nodes[426])
-#define INIT_TABLE_POS_parser___parser_nodes___AInitPropdef (SFT_parser___parser_nodes[427] + 0)
-#define ID_parser___parser_nodes___AConcreteInitPropdef (SFT_parser___parser_nodes[428])
-#define COLOR_parser___parser_nodes___AConcreteInitPropdef (SFT_parser___parser_nodes[429])
-#define ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(recv) ATTR(recv, (SFT_parser___parser_nodes[430] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef (SFT_parser___parser_nodes[431] + 0)
-#define CALL_parser___parser_nodes___AConcreteInitPropdef___n_kwinit(recv) ((parser___parser_nodes___AConcreteInitPropdef___n_kwinit_t)CALL((recv), (SFT_parser___parser_nodes[431] + 1)))
-#define ID_parser___parser_nodes___AExternInitPropdef (SFT_parser___parser_nodes[432])
-#define COLOR_parser___parser_nodes___AExternInitPropdef (SFT_parser___parser_nodes[433])
-#define ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(recv) ATTR(recv, (SFT_parser___parser_nodes[434] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef (SFT_parser___parser_nodes[435] + 0)
-#define CALL_parser___parser_nodes___AExternInitPropdef___n_kwnew(recv) ((parser___parser_nodes___AExternInitPropdef___n_kwnew_t)CALL((recv), (SFT_parser___parser_nodes[435] + 1)))
-#define ID_parser___parser_nodes___AMainMethPropdef (SFT_parser___parser_nodes[436])
-#define COLOR_parser___parser_nodes___AMainMethPropdef (SFT_parser___parser_nodes[437])
-#define INIT_TABLE_POS_parser___parser_nodes___AMainMethPropdef (SFT_parser___parser_nodes[438] + 0)
-#define ID_parser___parser_nodes___AExternCalls (SFT_parser___parser_nodes[439])
-#define COLOR_parser___parser_nodes___AExternCalls (SFT_parser___parser_nodes[440])
-#define ATTR_parser___parser_nodes___AExternCalls____n_kwimport(recv) ATTR(recv, (SFT_parser___parser_nodes[441] + 0))
-#define ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(recv) ATTR(recv, (SFT_parser___parser_nodes[441] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AExternCalls (SFT_parser___parser_nodes[442] + 0)
-#define CALL_parser___parser_nodes___AExternCalls___n_kwimport(recv) ((parser___parser_nodes___AExternCalls___n_kwimport_t)CALL((recv), (SFT_parser___parser_nodes[442] + 1)))
-#define CALL_parser___parser_nodes___AExternCalls___n_extern_calls(recv) ((parser___parser_nodes___AExternCalls___n_extern_calls_t)CALL((recv), (SFT_parser___parser_nodes[442] + 2)))
-#define ID_parser___parser_nodes___AExternCall (SFT_parser___parser_nodes[443])
-#define COLOR_parser___parser_nodes___AExternCall (SFT_parser___parser_nodes[444])
-#define INIT_TABLE_POS_parser___parser_nodes___AExternCall (SFT_parser___parser_nodes[445] + 0)
-#define ID_parser___parser_nodes___APropExternCall (SFT_parser___parser_nodes[446])
-#define COLOR_parser___parser_nodes___APropExternCall (SFT_parser___parser_nodes[447])
-#define INIT_TABLE_POS_parser___parser_nodes___APropExternCall (SFT_parser___parser_nodes[448] + 0)
-#define ID_parser___parser_nodes___ALocalPropExternCall (SFT_parser___parser_nodes[449])
-#define COLOR_parser___parser_nodes___ALocalPropExternCall (SFT_parser___parser_nodes[450])
-#define ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(recv) ATTR(recv, (SFT_parser___parser_nodes[451] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall (SFT_parser___parser_nodes[452] + 0)
-#define CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(recv) ((parser___parser_nodes___ALocalPropExternCall___n_methid_t)CALL((recv), (SFT_parser___parser_nodes[452] + 1)))
-#define ID_parser___parser_nodes___AFullPropExternCall (SFT_parser___parser_nodes[453])
-#define COLOR_parser___parser_nodes___AFullPropExternCall (SFT_parser___parser_nodes[454])
-#define ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(recv) ATTR(recv, (SFT_parser___parser_nodes[455] + 0))
-#define ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(recv) ATTR(recv, (SFT_parser___parser_nodes[455] + 1))
-#define ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(recv) ATTR(recv, (SFT_parser___parser_nodes[455] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall (SFT_parser___parser_nodes[456] + 0)
-#define CALL_parser___parser_nodes___AFullPropExternCall___n_classid(recv) ((parser___parser_nodes___AFullPropExternCall___n_classid_t)CALL((recv), (SFT_parser___parser_nodes[456] + 1)))
-#define CALL_parser___parser_nodes___AFullPropExternCall___n_quad(recv) ((parser___parser_nodes___AFullPropExternCall___n_quad_t)CALL((recv), (SFT_parser___parser_nodes[456] + 2)))
-#define CALL_parser___parser_nodes___AFullPropExternCall___n_methid(recv) ((parser___parser_nodes___AFullPropExternCall___n_methid_t)CALL((recv), (SFT_parser___parser_nodes[456] + 3)))
-#define ID_parser___parser_nodes___AInitPropExternCall (SFT_parser___parser_nodes[457])
-#define COLOR_parser___parser_nodes___AInitPropExternCall (SFT_parser___parser_nodes[458])
-#define ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(recv) ATTR(recv, (SFT_parser___parser_nodes[459] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall (SFT_parser___parser_nodes[460] + 0)
-#define CALL_parser___parser_nodes___AInitPropExternCall___n_classid(recv) ((parser___parser_nodes___AInitPropExternCall___n_classid_t)CALL((recv), (SFT_parser___parser_nodes[460] + 1)))
-#define ID_parser___parser_nodes___ASuperExternCall (SFT_parser___parser_nodes[461])
-#define COLOR_parser___parser_nodes___ASuperExternCall (SFT_parser___parser_nodes[462])
-#define ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(recv) ATTR(recv, (SFT_parser___parser_nodes[463] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall (SFT_parser___parser_nodes[464] + 0)
-#define CALL_parser___parser_nodes___ASuperExternCall___n_kwsuper(recv) ((parser___parser_nodes___ASuperExternCall___n_kwsuper_t)CALL((recv), (SFT_parser___parser_nodes[464] + 1)))
-#define ID_parser___parser_nodes___ACastExternCall (SFT_parser___parser_nodes[465])
-#define COLOR_parser___parser_nodes___ACastExternCall (SFT_parser___parser_nodes[466])
-#define INIT_TABLE_POS_parser___parser_nodes___ACastExternCall (SFT_parser___parser_nodes[467] + 0)
-#define ID_parser___parser_nodes___ACastAsExternCall (SFT_parser___parser_nodes[468])
-#define COLOR_parser___parser_nodes___ACastAsExternCall (SFT_parser___parser_nodes[469])
-#define ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(recv) ATTR(recv, (SFT_parser___parser_nodes[470] + 0))
-#define ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[470] + 1))
-#define ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(recv) ATTR(recv, (SFT_parser___parser_nodes[470] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall (SFT_parser___parser_nodes[471] + 0)
-#define CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(recv) ((parser___parser_nodes___ACastAsExternCall___n_from_type_t)CALL((recv), (SFT_parser___parser_nodes[471] + 1)))
-#define CALL_parser___parser_nodes___ACastAsExternCall___n_kwas(recv) ((parser___parser_nodes___ACastAsExternCall___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[471] + 2)))
-#define CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(recv) ((parser___parser_nodes___ACastAsExternCall___n_to_type_t)CALL((recv), (SFT_parser___parser_nodes[471] + 3)))
-#define ID_parser___parser_nodes___AAsNullableExternCall (SFT_parser___parser_nodes[472])
-#define COLOR_parser___parser_nodes___AAsNullableExternCall (SFT_parser___parser_nodes[473])
-#define ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[474] + 0))
-#define ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[474] + 1))
-#define ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(recv) ATTR(recv, (SFT_parser___parser_nodes[474] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall (SFT_parser___parser_nodes[475] + 0)
-#define CALL_parser___parser_nodes___AAsNullableExternCall___n_type(recv) ((parser___parser_nodes___AAsNullableExternCall___n_type_t)CALL((recv), (SFT_parser___parser_nodes[475] + 1)))
-#define CALL_parser___parser_nodes___AAsNullableExternCall___n_kwas(recv) ((parser___parser_nodes___AAsNullableExternCall___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[475] + 2)))
-#define CALL_parser___parser_nodes___AAsNullableExternCall___n_kwnullable(recv) ((parser___parser_nodes___AAsNullableExternCall___n_kwnullable_t)CALL((recv), (SFT_parser___parser_nodes[475] + 3)))
-#define ID_parser___parser_nodes___AAsNotNullableExternCall (SFT_parser___parser_nodes[476])
-#define COLOR_parser___parser_nodes___AAsNotNullableExternCall (SFT_parser___parser_nodes[477])
-#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 0))
-#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 1))
-#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 2))
-#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall (SFT_parser___parser_nodes[479] + 0)
-#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_type_t)CALL((recv), (SFT_parser___parser_nodes[479] + 1)))
-#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwas(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[479] + 2)))
-#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwnot_t)CALL((recv), (SFT_parser___parser_nodes[479] + 3)))
-#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable_t)CALL((recv), (SFT_parser___parser_nodes[479] + 4)))
-#define ID_parser___parser_nodes___ATypePropdef (SFT_parser___parser_nodes[480])
-#define COLOR_parser___parser_nodes___ATypePropdef (SFT_parser___parser_nodes[481])
-#define ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 0))
-#define ATTR_parser___parser_nodes___ATypePropdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 1))
-#define ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 2))
-#define ATTR_parser___parser_nodes___ATypePropdef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 3))
-#define ATTR_parser___parser_nodes___ATypePropdef____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___ATypePropdef (SFT_parser___parser_nodes[483] + 0)
-#define CALL_parser___parser_nodes___ATypePropdef___n_kwredef(recv) ((parser___parser_nodes___ATypePropdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[483] + 1)))
-#define CALL_parser___parser_nodes___ATypePropdef___n_visibility(recv) ((parser___parser_nodes___ATypePropdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[483] + 2)))
-#define CALL_parser___parser_nodes___ATypePropdef___n_kwtype(recv) ((parser___parser_nodes___ATypePropdef___n_kwtype_t)CALL((recv), (SFT_parser___parser_nodes[483] + 3)))
-#define CALL_parser___parser_nodes___ATypePropdef___n_id(recv) ((parser___parser_nodes___ATypePropdef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[483] + 4)))
-#define CALL_parser___parser_nodes___ATypePropdef___n_type(recv) ((parser___parser_nodes___ATypePropdef___n_type_t)CALL((recv), (SFT_parser___parser_nodes[483] + 5)))
-#define ID_parser___parser_nodes___AAble (SFT_parser___parser_nodes[484])
-#define COLOR_parser___parser_nodes___AAble (SFT_parser___parser_nodes[485])
-#define ATTR_parser___parser_nodes___AAble____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[486] + 0))
-#define ATTR_parser___parser_nodes___AAble____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[486] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AAble (SFT_parser___parser_nodes[487] + 0)
-#define CALL_parser___parser_nodes___AAble___n_visibility(recv) ((parser___parser_nodes___AAble___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[487] + 1)))
-#define CALL_parser___parser_nodes___AAble___n_kwredef(recv) ((parser___parser_nodes___AAble___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[487] + 2)))
-#define ID_parser___parser_nodes___AReadAble (SFT_parser___parser_nodes[488])
-#define COLOR_parser___parser_nodes___AReadAble (SFT_parser___parser_nodes[489])
-#define ATTR_parser___parser_nodes___AReadAble____n_kwreadable(recv) ATTR(recv, (SFT_parser___parser_nodes[490] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AReadAble (SFT_parser___parser_nodes[491] + 0)
-#define CALL_parser___parser_nodes___AReadAble___n_kwreadable(recv) ((parser___parser_nodes___AReadAble___n_kwreadable_t)CALL((recv), (SFT_parser___parser_nodes[491] + 1)))
-#define ID_parser___parser_nodes___AWriteAble (SFT_parser___parser_nodes[492])
-#define COLOR_parser___parser_nodes___AWriteAble (SFT_parser___parser_nodes[493])
-#define ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(recv) ATTR(recv, (SFT_parser___parser_nodes[494] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AWriteAble (SFT_parser___parser_nodes[495] + 0)
-#define CALL_parser___parser_nodes___AWriteAble___n_kwwritable(recv) ((parser___parser_nodes___AWriteAble___n_kwwritable_t)CALL((recv), (SFT_parser___parser_nodes[495] + 1)))
-#define ID_parser___parser_nodes___AMethid (SFT_parser___parser_nodes[496])
-#define COLOR_parser___parser_nodes___AMethid (SFT_parser___parser_nodes[497])
-#define INIT_TABLE_POS_parser___parser_nodes___AMethid (SFT_parser___parser_nodes[498] + 0)
-#define ID_parser___parser_nodes___AIdMethid (SFT_parser___parser_nodes[499])
-#define COLOR_parser___parser_nodes___AIdMethid (SFT_parser___parser_nodes[500])
-#define ATTR_parser___parser_nodes___AIdMethid____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[501] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AIdMethid (SFT_parser___parser_nodes[502] + 0)
-#define CALL_parser___parser_nodes___AIdMethid___n_id(recv) ((parser___parser_nodes___AIdMethid___n_id_t)CALL((recv), (SFT_parser___parser_nodes[502] + 1)))
-#define ID_parser___parser_nodes___APlusMethid (SFT_parser___parser_nodes[503])
-#define COLOR_parser___parser_nodes___APlusMethid (SFT_parser___parser_nodes[504])
-#define ATTR_parser___parser_nodes___APlusMethid____n_plus(recv) ATTR(recv, (SFT_parser___parser_nodes[505] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___APlusMethid (SFT_parser___parser_nodes[506] + 0)
-#define CALL_parser___parser_nodes___APlusMethid___n_plus(recv) ((parser___parser_nodes___APlusMethid___n_plus_t)CALL((recv), (SFT_parser___parser_nodes[506] + 1)))
-#define ID_parser___parser_nodes___AMinusMethid (SFT_parser___parser_nodes[507])
-#define COLOR_parser___parser_nodes___AMinusMethid (SFT_parser___parser_nodes[508])
-#define ATTR_parser___parser_nodes___AMinusMethid____n_minus(recv) ATTR(recv, (SFT_parser___parser_nodes[509] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AMinusMethid (SFT_parser___parser_nodes[510] + 0)
-#define CALL_parser___parser_nodes___AMinusMethid___n_minus(recv) ((parser___parser_nodes___AMinusMethid___n_minus_t)CALL((recv), (SFT_parser___parser_nodes[510] + 1)))
-#define ID_parser___parser_nodes___AStarMethid (SFT_parser___parser_nodes[511])
-#define COLOR_parser___parser_nodes___AStarMethid (SFT_parser___parser_nodes[512])
-#define ATTR_parser___parser_nodes___AStarMethid____n_star(recv) ATTR(recv, (SFT_parser___parser_nodes[513] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AStarMethid (SFT_parser___parser_nodes[514] + 0)
-#define CALL_parser___parser_nodes___AStarMethid___n_star(recv) ((parser___parser_nodes___AStarMethid___n_star_t)CALL((recv), (SFT_parser___parser_nodes[514] + 1)))
-#define ID_parser___parser_nodes___ASlashMethid (SFT_parser___parser_nodes[515])
-#define COLOR_parser___parser_nodes___ASlashMethid (SFT_parser___parser_nodes[516])
-#define ATTR_parser___parser_nodes___ASlashMethid____n_slash(recv) ATTR(recv, (SFT_parser___parser_nodes[517] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ASlashMethid (SFT_parser___parser_nodes[518] + 0)
-#define CALL_parser___parser_nodes___ASlashMethid___n_slash(recv) ((parser___parser_nodes___ASlashMethid___n_slash_t)CALL((recv), (SFT_parser___parser_nodes[518] + 1)))
-#define ID_parser___parser_nodes___APercentMethid (SFT_parser___parser_nodes[519])
-#define COLOR_parser___parser_nodes___APercentMethid (SFT_parser___parser_nodes[520])
-#define ATTR_parser___parser_nodes___APercentMethid____n_percent(recv) ATTR(recv, (SFT_parser___parser_nodes[521] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___APercentMethid (SFT_parser___parser_nodes[522] + 0)
-#define CALL_parser___parser_nodes___APercentMethid___n_percent(recv) ((parser___parser_nodes___APercentMethid___n_percent_t)CALL((recv), (SFT_parser___parser_nodes[522] + 1)))
-#define ID_parser___parser_nodes___AEqMethid (SFT_parser___parser_nodes[523])
-#define COLOR_parser___parser_nodes___AEqMethid (SFT_parser___parser_nodes[524])
-#define ATTR_parser___parser_nodes___AEqMethid____n_eq(recv) ATTR(recv, (SFT_parser___parser_nodes[525] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AEqMethid (SFT_parser___parser_nodes[526] + 0)
-#define CALL_parser___parser_nodes___AEqMethid___n_eq(recv) ((parser___parser_nodes___AEqMethid___n_eq_t)CALL((recv), (SFT_parser___parser_nodes[526] + 1)))
-#define ID_parser___parser_nodes___ANeMethid (SFT_parser___parser_nodes[527])
-#define COLOR_parser___parser_nodes___ANeMethid (SFT_parser___parser_nodes[528])
-#define ATTR_parser___parser_nodes___ANeMethid____n_ne(recv) ATTR(recv, (SFT_parser___parser_nodes[529] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ANeMethid (SFT_parser___parser_nodes[530] + 0)
-#define CALL_parser___parser_nodes___ANeMethid___n_ne(recv) ((parser___parser_nodes___ANeMethid___n_ne_t)CALL((recv), (SFT_parser___parser_nodes[530] + 1)))
-#define ID_parser___parser_nodes___ALeMethid (SFT_parser___parser_nodes[531])
-#define COLOR_parser___parser_nodes___ALeMethid (SFT_parser___parser_nodes[532])
-#define ATTR_parser___parser_nodes___ALeMethid____n_le(recv) ATTR(recv, (SFT_parser___parser_nodes[533] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ALeMethid (SFT_parser___parser_nodes[534] + 0)
-#define CALL_parser___parser_nodes___ALeMethid___n_le(recv) ((parser___parser_nodes___ALeMethid___n_le_t)CALL((recv), (SFT_parser___parser_nodes[534] + 1)))
-#define ID_parser___parser_nodes___AGeMethid (SFT_parser___parser_nodes[535])
-#define COLOR_parser___parser_nodes___AGeMethid (SFT_parser___parser_nodes[536])
-#define ATTR_parser___parser_nodes___AGeMethid____n_ge(recv) ATTR(recv, (SFT_parser___parser_nodes[537] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AGeMethid (SFT_parser___parser_nodes[538] + 0)
-#define CALL_parser___parser_nodes___AGeMethid___n_ge(recv) ((parser___parser_nodes___AGeMethid___n_ge_t)CALL((recv), (SFT_parser___parser_nodes[538] + 1)))
-#define ID_parser___parser_nodes___ALtMethid (SFT_parser___parser_nodes[539])
-#define COLOR_parser___parser_nodes___ALtMethid (SFT_parser___parser_nodes[540])
-#define ATTR_parser___parser_nodes___ALtMethid____n_lt(recv) ATTR(recv, (SFT_parser___parser_nodes[541] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ALtMethid (SFT_parser___parser_nodes[542] + 0)
-#define CALL_parser___parser_nodes___ALtMethid___n_lt(recv) ((parser___parser_nodes___ALtMethid___n_lt_t)CALL((recv), (SFT_parser___parser_nodes[542] + 1)))
-#define ID_parser___parser_nodes___AGtMethid (SFT_parser___parser_nodes[543])
-#define COLOR_parser___parser_nodes___AGtMethid (SFT_parser___parser_nodes[544])
-#define ATTR_parser___parser_nodes___AGtMethid____n_gt(recv) ATTR(recv, (SFT_parser___parser_nodes[545] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AGtMethid (SFT_parser___parser_nodes[546] + 0)
-#define CALL_parser___parser_nodes___AGtMethid___n_gt(recv) ((parser___parser_nodes___AGtMethid___n_gt_t)CALL((recv), (SFT_parser___parser_nodes[546] + 1)))
-#define ID_parser___parser_nodes___ALlMethid (SFT_parser___parser_nodes[547])
-#define COLOR_parser___parser_nodes___ALlMethid (SFT_parser___parser_nodes[548])
-#define ATTR_parser___parser_nodes___ALlMethid____n_ll(recv) ATTR(recv, (SFT_parser___parser_nodes[549] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ALlMethid (SFT_parser___parser_nodes[550] + 0)
-#define CALL_parser___parser_nodes___ALlMethid___n_ll(recv) ((parser___parser_nodes___ALlMethid___n_ll_t)CALL((recv), (SFT_parser___parser_nodes[550] + 1)))
-#define CALL_parser___parser_nodes___ALlMethid___n_ll__eq(recv) ((parser___parser_nodes___ALlMethid___n_ll__eq_t)CALL((recv), (SFT_parser___parser_nodes[550] + 2)))
-#define ID_parser___parser_nodes___AGgMethid (SFT_parser___parser_nodes[551])
-#define COLOR_parser___parser_nodes___AGgMethid (SFT_parser___parser_nodes[552])
-#define ATTR_parser___parser_nodes___AGgMethid____n_gg(recv) ATTR(recv, (SFT_parser___parser_nodes[553] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AGgMethid (SFT_parser___parser_nodes[554] + 0)
-#define CALL_parser___parser_nodes___AGgMethid___n_gg(recv) ((parser___parser_nodes___AGgMethid___n_gg_t)CALL((recv), (SFT_parser___parser_nodes[554] + 1)))
-#define CALL_parser___parser_nodes___AGgMethid___n_gg__eq(recv) ((parser___parser_nodes___AGgMethid___n_gg__eq_t)CALL((recv), (SFT_parser___parser_nodes[554] + 2)))
-#define ID_parser___parser_nodes___ABraMethid (SFT_parser___parser_nodes[555])
-#define COLOR_parser___parser_nodes___ABraMethid (SFT_parser___parser_nodes[556])
-#define ATTR_parser___parser_nodes___ABraMethid____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[557] + 0))
-#define ATTR_parser___parser_nodes___ABraMethid____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[557] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ABraMethid (SFT_parser___parser_nodes[558] + 0)
-#define CALL_parser___parser_nodes___ABraMethid___n_obra(recv) ((parser___parser_nodes___ABraMethid___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[558] + 1)))
-#define CALL_parser___parser_nodes___ABraMethid___n_cbra(recv) ((parser___parser_nodes___ABraMethid___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[558] + 2)))
-#define ID_parser___parser_nodes___AStarshipMethid (SFT_parser___parser_nodes[559])
-#define COLOR_parser___parser_nodes___AStarshipMethid (SFT_parser___parser_nodes[560])
-#define ATTR_parser___parser_nodes___AStarshipMethid____n_starship(recv) ATTR(recv, (SFT_parser___parser_nodes[561] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AStarshipMethid (SFT_parser___parser_nodes[562] + 0)
-#define CALL_parser___parser_nodes___AStarshipMethid___n_starship(recv) ((parser___parser_nodes___AStarshipMethid___n_starship_t)CALL((recv), (SFT_parser___parser_nodes[562] + 1)))
-#define ID_parser___parser_nodes___AAssignMethid (SFT_parser___parser_nodes[563])
-#define COLOR_parser___parser_nodes___AAssignMethid (SFT_parser___parser_nodes[564])
-#define ATTR_parser___parser_nodes___AAssignMethid____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[565] + 0))
-#define ATTR_parser___parser_nodes___AAssignMethid____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[565] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AAssignMethid (SFT_parser___parser_nodes[566] + 0)
-#define CALL_parser___parser_nodes___AAssignMethid___n_id(recv) ((parser___parser_nodes___AAssignMethid___n_id_t)CALL((recv), (SFT_parser___parser_nodes[566] + 1)))
-#define CALL_parser___parser_nodes___AAssignMethid___n_assign(recv) ((parser___parser_nodes___AAssignMethid___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[566] + 2)))
-#define ID_parser___parser_nodes___ABraassignMethid (SFT_parser___parser_nodes[567])
-#define COLOR_parser___parser_nodes___ABraassignMethid (SFT_parser___parser_nodes[568])
-#define ATTR_parser___parser_nodes___ABraassignMethid____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[569] + 0))
-#define ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[569] + 1))
-#define ATTR_parser___parser_nodes___ABraassignMethid____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[569] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___ABraassignMethid (SFT_parser___parser_nodes[570] + 0)
-#define CALL_parser___parser_nodes___ABraassignMethid___n_obra(recv) ((parser___parser_nodes___ABraassignMethid___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[570] + 1)))
-#define CALL_parser___parser_nodes___ABraassignMethid___n_cbra(recv) ((parser___parser_nodes___ABraassignMethid___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[570] + 2)))
-#define CALL_parser___parser_nodes___ABraassignMethid___n_assign(recv) ((parser___parser_nodes___ABraassignMethid___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[570] + 3)))
-#define ID_parser___parser_nodes___ASignature (SFT_parser___parser_nodes[571])
-#define COLOR_parser___parser_nodes___ASignature (SFT_parser___parser_nodes[572])
-#define ATTR_parser___parser_nodes___ASignature____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 0))
-#define ATTR_parser___parser_nodes___ASignature____n_params(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 1))
-#define ATTR_parser___parser_nodes___ASignature____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 2))
-#define ATTR_parser___parser_nodes___ASignature____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 3))
-#define ATTR_parser___parser_nodes___ASignature____n_closure_decls(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___ASignature (SFT_parser___parser_nodes[574] + 0)
-#define CALL_parser___parser_nodes___ASignature___n_opar(recv) ((parser___parser_nodes___ASignature___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[574] + 1)))
-#define CALL_parser___parser_nodes___ASignature___n_params(recv) ((parser___parser_nodes___ASignature___n_params_t)CALL((recv), (SFT_parser___parser_nodes[574] + 2)))
-#define CALL_parser___parser_nodes___ASignature___n_cpar(recv) ((parser___parser_nodes___ASignature___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[574] + 3)))
-#define CALL_parser___parser_nodes___ASignature___n_type(recv) ((parser___parser_nodes___ASignature___n_type_t)CALL((recv), (SFT_parser___parser_nodes[574] + 4)))
-#define CALL_parser___parser_nodes___ASignature___n_closure_decls(recv) ((parser___parser_nodes___ASignature___n_closure_decls_t)CALL((recv), (SFT_parser___parser_nodes[574] + 5)))
-#define ID_parser___parser_nodes___AParam (SFT_parser___parser_nodes[575])
-#define COLOR_parser___parser_nodes___AParam (SFT_parser___parser_nodes[576])
-#define ATTR_parser___parser_nodes___AParam____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[577] + 0))
-#define ATTR_parser___parser_nodes___AParam____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[577] + 1))
-#define ATTR_parser___parser_nodes___AParam____n_dotdotdot(recv) ATTR(recv, (SFT_parser___parser_nodes[577] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AParam (SFT_parser___parser_nodes[578] + 0)
-#define CALL_parser___parser_nodes___AParam___n_id(recv) ((parser___parser_nodes___AParam___n_id_t)CALL((recv), (SFT_parser___parser_nodes[578] + 1)))
-#define CALL_parser___parser_nodes___AParam___n_type(recv) ((parser___parser_nodes___AParam___n_type_t)CALL((recv), (SFT_parser___parser_nodes[578] + 2)))
-#define CALL_parser___parser_nodes___AParam___n_dotdotdot(recv) ((parser___parser_nodes___AParam___n_dotdotdot_t)CALL((recv), (SFT_parser___parser_nodes[578] + 3)))
-#define ID_parser___parser_nodes___AClosureDecl (SFT_parser___parser_nodes[579])
-#define COLOR_parser___parser_nodes___AClosureDecl (SFT_parser___parser_nodes[580])
-#define ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 0))
-#define ATTR_parser___parser_nodes___AClosureDecl____n_bang(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 1))
-#define ATTR_parser___parser_nodes___AClosureDecl____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 2))
-#define ATTR_parser___parser_nodes___AClosureDecl____n_signature(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 3))
-#define ATTR_parser___parser_nodes___AClosureDecl____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___AClosureDecl (SFT_parser___parser_nodes[582] + 0)
-#define CALL_parser___parser_nodes___AClosureDecl___n_kwbreak(recv) ((parser___parser_nodes___AClosureDecl___n_kwbreak_t)CALL((recv), (SFT_parser___parser_nodes[582] + 1)))
-#define CALL_parser___parser_nodes___AClosureDecl___n_bang(recv) ((parser___parser_nodes___AClosureDecl___n_bang_t)CALL((recv), (SFT_parser___parser_nodes[582] + 2)))
-#define CALL_parser___parser_nodes___AClosureDecl___n_id(recv) ((parser___parser_nodes___AClosureDecl___n_id_t)CALL((recv), (SFT_parser___parser_nodes[582] + 3)))
-#define CALL_parser___parser_nodes___AClosureDecl___n_signature(recv) ((parser___parser_nodes___AClosureDecl___n_signature_t)CALL((recv), (SFT_parser___parser_nodes[582] + 4)))
-#define CALL_parser___parser_nodes___AClosureDecl___n_expr(recv) ((parser___parser_nodes___AClosureDecl___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[582] + 5)))
-#define ID_parser___parser_nodes___AType (SFT_parser___parser_nodes[583])
-#define COLOR_parser___parser_nodes___AType (SFT_parser___parser_nodes[584])
-#define ATTR_parser___parser_nodes___AType____n_kwnullable(recv) ATTR(recv, (SFT_parser___parser_nodes[585] + 0))
-#define ATTR_parser___parser_nodes___AType____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[585] + 1))
-#define ATTR_parser___parser_nodes___AType____n_types(recv) ATTR(recv, (SFT_parser___parser_nodes[585] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AType (SFT_parser___parser_nodes[586] + 0)
-#define CALL_parser___parser_nodes___AType___n_kwnullable(recv) ((parser___parser_nodes___AType___n_kwnullable_t)CALL((recv), (SFT_parser___parser_nodes[586] + 1)))
-#define CALL_parser___parser_nodes___AType___n_id(recv) ((parser___parser_nodes___AType___n_id_t)CALL((recv), (SFT_parser___parser_nodes[586] + 2)))
-#define CALL_parser___parser_nodes___AType___n_types(recv) ((parser___parser_nodes___AType___n_types_t)CALL((recv), (SFT_parser___parser_nodes[586] + 3)))
-#define ID_parser___parser_nodes___ALabel (SFT_parser___parser_nodes[587])
-#define COLOR_parser___parser_nodes___ALabel (SFT_parser___parser_nodes[588])
-#define ATTR_parser___parser_nodes___ALabel____n_kwlabel(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 0))
-#define ATTR_parser___parser_nodes___ALabel____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ALabel (SFT_parser___parser_nodes[590] + 0)
-#define CALL_parser___parser_nodes___ALabel___n_kwlabel(recv) ((parser___parser_nodes___ALabel___n_kwlabel_t)CALL((recv), (SFT_parser___parser_nodes[590] + 1)))
-#define CALL_parser___parser_nodes___ALabel___n_id(recv) ((parser___parser_nodes___ALabel___n_id_t)CALL((recv), (SFT_parser___parser_nodes[590] + 2)))
-#define ID_parser___parser_nodes___AExpr (SFT_parser___parser_nodes[591])
-#define COLOR_parser___parser_nodes___AExpr (SFT_parser___parser_nodes[592])
-#define INIT_TABLE_POS_parser___parser_nodes___AExpr (SFT_parser___parser_nodes[593] + 0)
-#define ID_parser___parser_nodes___ABlockExpr (SFT_parser___parser_nodes[594])
-#define COLOR_parser___parser_nodes___ABlockExpr (SFT_parser___parser_nodes[595])
-#define ATTR_parser___parser_nodes___ABlockExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[596] + 0))
-#define ATTR_parser___parser_nodes___ABlockExpr____n_kwend(recv) ATTR(recv, (SFT_parser___parser_nodes[596] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ABlockExpr (SFT_parser___parser_nodes[597] + 0)
-#define CALL_parser___parser_nodes___ABlockExpr___n_expr(recv) ((parser___parser_nodes___ABlockExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[597] + 1)))
-#define CALL_parser___parser_nodes___ABlockExpr___n_kwend(recv) ((parser___parser_nodes___ABlockExpr___n_kwend_t)CALL((recv), (SFT_parser___parser_nodes[597] + 2)))
-#define ID_parser___parser_nodes___AVardeclExpr (SFT_parser___parser_nodes[598])
-#define COLOR_parser___parser_nodes___AVardeclExpr (SFT_parser___parser_nodes[599])
-#define ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(recv) ATTR(recv, (SFT_parser___parser_nodes[600] + 0))
-#define ATTR_parser___parser_nodes___AVardeclExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[600] + 1))
-#define ATTR_parser___parser_nodes___AVardeclExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[600] + 2))
-#define ATTR_parser___parser_nodes___AVardeclExpr____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[600] + 3))
-#define ATTR_parser___parser_nodes___AVardeclExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[600] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr (SFT_parser___parser_nodes[601] + 0)
-#define CALL_parser___parser_nodes___AVardeclExpr___n_kwvar(recv) ((parser___parser_nodes___AVardeclExpr___n_kwvar_t)CALL((recv), (SFT_parser___parser_nodes[601] + 1)))
-#define CALL_parser___parser_nodes___AVardeclExpr___n_id(recv) ((parser___parser_nodes___AVardeclExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[601] + 2)))
-#define CALL_parser___parser_nodes___AVardeclExpr___n_type(recv) ((parser___parser_nodes___AVardeclExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[601] + 3)))
-#define CALL_parser___parser_nodes___AVardeclExpr___n_assign(recv) ((parser___parser_nodes___AVardeclExpr___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[601] + 4)))
-#define CALL_parser___parser_nodes___AVardeclExpr___n_expr(recv) ((parser___parser_nodes___AVardeclExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[601] + 5)))
-#define ID_parser___parser_nodes___AReturnExpr (SFT_parser___parser_nodes[602])
-#define COLOR_parser___parser_nodes___AReturnExpr (SFT_parser___parser_nodes[603])
-#define ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(recv) ATTR(recv, (SFT_parser___parser_nodes[604] + 0))
-#define ATTR_parser___parser_nodes___AReturnExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[604] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AReturnExpr (SFT_parser___parser_nodes[605] + 0)
-#define CALL_parser___parser_nodes___AReturnExpr___n_kwreturn(recv) ((parser___parser_nodes___AReturnExpr___n_kwreturn_t)CALL((recv), (SFT_parser___parser_nodes[605] + 1)))
-#define CALL_parser___parser_nodes___AReturnExpr___n_expr(recv) ((parser___parser_nodes___AReturnExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[605] + 2)))
-#define ID_parser___parser_nodes___ALabelable (SFT_parser___parser_nodes[606])
-#define COLOR_parser___parser_nodes___ALabelable (SFT_parser___parser_nodes[607])
-#define ATTR_parser___parser_nodes___ALabelable____n_label(recv) ATTR(recv, (SFT_parser___parser_nodes[608] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ALabelable (SFT_parser___parser_nodes[609] + 0)
-#define CALL_parser___parser_nodes___ALabelable___n_label(recv) ((parser___parser_nodes___ALabelable___n_label_t)CALL((recv), (SFT_parser___parser_nodes[609] + 1)))
-#define ID_parser___parser_nodes___ABreakExpr (SFT_parser___parser_nodes[610])
-#define COLOR_parser___parser_nodes___ABreakExpr (SFT_parser___parser_nodes[611])
-#define ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(recv) ATTR(recv, (SFT_parser___parser_nodes[612] + 0))
-#define ATTR_parser___parser_nodes___ABreakExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[612] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ABreakExpr (SFT_parser___parser_nodes[613] + 0)
-#define CALL_parser___parser_nodes___ABreakExpr___n_kwbreak(recv) ((parser___parser_nodes___ABreakExpr___n_kwbreak_t)CALL((recv), (SFT_parser___parser_nodes[613] + 1)))
-#define CALL_parser___parser_nodes___ABreakExpr___n_expr(recv) ((parser___parser_nodes___ABreakExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[613] + 2)))
-#define ID_parser___parser_nodes___AAbortExpr (SFT_parser___parser_nodes[614])
-#define COLOR_parser___parser_nodes___AAbortExpr (SFT_parser___parser_nodes[615])
-#define ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(recv) ATTR(recv, (SFT_parser___parser_nodes[616] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AAbortExpr (SFT_parser___parser_nodes[617] + 0)
-#define CALL_parser___parser_nodes___AAbortExpr___n_kwabort(recv) ((parser___parser_nodes___AAbortExpr___n_kwabort_t)CALL((recv), (SFT_parser___parser_nodes[617] + 1)))
-#define ID_parser___parser_nodes___AContinueExpr (SFT_parser___parser_nodes[618])
-#define COLOR_parser___parser_nodes___AContinueExpr (SFT_parser___parser_nodes[619])
-#define ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(recv) ATTR(recv, (SFT_parser___parser_nodes[620] + 0))
-#define ATTR_parser___parser_nodes___AContinueExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[620] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AContinueExpr (SFT_parser___parser_nodes[621] + 0)
-#define CALL_parser___parser_nodes___AContinueExpr___n_kwcontinue(recv) ((parser___parser_nodes___AContinueExpr___n_kwcontinue_t)CALL((recv), (SFT_parser___parser_nodes[621] + 1)))
-#define CALL_parser___parser_nodes___AContinueExpr___n_expr(recv) ((parser___parser_nodes___AContinueExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[621] + 2)))
-#define ID_parser___parser_nodes___ADoExpr (SFT_parser___parser_nodes[622])
-#define COLOR_parser___parser_nodes___ADoExpr (SFT_parser___parser_nodes[623])
-#define ATTR_parser___parser_nodes___ADoExpr____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[624] + 0))
-#define ATTR_parser___parser_nodes___ADoExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[624] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ADoExpr (SFT_parser___parser_nodes[625] + 0)
-#define CALL_parser___parser_nodes___ADoExpr___n_kwdo(recv) ((parser___parser_nodes___ADoExpr___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[625] + 1)))
-#define CALL_parser___parser_nodes___ADoExpr___n_block(recv) ((parser___parser_nodes___ADoExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[625] + 2)))
-#define ID_parser___parser_nodes___AIfExpr (SFT_parser___parser_nodes[626])
-#define COLOR_parser___parser_nodes___AIfExpr (SFT_parser___parser_nodes[627])
-#define ATTR_parser___parser_nodes___AIfExpr____n_kwif(recv) ATTR(recv, (SFT_parser___parser_nodes[628] + 0))
-#define ATTR_parser___parser_nodes___AIfExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[628] + 1))
-#define ATTR_parser___parser_nodes___AIfExpr____n_then(recv) ATTR(recv, (SFT_parser___parser_nodes[628] + 2))
-#define ATTR_parser___parser_nodes___AIfExpr____n_else(recv) ATTR(recv, (SFT_parser___parser_nodes[628] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AIfExpr (SFT_parser___parser_nodes[629] + 0)
-#define CALL_parser___parser_nodes___AIfExpr___n_kwif(recv) ((parser___parser_nodes___AIfExpr___n_kwif_t)CALL((recv), (SFT_parser___parser_nodes[629] + 1)))
-#define CALL_parser___parser_nodes___AIfExpr___n_expr(recv) ((parser___parser_nodes___AIfExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[629] + 2)))
-#define CALL_parser___parser_nodes___AIfExpr___n_then(recv) ((parser___parser_nodes___AIfExpr___n_then_t)CALL((recv), (SFT_parser___parser_nodes[629] + 3)))
-#define CALL_parser___parser_nodes___AIfExpr___n_else(recv) ((parser___parser_nodes___AIfExpr___n_else_t)CALL((recv), (SFT_parser___parser_nodes[629] + 4)))
-#define ID_parser___parser_nodes___AIfexprExpr (SFT_parser___parser_nodes[630])
-#define COLOR_parser___parser_nodes___AIfexprExpr (SFT_parser___parser_nodes[631])
-#define ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 0))
-#define ATTR_parser___parser_nodes___AIfexprExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 1))
-#define ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 2))
-#define ATTR_parser___parser_nodes___AIfexprExpr____n_then(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 3))
-#define ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 4))
-#define ATTR_parser___parser_nodes___AIfexprExpr____n_else(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 5))
-#define INIT_TABLE_POS_parser___parser_nodes___AIfexprExpr (SFT_parser___parser_nodes[633] + 0)
-#define CALL_parser___parser_nodes___AIfexprExpr___n_kwif(recv) ((parser___parser_nodes___AIfexprExpr___n_kwif_t)CALL((recv), (SFT_parser___parser_nodes[633] + 1)))
-#define CALL_parser___parser_nodes___AIfexprExpr___n_expr(recv) ((parser___parser_nodes___AIfexprExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[633] + 2)))
-#define CALL_parser___parser_nodes___AIfexprExpr___n_kwthen(recv) ((parser___parser_nodes___AIfexprExpr___n_kwthen_t)CALL((recv), (SFT_parser___parser_nodes[633] + 3)))
-#define CALL_parser___parser_nodes___AIfexprExpr___n_then(recv) ((parser___parser_nodes___AIfexprExpr___n_then_t)CALL((recv), (SFT_parser___parser_nodes[633] + 4)))
-#define CALL_parser___parser_nodes___AIfexprExpr___n_kwelse(recv) ((parser___parser_nodes___AIfexprExpr___n_kwelse_t)CALL((recv), (SFT_parser___parser_nodes[633] + 5)))
-#define CALL_parser___parser_nodes___AIfexprExpr___n_else(recv) ((parser___parser_nodes___AIfexprExpr___n_else_t)CALL((recv), (SFT_parser___parser_nodes[633] + 6)))
-#define ID_parser___parser_nodes___AWhileExpr (SFT_parser___parser_nodes[634])
-#define COLOR_parser___parser_nodes___AWhileExpr (SFT_parser___parser_nodes[635])
-#define ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 0))
-#define ATTR_parser___parser_nodes___AWhileExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 1))
-#define ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 2))
-#define ATTR_parser___parser_nodes___AWhileExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AWhileExpr (SFT_parser___parser_nodes[637] + 0)
-#define CALL_parser___parser_nodes___AWhileExpr___n_kwwhile(recv) ((parser___parser_nodes___AWhileExpr___n_kwwhile_t)CALL((recv), (SFT_parser___parser_nodes[637] + 1)))
-#define CALL_parser___parser_nodes___AWhileExpr___n_expr(recv) ((parser___parser_nodes___AWhileExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[637] + 2)))
-#define CALL_parser___parser_nodes___AWhileExpr___n_kwdo(recv) ((parser___parser_nodes___AWhileExpr___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[637] + 3)))
-#define CALL_parser___parser_nodes___AWhileExpr___n_block(recv) ((parser___parser_nodes___AWhileExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[637] + 4)))
-#define ID_parser___parser_nodes___ALoopExpr (SFT_parser___parser_nodes[638])
-#define COLOR_parser___parser_nodes___ALoopExpr (SFT_parser___parser_nodes[639])
-#define ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 0))
-#define ATTR_parser___parser_nodes___ALoopExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ALoopExpr (SFT_parser___parser_nodes[641] + 0)
-#define CALL_parser___parser_nodes___ALoopExpr___n_kwloop(recv) ((parser___parser_nodes___ALoopExpr___n_kwloop_t)CALL((recv), (SFT_parser___parser_nodes[641] + 1)))
-#define CALL_parser___parser_nodes___ALoopExpr___n_block(recv) ((parser___parser_nodes___ALoopExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[641] + 2)))
-#define ID_parser___parser_nodes___AForExpr (SFT_parser___parser_nodes[642])
-#define COLOR_parser___parser_nodes___AForExpr (SFT_parser___parser_nodes[643])
-#define ATTR_parser___parser_nodes___AForExpr____n_kwfor(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 0))
-#define ATTR_parser___parser_nodes___AForExpr____n_ids(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 1))
-#define ATTR_parser___parser_nodes___AForExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 2))
-#define ATTR_parser___parser_nodes___AForExpr____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 3))
-#define ATTR_parser___parser_nodes___AForExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___AForExpr (SFT_parser___parser_nodes[645] + 0)
-#define CALL_parser___parser_nodes___AForExpr___n_kwfor(recv) ((parser___parser_nodes___AForExpr___n_kwfor_t)CALL((recv), (SFT_parser___parser_nodes[645] + 1)))
-#define CALL_parser___parser_nodes___AForExpr___n_ids(recv) ((parser___parser_nodes___AForExpr___n_ids_t)CALL((recv), (SFT_parser___parser_nodes[645] + 2)))
-#define CALL_parser___parser_nodes___AForExpr___n_expr(recv) ((parser___parser_nodes___AForExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[645] + 3)))
-#define CALL_parser___parser_nodes___AForExpr___n_kwdo(recv) ((parser___parser_nodes___AForExpr___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[645] + 4)))
-#define CALL_parser___parser_nodes___AForExpr___n_block(recv) ((parser___parser_nodes___AForExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[645] + 5)))
-#define ID_parser___parser_nodes___AAssertExpr (SFT_parser___parser_nodes[646])
-#define COLOR_parser___parser_nodes___AAssertExpr (SFT_parser___parser_nodes[647])
-#define ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(recv) ATTR(recv, (SFT_parser___parser_nodes[648] + 0))
-#define ATTR_parser___parser_nodes___AAssertExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[648] + 1))
-#define ATTR_parser___parser_nodes___AAssertExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[648] + 2))
-#define ATTR_parser___parser_nodes___AAssertExpr____n_else(recv) ATTR(recv, (SFT_parser___parser_nodes[648] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AAssertExpr (SFT_parser___parser_nodes[649] + 0)
-#define CALL_parser___parser_nodes___AAssertExpr___n_kwassert(recv) ((parser___parser_nodes___AAssertExpr___n_kwassert_t)CALL((recv), (SFT_parser___parser_nodes[649] + 1)))
-#define CALL_parser___parser_nodes___AAssertExpr___n_id(recv) ((parser___parser_nodes___AAssertExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[649] + 2)))
-#define CALL_parser___parser_nodes___AAssertExpr___n_expr(recv) ((parser___parser_nodes___AAssertExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[649] + 3)))
-#define CALL_parser___parser_nodes___AAssertExpr___n_else(recv) ((parser___parser_nodes___AAssertExpr___n_else_t)CALL((recv), (SFT_parser___parser_nodes[649] + 4)))
-#define ID_parser___parser_nodes___AAssignFormExpr (SFT_parser___parser_nodes[650])
-#define COLOR_parser___parser_nodes___AAssignFormExpr (SFT_parser___parser_nodes[651])
-#define ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 0))
-#define ATTR_parser___parser_nodes___AAssignFormExpr____n_value(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AAssignFormExpr (SFT_parser___parser_nodes[653] + 0)
-#define CALL_parser___parser_nodes___AAssignFormExpr___n_assign(recv) ((parser___parser_nodes___AAssignFormExpr___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[653] + 1)))
-#define CALL_parser___parser_nodes___AAssignFormExpr___n_value(recv) ((parser___parser_nodes___AAssignFormExpr___n_value_t)CALL((recv), (SFT_parser___parser_nodes[653] + 2)))
-#define ID_parser___parser_nodes___AReassignFormExpr (SFT_parser___parser_nodes[654])
-#define COLOR_parser___parser_nodes___AReassignFormExpr (SFT_parser___parser_nodes[655])
-#define ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(recv) ATTR(recv, (SFT_parser___parser_nodes[656] + 0))
-#define ATTR_parser___parser_nodes___AReassignFormExpr____n_value(recv) ATTR(recv, (SFT_parser___parser_nodes[656] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AReassignFormExpr (SFT_parser___parser_nodes[657] + 0)
-#define CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(recv) ((parser___parser_nodes___AReassignFormExpr___n_assign_op_t)CALL((recv), (SFT_parser___parser_nodes[657] + 1)))
-#define CALL_parser___parser_nodes___AReassignFormExpr___n_value(recv) ((parser___parser_nodes___AReassignFormExpr___n_value_t)CALL((recv), (SFT_parser___parser_nodes[657] + 2)))
-#define ID_parser___parser_nodes___AOnceExpr (SFT_parser___parser_nodes[658])
-#define COLOR_parser___parser_nodes___AOnceExpr (SFT_parser___parser_nodes[659])
-#define ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(recv) ATTR(recv, (SFT_parser___parser_nodes[660] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AOnceExpr (SFT_parser___parser_nodes[661] + 0)
-#define CALL_parser___parser_nodes___AOnceExpr___n_kwonce(recv) ((parser___parser_nodes___AOnceExpr___n_kwonce_t)CALL((recv), (SFT_parser___parser_nodes[661] + 1)))
-#define ID_parser___parser_nodes___ASendExpr (SFT_parser___parser_nodes[662])
-#define COLOR_parser___parser_nodes___ASendExpr (SFT_parser___parser_nodes[663])
-#define ATTR_parser___parser_nodes___ASendExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[664] + 0))
-#define ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(recv) ATTR(recv, (SFT_parser___parser_nodes[664] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ASendExpr (SFT_parser___parser_nodes[665] + 0)
-#define CALL_parser___parser_nodes___ASendExpr___n_expr(recv) ((parser___parser_nodes___ASendExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[665] + 1)))
-#define CALL_parser___parser_nodes___ASendExpr___n_closure_defs(recv) ((parser___parser_nodes___ASendExpr___n_closure_defs_t)CALL((recv), (SFT_parser___parser_nodes[665] + 2)))
-#define ID_parser___parser_nodes___ABinopExpr (SFT_parser___parser_nodes[666])
-#define COLOR_parser___parser_nodes___ABinopExpr (SFT_parser___parser_nodes[667])
-#define ATTR_parser___parser_nodes___ABinopExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[668] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ABinopExpr (SFT_parser___parser_nodes[669] + 0)
-#define CALL_parser___parser_nodes___ABinopExpr___n_expr2(recv) ((parser___parser_nodes___ABinopExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[669] + 1)))
-#define ID_parser___parser_nodes___ABoolExpr (SFT_parser___parser_nodes[670])
-#define COLOR_parser___parser_nodes___ABoolExpr (SFT_parser___parser_nodes[671])
-#define INIT_TABLE_POS_parser___parser_nodes___ABoolExpr (SFT_parser___parser_nodes[672] + 0)
-#define ID_parser___parser_nodes___AOrExpr (SFT_parser___parser_nodes[673])
-#define COLOR_parser___parser_nodes___AOrExpr (SFT_parser___parser_nodes[674])
-#define ATTR_parser___parser_nodes___AOrExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[675] + 0))
-#define ATTR_parser___parser_nodes___AOrExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[675] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AOrExpr (SFT_parser___parser_nodes[676] + 0)
-#define CALL_parser___parser_nodes___AOrExpr___n_expr(recv) ((parser___parser_nodes___AOrExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[676] + 1)))
-#define CALL_parser___parser_nodes___AOrExpr___n_expr2(recv) ((parser___parser_nodes___AOrExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[676] + 2)))
-#define ID_parser___parser_nodes___AAndExpr (SFT_parser___parser_nodes[677])
-#define COLOR_parser___parser_nodes___AAndExpr (SFT_parser___parser_nodes[678])
-#define ATTR_parser___parser_nodes___AAndExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[679] + 0))
-#define ATTR_parser___parser_nodes___AAndExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[679] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AAndExpr (SFT_parser___parser_nodes[680] + 0)
-#define CALL_parser___parser_nodes___AAndExpr___n_expr(recv) ((parser___parser_nodes___AAndExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[680] + 1)))
-#define CALL_parser___parser_nodes___AAndExpr___n_expr2(recv) ((parser___parser_nodes___AAndExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[680] + 2)))
-#define ID_parser___parser_nodes___AOrElseExpr (SFT_parser___parser_nodes[681])
-#define COLOR_parser___parser_nodes___AOrElseExpr (SFT_parser___parser_nodes[682])
-#define ATTR_parser___parser_nodes___AOrElseExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[683] + 0))
-#define ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[683] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AOrElseExpr (SFT_parser___parser_nodes[684] + 0)
-#define CALL_parser___parser_nodes___AOrElseExpr___n_expr(recv) ((parser___parser_nodes___AOrElseExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[684] + 1)))
-#define CALL_parser___parser_nodes___AOrElseExpr___n_expr2(recv) ((parser___parser_nodes___AOrElseExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[684] + 2)))
-#define ID_parser___parser_nodes___ANotExpr (SFT_parser___parser_nodes[685])
-#define COLOR_parser___parser_nodes___ANotExpr (SFT_parser___parser_nodes[686])
-#define ATTR_parser___parser_nodes___ANotExpr____n_kwnot(recv) ATTR(recv, (SFT_parser___parser_nodes[687] + 0))
-#define ATTR_parser___parser_nodes___ANotExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[687] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ANotExpr (SFT_parser___parser_nodes[688] + 0)
-#define CALL_parser___parser_nodes___ANotExpr___n_kwnot(recv) ((parser___parser_nodes___ANotExpr___n_kwnot_t)CALL((recv), (SFT_parser___parser_nodes[688] + 1)))
-#define CALL_parser___parser_nodes___ANotExpr___n_expr(recv) ((parser___parser_nodes___ANotExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[688] + 2)))
-#define ID_parser___parser_nodes___AEqExpr (SFT_parser___parser_nodes[689])
-#define COLOR_parser___parser_nodes___AEqExpr (SFT_parser___parser_nodes[690])
-#define INIT_TABLE_POS_parser___parser_nodes___AEqExpr (SFT_parser___parser_nodes[691] + 0)
-#define ID_parser___parser_nodes___AEeExpr (SFT_parser___parser_nodes[692])
-#define COLOR_parser___parser_nodes___AEeExpr (SFT_parser___parser_nodes[693])
-#define ATTR_parser___parser_nodes___AEeExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[694] + 0))
-#define ATTR_parser___parser_nodes___AEeExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[694] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AEeExpr (SFT_parser___parser_nodes[695] + 0)
-#define CALL_parser___parser_nodes___AEeExpr___n_expr(recv) ((parser___parser_nodes___AEeExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[695] + 1)))
-#define CALL_parser___parser_nodes___AEeExpr___n_expr2(recv) ((parser___parser_nodes___AEeExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[695] + 2)))
-#define ID_parser___parser_nodes___ANeExpr (SFT_parser___parser_nodes[696])
-#define COLOR_parser___parser_nodes___ANeExpr (SFT_parser___parser_nodes[697])
-#define INIT_TABLE_POS_parser___parser_nodes___ANeExpr (SFT_parser___parser_nodes[698] + 0)
-#define ID_parser___parser_nodes___ALtExpr (SFT_parser___parser_nodes[699])
-#define COLOR_parser___parser_nodes___ALtExpr (SFT_parser___parser_nodes[700])
-#define INIT_TABLE_POS_parser___parser_nodes___ALtExpr (SFT_parser___parser_nodes[701] + 0)
-#define ID_parser___parser_nodes___ALeExpr (SFT_parser___parser_nodes[702])
-#define COLOR_parser___parser_nodes___ALeExpr (SFT_parser___parser_nodes[703])
-#define INIT_TABLE_POS_parser___parser_nodes___ALeExpr (SFT_parser___parser_nodes[704] + 0)
-#define ID_parser___parser_nodes___ALlExpr (SFT_parser___parser_nodes[705])
-#define COLOR_parser___parser_nodes___ALlExpr (SFT_parser___parser_nodes[706])
-#define INIT_TABLE_POS_parser___parser_nodes___ALlExpr (SFT_parser___parser_nodes[707] + 0)
-#define ID_parser___parser_nodes___AGtExpr (SFT_parser___parser_nodes[708])
-#define COLOR_parser___parser_nodes___AGtExpr (SFT_parser___parser_nodes[709])
-#define INIT_TABLE_POS_parser___parser_nodes___AGtExpr (SFT_parser___parser_nodes[710] + 0)
-#define ID_parser___parser_nodes___AGeExpr (SFT_parser___parser_nodes[711])
-#define COLOR_parser___parser_nodes___AGeExpr (SFT_parser___parser_nodes[712])
-#define INIT_TABLE_POS_parser___parser_nodes___AGeExpr (SFT_parser___parser_nodes[713] + 0)
-#define ID_parser___parser_nodes___AGgExpr (SFT_parser___parser_nodes[714])
-#define COLOR_parser___parser_nodes___AGgExpr (SFT_parser___parser_nodes[715])
-#define INIT_TABLE_POS_parser___parser_nodes___AGgExpr (SFT_parser___parser_nodes[716] + 0)
-#define ID_parser___parser_nodes___AIsaExpr (SFT_parser___parser_nodes[717])
-#define COLOR_parser___parser_nodes___AIsaExpr (SFT_parser___parser_nodes[718])
-#define ATTR_parser___parser_nodes___AIsaExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[719] + 0))
-#define ATTR_parser___parser_nodes___AIsaExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[719] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AIsaExpr (SFT_parser___parser_nodes[720] + 0)
-#define CALL_parser___parser_nodes___AIsaExpr___n_expr(recv) ((parser___parser_nodes___AIsaExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[720] + 1)))
-#define CALL_parser___parser_nodes___AIsaExpr___n_type(recv) ((parser___parser_nodes___AIsaExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[720] + 2)))
-#define ID_parser___parser_nodes___APlusExpr (SFT_parser___parser_nodes[721])
-#define COLOR_parser___parser_nodes___APlusExpr (SFT_parser___parser_nodes[722])
-#define INIT_TABLE_POS_parser___parser_nodes___APlusExpr (SFT_parser___parser_nodes[723] + 0)
-#define ID_parser___parser_nodes___AMinusExpr (SFT_parser___parser_nodes[724])
-#define COLOR_parser___parser_nodes___AMinusExpr (SFT_parser___parser_nodes[725])
-#define INIT_TABLE_POS_parser___parser_nodes___AMinusExpr (SFT_parser___parser_nodes[726] + 0)
-#define ID_parser___parser_nodes___AStarshipExpr (SFT_parser___parser_nodes[727])
-#define COLOR_parser___parser_nodes___AStarshipExpr (SFT_parser___parser_nodes[728])
-#define INIT_TABLE_POS_parser___parser_nodes___AStarshipExpr (SFT_parser___parser_nodes[729] + 0)
-#define ID_parser___parser_nodes___AStarExpr (SFT_parser___parser_nodes[730])
-#define COLOR_parser___parser_nodes___AStarExpr (SFT_parser___parser_nodes[731])
-#define INIT_TABLE_POS_parser___parser_nodes___AStarExpr (SFT_parser___parser_nodes[732] + 0)
-#define ID_parser___parser_nodes___ASlashExpr (SFT_parser___parser_nodes[733])
-#define COLOR_parser___parser_nodes___ASlashExpr (SFT_parser___parser_nodes[734])
-#define INIT_TABLE_POS_parser___parser_nodes___ASlashExpr (SFT_parser___parser_nodes[735] + 0)
-#define ID_parser___parser_nodes___APercentExpr (SFT_parser___parser_nodes[736])
-#define COLOR_parser___parser_nodes___APercentExpr (SFT_parser___parser_nodes[737])
-#define INIT_TABLE_POS_parser___parser_nodes___APercentExpr (SFT_parser___parser_nodes[738] + 0)
-#define ID_parser___parser_nodes___AUminusExpr (SFT_parser___parser_nodes[739])
-#define COLOR_parser___parser_nodes___AUminusExpr (SFT_parser___parser_nodes[740])
-#define ATTR_parser___parser_nodes___AUminusExpr____n_minus(recv) ATTR(recv, (SFT_parser___parser_nodes[741] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AUminusExpr (SFT_parser___parser_nodes[742] + 0)
-#define CALL_parser___parser_nodes___AUminusExpr___n_minus(recv) ((parser___parser_nodes___AUminusExpr___n_minus_t)CALL((recv), (SFT_parser___parser_nodes[742] + 1)))
-#define ID_parser___parser_nodes___ANewExpr (SFT_parser___parser_nodes[743])
-#define COLOR_parser___parser_nodes___ANewExpr (SFT_parser___parser_nodes[744])
-#define ATTR_parser___parser_nodes___ANewExpr____n_kwnew(recv) ATTR(recv, (SFT_parser___parser_nodes[745] + 0))
-#define ATTR_parser___parser_nodes___ANewExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[745] + 1))
-#define ATTR_parser___parser_nodes___ANewExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[745] + 2))
-#define ATTR_parser___parser_nodes___ANewExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[745] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___ANewExpr (SFT_parser___parser_nodes[746] + 0)
-#define CALL_parser___parser_nodes___ANewExpr___n_kwnew(recv) ((parser___parser_nodes___ANewExpr___n_kwnew_t)CALL((recv), (SFT_parser___parser_nodes[746] + 1)))
-#define CALL_parser___parser_nodes___ANewExpr___n_type(recv) ((parser___parser_nodes___ANewExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[746] + 2)))
-#define CALL_parser___parser_nodes___ANewExpr___n_id(recv) ((parser___parser_nodes___ANewExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[746] + 3)))
-#define CALL_parser___parser_nodes___ANewExpr___n_args(recv) ((parser___parser_nodes___ANewExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[746] + 4)))
-#define ID_parser___parser_nodes___AAttrFormExpr (SFT_parser___parser_nodes[747])
-#define COLOR_parser___parser_nodes___AAttrFormExpr (SFT_parser___parser_nodes[748])
-#define ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[749] + 0))
-#define ATTR_parser___parser_nodes___AAttrFormExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[749] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AAttrFormExpr (SFT_parser___parser_nodes[750] + 0)
-#define CALL_parser___parser_nodes___AAttrFormExpr___n_expr(recv) ((parser___parser_nodes___AAttrFormExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[750] + 1)))
-#define CALL_parser___parser_nodes___AAttrFormExpr___n_id(recv) ((parser___parser_nodes___AAttrFormExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[750] + 2)))
-#define ID_parser___parser_nodes___AAttrExpr (SFT_parser___parser_nodes[751])
-#define COLOR_parser___parser_nodes___AAttrExpr (SFT_parser___parser_nodes[752])
-#define INIT_TABLE_POS_parser___parser_nodes___AAttrExpr (SFT_parser___parser_nodes[753] + 0)
-#define ID_parser___parser_nodes___AAttrAssignExpr (SFT_parser___parser_nodes[754])
-#define COLOR_parser___parser_nodes___AAttrAssignExpr (SFT_parser___parser_nodes[755])
-#define INIT_TABLE_POS_parser___parser_nodes___AAttrAssignExpr (SFT_parser___parser_nodes[756] + 0)
-#define ID_parser___parser_nodes___ACallFormExpr (SFT_parser___parser_nodes[757])
-#define COLOR_parser___parser_nodes___ACallFormExpr (SFT_parser___parser_nodes[758])
-#define ATTR_parser___parser_nodes___ACallFormExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[759] + 0))
-#define ATTR_parser___parser_nodes___ACallFormExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[759] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ACallFormExpr (SFT_parser___parser_nodes[760] + 0)
-#define CALL_parser___parser_nodes___ACallFormExpr___n_id(recv) ((parser___parser_nodes___ACallFormExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[760] + 1)))
-#define CALL_parser___parser_nodes___ACallFormExpr___n_args(recv) ((parser___parser_nodes___ACallFormExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[760] + 2)))
-#define ID_parser___parser_nodes___ASendReassignFormExpr (SFT_parser___parser_nodes[761])
-#define COLOR_parser___parser_nodes___ASendReassignFormExpr (SFT_parser___parser_nodes[762])
-#define INIT_TABLE_POS_parser___parser_nodes___ASendReassignFormExpr (SFT_parser___parser_nodes[763] + 0)
-#define ID_parser___parser_nodes___AAttrReassignExpr (SFT_parser___parser_nodes[764])
-#define COLOR_parser___parser_nodes___AAttrReassignExpr (SFT_parser___parser_nodes[765])
-#define INIT_TABLE_POS_parser___parser_nodes___AAttrReassignExpr (SFT_parser___parser_nodes[766] + 0)
-#define ID_parser___parser_nodes___ACallExpr (SFT_parser___parser_nodes[767])
-#define COLOR_parser___parser_nodes___ACallExpr (SFT_parser___parser_nodes[768])
-#define INIT_TABLE_POS_parser___parser_nodes___ACallExpr (SFT_parser___parser_nodes[769] + 0)
-#define ID_parser___parser_nodes___ACallAssignExpr (SFT_parser___parser_nodes[770])
-#define COLOR_parser___parser_nodes___ACallAssignExpr (SFT_parser___parser_nodes[771])
-#define INIT_TABLE_POS_parser___parser_nodes___ACallAssignExpr (SFT_parser___parser_nodes[772] + 0)
-#define ID_parser___parser_nodes___ACallReassignExpr (SFT_parser___parser_nodes[773])
-#define COLOR_parser___parser_nodes___ACallReassignExpr (SFT_parser___parser_nodes[774])
-#define INIT_TABLE_POS_parser___parser_nodes___ACallReassignExpr (SFT_parser___parser_nodes[775] + 0)
-#define ID_parser___parser_nodes___ASuperExpr (SFT_parser___parser_nodes[776])
-#define COLOR_parser___parser_nodes___ASuperExpr (SFT_parser___parser_nodes[777])
-#define ATTR_parser___parser_nodes___ASuperExpr____n_qualified(recv) ATTR(recv, (SFT_parser___parser_nodes[778] + 0))
-#define ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(recv) ATTR(recv, (SFT_parser___parser_nodes[778] + 1))
-#define ATTR_parser___parser_nodes___ASuperExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[778] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___ASuperExpr (SFT_parser___parser_nodes[779] + 0)
-#define CALL_parser___parser_nodes___ASuperExpr___n_qualified(recv) ((parser___parser_nodes___ASuperExpr___n_qualified_t)CALL((recv), (SFT_parser___parser_nodes[779] + 1)))
-#define CALL_parser___parser_nodes___ASuperExpr___n_kwsuper(recv) ((parser___parser_nodes___ASuperExpr___n_kwsuper_t)CALL((recv), (SFT_parser___parser_nodes[779] + 2)))
-#define CALL_parser___parser_nodes___ASuperExpr___n_args(recv) ((parser___parser_nodes___ASuperExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[779] + 3)))
-#define ID_parser___parser_nodes___AInitExpr (SFT_parser___parser_nodes[780])
-#define COLOR_parser___parser_nodes___AInitExpr (SFT_parser___parser_nodes[781])
-#define ATTR_parser___parser_nodes___AInitExpr____n_kwinit(recv) ATTR(recv, (SFT_parser___parser_nodes[782] + 0))
-#define ATTR_parser___parser_nodes___AInitExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[782] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AInitExpr (SFT_parser___parser_nodes[783] + 0)
-#define CALL_parser___parser_nodes___AInitExpr___n_kwinit(recv) ((parser___parser_nodes___AInitExpr___n_kwinit_t)CALL((recv), (SFT_parser___parser_nodes[783] + 1)))
-#define CALL_parser___parser_nodes___AInitExpr___n_args(recv) ((parser___parser_nodes___AInitExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[783] + 2)))
-#define ID_parser___parser_nodes___ABraFormExpr (SFT_parser___parser_nodes[784])
-#define COLOR_parser___parser_nodes___ABraFormExpr (SFT_parser___parser_nodes[785])
-#define ATTR_parser___parser_nodes___ABraFormExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[786] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ABraFormExpr (SFT_parser___parser_nodes[787] + 0)
-#define CALL_parser___parser_nodes___ABraFormExpr___n_args(recv) ((parser___parser_nodes___ABraFormExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[787] + 1)))
-#define ID_parser___parser_nodes___ABraExpr (SFT_parser___parser_nodes[788])
-#define COLOR_parser___parser_nodes___ABraExpr (SFT_parser___parser_nodes[789])
-#define INIT_TABLE_POS_parser___parser_nodes___ABraExpr (SFT_parser___parser_nodes[790] + 0)
-#define ID_parser___parser_nodes___ABraAssignExpr (SFT_parser___parser_nodes[791])
-#define COLOR_parser___parser_nodes___ABraAssignExpr (SFT_parser___parser_nodes[792])
-#define INIT_TABLE_POS_parser___parser_nodes___ABraAssignExpr (SFT_parser___parser_nodes[793] + 0)
-#define ID_parser___parser_nodes___AVarFormExpr (SFT_parser___parser_nodes[794])
-#define COLOR_parser___parser_nodes___AVarFormExpr (SFT_parser___parser_nodes[795])
-#define ATTR_parser___parser_nodes___AVarFormExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[796] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AVarFormExpr (SFT_parser___parser_nodes[797] + 0)
-#define CALL_parser___parser_nodes___AVarFormExpr___n_id(recv) ((parser___parser_nodes___AVarFormExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[797] + 1)))
-#define ID_parser___parser_nodes___ABraReassignExpr (SFT_parser___parser_nodes[798])
-#define COLOR_parser___parser_nodes___ABraReassignExpr (SFT_parser___parser_nodes[799])
-#define INIT_TABLE_POS_parser___parser_nodes___ABraReassignExpr (SFT_parser___parser_nodes[800] + 0)
-#define ID_parser___parser_nodes___AClosureCallExpr (SFT_parser___parser_nodes[801])
-#define COLOR_parser___parser_nodes___AClosureCallExpr (SFT_parser___parser_nodes[802])
-#define ATTR_parser___parser_nodes___AClosureCallExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[803] + 0))
-#define ATTR_parser___parser_nodes___AClosureCallExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[803] + 1))
-#define ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(recv) ATTR(recv, (SFT_parser___parser_nodes[803] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AClosureCallExpr (SFT_parser___parser_nodes[804] + 0)
-#define CALL_parser___parser_nodes___AClosureCallExpr___n_id(recv) ((parser___parser_nodes___AClosureCallExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[804] + 1)))
-#define CALL_parser___parser_nodes___AClosureCallExpr___n_args(recv) ((parser___parser_nodes___AClosureCallExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[804] + 2)))
-#define CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(recv) ((parser___parser_nodes___AClosureCallExpr___n_closure_defs_t)CALL((recv), (SFT_parser___parser_nodes[804] + 3)))
-#define ID_parser___parser_nodes___AVarExpr (SFT_parser___parser_nodes[805])
-#define COLOR_parser___parser_nodes___AVarExpr (SFT_parser___parser_nodes[806])
-#define INIT_TABLE_POS_parser___parser_nodes___AVarExpr (SFT_parser___parser_nodes[807] + 0)
-#define ID_parser___parser_nodes___AVarAssignExpr (SFT_parser___parser_nodes[808])
-#define COLOR_parser___parser_nodes___AVarAssignExpr (SFT_parser___parser_nodes[809])
-#define INIT_TABLE_POS_parser___parser_nodes___AVarAssignExpr (SFT_parser___parser_nodes[810] + 0)
-#define ID_parser___parser_nodes___AVarReassignExpr (SFT_parser___parser_nodes[811])
-#define COLOR_parser___parser_nodes___AVarReassignExpr (SFT_parser___parser_nodes[812])
-#define INIT_TABLE_POS_parser___parser_nodes___AVarReassignExpr (SFT_parser___parser_nodes[813] + 0)
-#define ID_parser___parser_nodes___ARangeExpr (SFT_parser___parser_nodes[814])
-#define COLOR_parser___parser_nodes___ARangeExpr (SFT_parser___parser_nodes[815])
-#define ATTR_parser___parser_nodes___ARangeExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[816] + 0))
-#define ATTR_parser___parser_nodes___ARangeExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[816] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ARangeExpr (SFT_parser___parser_nodes[817] + 0)
-#define CALL_parser___parser_nodes___ARangeExpr___n_expr(recv) ((parser___parser_nodes___ARangeExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[817] + 1)))
-#define CALL_parser___parser_nodes___ARangeExpr___n_expr2(recv) ((parser___parser_nodes___ARangeExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[817] + 2)))
-#define ID_parser___parser_nodes___ACrangeExpr (SFT_parser___parser_nodes[818])
-#define COLOR_parser___parser_nodes___ACrangeExpr (SFT_parser___parser_nodes[819])
-#define ATTR_parser___parser_nodes___ACrangeExpr____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[820] + 0))
-#define ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[820] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr (SFT_parser___parser_nodes[821] + 0)
-#define CALL_parser___parser_nodes___ACrangeExpr___n_obra(recv) ((parser___parser_nodes___ACrangeExpr___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[821] + 1)))
-#define CALL_parser___parser_nodes___ACrangeExpr___n_cbra(recv) ((parser___parser_nodes___ACrangeExpr___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[821] + 2)))
-#define ID_parser___parser_nodes___AOrangeExpr (SFT_parser___parser_nodes[822])
-#define COLOR_parser___parser_nodes___AOrangeExpr (SFT_parser___parser_nodes[823])
-#define ATTR_parser___parser_nodes___AOrangeExpr____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[824] + 0))
-#define ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[824] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr (SFT_parser___parser_nodes[825] + 0)
-#define CALL_parser___parser_nodes___AOrangeExpr___n_obra(recv) ((parser___parser_nodes___AOrangeExpr___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[825] + 1)))
-#define CALL_parser___parser_nodes___AOrangeExpr___n_cbra(recv) ((parser___parser_nodes___AOrangeExpr___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[825] + 2)))
-#define ID_parser___parser_nodes___AArrayExpr (SFT_parser___parser_nodes[826])
-#define COLOR_parser___parser_nodes___AArrayExpr (SFT_parser___parser_nodes[827])
-#define ATTR_parser___parser_nodes___AArrayExpr____n_exprs(recv) ATTR(recv, (SFT_parser___parser_nodes[828] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AArrayExpr (SFT_parser___parser_nodes[829] + 0)
-#define CALL_parser___parser_nodes___AArrayExpr___n_exprs(recv) ((parser___parser_nodes___AArrayExpr___n_exprs_t)CALL((recv), (SFT_parser___parser_nodes[829] + 1)))
-#define ID_parser___parser_nodes___ASelfExpr (SFT_parser___parser_nodes[830])
-#define COLOR_parser___parser_nodes___ASelfExpr (SFT_parser___parser_nodes[831])
-#define ATTR_parser___parser_nodes___ASelfExpr____n_kwself(recv) ATTR(recv, (SFT_parser___parser_nodes[832] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ASelfExpr (SFT_parser___parser_nodes[833] + 0)
-#define CALL_parser___parser_nodes___ASelfExpr___n_kwself(recv) ((parser___parser_nodes___ASelfExpr___n_kwself_t)CALL((recv), (SFT_parser___parser_nodes[833] + 1)))
-#define ID_parser___parser_nodes___AImplicitSelfExpr (SFT_parser___parser_nodes[834])
-#define COLOR_parser___parser_nodes___AImplicitSelfExpr (SFT_parser___parser_nodes[835])
-#define INIT_TABLE_POS_parser___parser_nodes___AImplicitSelfExpr (SFT_parser___parser_nodes[836] + 0)
-#define ID_parser___parser_nodes___ATrueExpr (SFT_parser___parser_nodes[837])
-#define COLOR_parser___parser_nodes___ATrueExpr (SFT_parser___parser_nodes[838])
-#define ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(recv) ATTR(recv, (SFT_parser___parser_nodes[839] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ATrueExpr (SFT_parser___parser_nodes[840] + 0)
-#define CALL_parser___parser_nodes___ATrueExpr___n_kwtrue(recv) ((parser___parser_nodes___ATrueExpr___n_kwtrue_t)CALL((recv), (SFT_parser___parser_nodes[840] + 1)))
-#define ID_parser___parser_nodes___AFalseExpr (SFT_parser___parser_nodes[841])
-#define COLOR_parser___parser_nodes___AFalseExpr (SFT_parser___parser_nodes[842])
-#define ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(recv) ATTR(recv, (SFT_parser___parser_nodes[843] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AFalseExpr (SFT_parser___parser_nodes[844] + 0)
-#define CALL_parser___parser_nodes___AFalseExpr___n_kwfalse(recv) ((parser___parser_nodes___AFalseExpr___n_kwfalse_t)CALL((recv), (SFT_parser___parser_nodes[844] + 1)))
-#define ID_parser___parser_nodes___ANullExpr (SFT_parser___parser_nodes[845])
-#define COLOR_parser___parser_nodes___ANullExpr (SFT_parser___parser_nodes[846])
-#define ATTR_parser___parser_nodes___ANullExpr____n_kwnull(recv) ATTR(recv, (SFT_parser___parser_nodes[847] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ANullExpr (SFT_parser___parser_nodes[848] + 0)
-#define CALL_parser___parser_nodes___ANullExpr___n_kwnull(recv) ((parser___parser_nodes___ANullExpr___n_kwnull_t)CALL((recv), (SFT_parser___parser_nodes[848] + 1)))
-#define ID_parser___parser_nodes___AIntExpr (SFT_parser___parser_nodes[849])
-#define COLOR_parser___parser_nodes___AIntExpr (SFT_parser___parser_nodes[850])
-#define ATTR_parser___parser_nodes___AIntExpr____n_number(recv) ATTR(recv, (SFT_parser___parser_nodes[851] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AIntExpr (SFT_parser___parser_nodes[852] + 0)
-#define CALL_parser___parser_nodes___AIntExpr___n_number(recv) ((parser___parser_nodes___AIntExpr___n_number_t)CALL((recv), (SFT_parser___parser_nodes[852] + 1)))
-#define ID_parser___parser_nodes___AFloatExpr (SFT_parser___parser_nodes[853])
-#define COLOR_parser___parser_nodes___AFloatExpr (SFT_parser___parser_nodes[854])
-#define ATTR_parser___parser_nodes___AFloatExpr____n_float(recv) ATTR(recv, (SFT_parser___parser_nodes[855] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AFloatExpr (SFT_parser___parser_nodes[856] + 0)
-#define CALL_parser___parser_nodes___AFloatExpr___n_float(recv) ((parser___parser_nodes___AFloatExpr___n_float_t)CALL((recv), (SFT_parser___parser_nodes[856] + 1)))
-#define ID_parser___parser_nodes___ACharExpr (SFT_parser___parser_nodes[857])
-#define COLOR_parser___parser_nodes___ACharExpr (SFT_parser___parser_nodes[858])
-#define ATTR_parser___parser_nodes___ACharExpr____n_char(recv) ATTR(recv, (SFT_parser___parser_nodes[859] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ACharExpr (SFT_parser___parser_nodes[860] + 0)
-#define CALL_parser___parser_nodes___ACharExpr___n_char(recv) ((parser___parser_nodes___ACharExpr___n_char_t)CALL((recv), (SFT_parser___parser_nodes[860] + 1)))
-#define ID_parser___parser_nodes___AStringFormExpr (SFT_parser___parser_nodes[861])
-#define COLOR_parser___parser_nodes___AStringFormExpr (SFT_parser___parser_nodes[862])
-#define ATTR_parser___parser_nodes___AStringFormExpr____n_string(recv) ATTR(recv, (SFT_parser___parser_nodes[863] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AStringFormExpr (SFT_parser___parser_nodes[864] + 0)
-#define CALL_parser___parser_nodes___AStringFormExpr___n_string(recv) ((parser___parser_nodes___AStringFormExpr___n_string_t)CALL((recv), (SFT_parser___parser_nodes[864] + 1)))
-#define ID_parser___parser_nodes___AStringExpr (SFT_parser___parser_nodes[865])
-#define COLOR_parser___parser_nodes___AStringExpr (SFT_parser___parser_nodes[866])
-#define INIT_TABLE_POS_parser___parser_nodes___AStringExpr (SFT_parser___parser_nodes[867] + 0)
-#define ID_parser___parser_nodes___AStartStringExpr (SFT_parser___parser_nodes[868])
-#define COLOR_parser___parser_nodes___AStartStringExpr (SFT_parser___parser_nodes[869])
-#define INIT_TABLE_POS_parser___parser_nodes___AStartStringExpr (SFT_parser___parser_nodes[870] + 0)
-#define ID_parser___parser_nodes___AMidStringExpr (SFT_parser___parser_nodes[871])
-#define COLOR_parser___parser_nodes___AMidStringExpr (SFT_parser___parser_nodes[872])
-#define INIT_TABLE_POS_parser___parser_nodes___AMidStringExpr (SFT_parser___parser_nodes[873] + 0)
-#define ID_parser___parser_nodes___AEndStringExpr (SFT_parser___parser_nodes[874])
-#define COLOR_parser___parser_nodes___AEndStringExpr (SFT_parser___parser_nodes[875])
-#define INIT_TABLE_POS_parser___parser_nodes___AEndStringExpr (SFT_parser___parser_nodes[876] + 0)
-#define ID_parser___parser_nodes___ASuperstringExpr (SFT_parser___parser_nodes[877])
-#define COLOR_parser___parser_nodes___ASuperstringExpr (SFT_parser___parser_nodes[878])
-#define ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(recv) ATTR(recv, (SFT_parser___parser_nodes[879] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ASuperstringExpr (SFT_parser___parser_nodes[880] + 0)
-#define CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(recv) ((parser___parser_nodes___ASuperstringExpr___n_exprs_t)CALL((recv), (SFT_parser___parser_nodes[880] + 1)))
-#define ID_parser___parser_nodes___AParExpr (SFT_parser___parser_nodes[881])
-#define COLOR_parser___parser_nodes___AParExpr (SFT_parser___parser_nodes[882])
-#define ATTR_parser___parser_nodes___AParExpr____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[883] + 0))
-#define ATTR_parser___parser_nodes___AParExpr____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[883] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AParExpr (SFT_parser___parser_nodes[884] + 0)
-#define CALL_parser___parser_nodes___AParExpr___n_opar(recv) ((parser___parser_nodes___AParExpr___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[884] + 1)))
-#define CALL_parser___parser_nodes___AParExpr___n_cpar(recv) ((parser___parser_nodes___AParExpr___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[884] + 2)))
-#define ID_parser___parser_nodes___AProxyExpr (SFT_parser___parser_nodes[885])
-#define COLOR_parser___parser_nodes___AProxyExpr (SFT_parser___parser_nodes[886])
-#define ATTR_parser___parser_nodes___AProxyExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[887] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AProxyExpr (SFT_parser___parser_nodes[888] + 0)
-#define CALL_parser___parser_nodes___AProxyExpr___n_expr(recv) ((parser___parser_nodes___AProxyExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[888] + 1)))
-#define ID_parser___parser_nodes___AAsCastExpr (SFT_parser___parser_nodes[889])
-#define COLOR_parser___parser_nodes___AAsCastExpr (SFT_parser___parser_nodes[890])
-#define ATTR_parser___parser_nodes___AAsCastExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 0))
-#define ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 1))
-#define ATTR_parser___parser_nodes___AAsCastExpr____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 2))
-#define ATTR_parser___parser_nodes___AAsCastExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 3))
-#define ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr (SFT_parser___parser_nodes[892] + 0)
-#define CALL_parser___parser_nodes___AAsCastExpr___n_expr(recv) ((parser___parser_nodes___AAsCastExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[892] + 1)))
-#define CALL_parser___parser_nodes___AAsCastExpr___n_kwas(recv) ((parser___parser_nodes___AAsCastExpr___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[892] + 2)))
-#define CALL_parser___parser_nodes___AAsCastExpr___n_opar(recv) ((parser___parser_nodes___AAsCastExpr___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[892] + 3)))
-#define CALL_parser___parser_nodes___AAsCastExpr___n_type(recv) ((parser___parser_nodes___AAsCastExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[892] + 4)))
-#define CALL_parser___parser_nodes___AAsCastExpr___n_cpar(recv) ((parser___parser_nodes___AAsCastExpr___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[892] + 5)))
-#define ID_parser___parser_nodes___AAsNotnullExpr (SFT_parser___parser_nodes[893])
-#define COLOR_parser___parser_nodes___AAsNotnullExpr (SFT_parser___parser_nodes[894])
-#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 0))
-#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 1))
-#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 2))
-#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 3))
-#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 4))
-#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 5))
-#define INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr (SFT_parser___parser_nodes[896] + 0)
-#define CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(recv) ((parser___parser_nodes___AAsNotnullExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[896] + 1)))
-#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwas(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[896] + 2)))
-#define CALL_parser___parser_nodes___AAsNotnullExpr___n_opar(recv) ((parser___parser_nodes___AAsNotnullExpr___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[896] + 3)))
-#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwnot(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwnot_t)CALL((recv), (SFT_parser___parser_nodes[896] + 4)))
-#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwnull(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwnull_t)CALL((recv), (SFT_parser___parser_nodes[896] + 5)))
-#define CALL_parser___parser_nodes___AAsNotnullExpr___n_cpar(recv) ((parser___parser_nodes___AAsNotnullExpr___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[896] + 6)))
-#define ID_parser___parser_nodes___AIssetAttrExpr (SFT_parser___parser_nodes[897])
-#define COLOR_parser___parser_nodes___AIssetAttrExpr (SFT_parser___parser_nodes[898])
-#define ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(recv) ATTR(recv, (SFT_parser___parser_nodes[899] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AIssetAttrExpr (SFT_parser___parser_nodes[900] + 0)
-#define CALL_parser___parser_nodes___AIssetAttrExpr___n_kwisset(recv) ((parser___parser_nodes___AIssetAttrExpr___n_kwisset_t)CALL((recv), (SFT_parser___parser_nodes[900] + 1)))
-#define ID_parser___parser_nodes___AExprs (SFT_parser___parser_nodes[901])
-#define COLOR_parser___parser_nodes___AExprs (SFT_parser___parser_nodes[902])
-#define ATTR_parser___parser_nodes___AExprs____n_exprs(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AExprs (SFT_parser___parser_nodes[904] + 0)
-#define CALL_parser___parser_nodes___AExprs___n_exprs(recv) ((parser___parser_nodes___AExprs___n_exprs_t)CALL((recv), (SFT_parser___parser_nodes[904] + 1)))
-#define ID_parser___parser_nodes___ADebugTypeExpr (SFT_parser___parser_nodes[905])
-#define COLOR_parser___parser_nodes___ADebugTypeExpr (SFT_parser___parser_nodes[906])
-#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(recv) ATTR(recv, (SFT_parser___parser_nodes[907] + 0))
-#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(recv) ATTR(recv, (SFT_parser___parser_nodes[907] + 1))
-#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[907] + 2))
-#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[907] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___ADebugTypeExpr (SFT_parser___parser_nodes[908] + 0)
-#define CALL_parser___parser_nodes___ADebugTypeExpr___n_kwdebug(recv) ((parser___parser_nodes___ADebugTypeExpr___n_kwdebug_t)CALL((recv), (SFT_parser___parser_nodes[908] + 1)))
-#define CALL_parser___parser_nodes___ADebugTypeExpr___n_kwtype(recv) ((parser___parser_nodes___ADebugTypeExpr___n_kwtype_t)CALL((recv), (SFT_parser___parser_nodes[908] + 2)))
-#define CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(recv) ((parser___parser_nodes___ADebugTypeExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[908] + 3)))
-#define CALL_parser___parser_nodes___ADebugTypeExpr___n_type(recv) ((parser___parser_nodes___ADebugTypeExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[908] + 4)))
-#define ID_parser___parser_nodes___AListExprs (SFT_parser___parser_nodes[909])
-#define COLOR_parser___parser_nodes___AListExprs (SFT_parser___parser_nodes[910])
-#define INIT_TABLE_POS_parser___parser_nodes___AListExprs (SFT_parser___parser_nodes[911] + 0)
-#define ID_parser___parser_nodes___AParExprs (SFT_parser___parser_nodes[912])
-#define COLOR_parser___parser_nodes___AParExprs (SFT_parser___parser_nodes[913])
-#define ATTR_parser___parser_nodes___AParExprs____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[914] + 0))
-#define ATTR_parser___parser_nodes___AParExprs____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[914] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AParExprs (SFT_parser___parser_nodes[915] + 0)
-#define CALL_parser___parser_nodes___AParExprs___n_opar(recv) ((parser___parser_nodes___AParExprs___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[915] + 1)))
-#define CALL_parser___parser_nodes___AParExprs___n_cpar(recv) ((parser___parser_nodes___AParExprs___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[915] + 2)))
-#define ID_parser___parser_nodes___ABraExprs (SFT_parser___parser_nodes[916])
-#define COLOR_parser___parser_nodes___ABraExprs (SFT_parser___parser_nodes[917])
-#define ATTR_parser___parser_nodes___ABraExprs____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[918] + 0))
-#define ATTR_parser___parser_nodes___ABraExprs____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[918] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___ABraExprs (SFT_parser___parser_nodes[919] + 0)
-#define CALL_parser___parser_nodes___ABraExprs___n_obra(recv) ((parser___parser_nodes___ABraExprs___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[919] + 1)))
-#define CALL_parser___parser_nodes___ABraExprs___n_cbra(recv) ((parser___parser_nodes___ABraExprs___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[919] + 2)))
-#define ID_parser___parser_nodes___AAssignOp (SFT_parser___parser_nodes[920])
-#define COLOR_parser___parser_nodes___AAssignOp (SFT_parser___parser_nodes[921])
-#define INIT_TABLE_POS_parser___parser_nodes___AAssignOp (SFT_parser___parser_nodes[922] + 0)
-#define ID_parser___parser_nodes___APlusAssignOp (SFT_parser___parser_nodes[923])
-#define COLOR_parser___parser_nodes___APlusAssignOp (SFT_parser___parser_nodes[924])
-#define ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(recv) ATTR(recv, (SFT_parser___parser_nodes[925] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp (SFT_parser___parser_nodes[926] + 0)
-#define CALL_parser___parser_nodes___APlusAssignOp___n_pluseq(recv) ((parser___parser_nodes___APlusAssignOp___n_pluseq_t)CALL((recv), (SFT_parser___parser_nodes[926] + 1)))
-#define ID_parser___parser_nodes___AMinusAssignOp (SFT_parser___parser_nodes[927])
-#define COLOR_parser___parser_nodes___AMinusAssignOp (SFT_parser___parser_nodes[928])
-#define ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(recv) ATTR(recv, (SFT_parser___parser_nodes[929] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp (SFT_parser___parser_nodes[930] + 0)
-#define CALL_parser___parser_nodes___AMinusAssignOp___n_minuseq(recv) ((parser___parser_nodes___AMinusAssignOp___n_minuseq_t)CALL((recv), (SFT_parser___parser_nodes[930] + 1)))
-#define ID_parser___parser_nodes___AClosureDef (SFT_parser___parser_nodes[931])
-#define COLOR_parser___parser_nodes___AClosureDef (SFT_parser___parser_nodes[932])
-#define ATTR_parser___parser_nodes___AClosureDef____n_bang(recv) ATTR(recv, (SFT_parser___parser_nodes[933] + 0))
-#define ATTR_parser___parser_nodes___AClosureDef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[933] + 1))
-#define ATTR_parser___parser_nodes___AClosureDef____n_ids(recv) ATTR(recv, (SFT_parser___parser_nodes[933] + 2))
-#define ATTR_parser___parser_nodes___AClosureDef____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[933] + 3))
-#define ATTR_parser___parser_nodes___AClosureDef____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[933] + 4))
-#define INIT_TABLE_POS_parser___parser_nodes___AClosureDef (SFT_parser___parser_nodes[934] + 0)
-#define CALL_parser___parser_nodes___AClosureDef___n_bang(recv) ((parser___parser_nodes___AClosureDef___n_bang_t)CALL((recv), (SFT_parser___parser_nodes[934] + 1)))
-#define CALL_parser___parser_nodes___AClosureDef___n_id(recv) ((parser___parser_nodes___AClosureDef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[934] + 2)))
-#define CALL_parser___parser_nodes___AClosureDef___n_ids(recv) ((parser___parser_nodes___AClosureDef___n_ids_t)CALL((recv), (SFT_parser___parser_nodes[934] + 3)))
-#define CALL_parser___parser_nodes___AClosureDef___n_kwdo(recv) ((parser___parser_nodes___AClosureDef___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[934] + 4)))
-#define CALL_parser___parser_nodes___AClosureDef___n_expr(recv) ((parser___parser_nodes___AClosureDef___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[934] + 5)))
-#define ID_parser___parser_nodes___AClosureId (SFT_parser___parser_nodes[935])
-#define COLOR_parser___parser_nodes___AClosureId (SFT_parser___parser_nodes[936])
-#define INIT_TABLE_POS_parser___parser_nodes___AClosureId (SFT_parser___parser_nodes[937] + 0)
-#define ID_parser___parser_nodes___ASimpleClosureId (SFT_parser___parser_nodes[938])
-#define COLOR_parser___parser_nodes___ASimpleClosureId (SFT_parser___parser_nodes[939])
-#define ATTR_parser___parser_nodes___ASimpleClosureId____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[940] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId (SFT_parser___parser_nodes[941] + 0)
-#define CALL_parser___parser_nodes___ASimpleClosureId___n_id(recv) ((parser___parser_nodes___ASimpleClosureId___n_id_t)CALL((recv), (SFT_parser___parser_nodes[941] + 1)))
-#define ID_parser___parser_nodes___ABreakClosureId (SFT_parser___parser_nodes[942])
-#define COLOR_parser___parser_nodes___ABreakClosureId (SFT_parser___parser_nodes[943])
-#define ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(recv) ATTR(recv, (SFT_parser___parser_nodes[944] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId (SFT_parser___parser_nodes[945] + 0)
-#define CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(recv) ((parser___parser_nodes___ABreakClosureId___n_kwbreak_t)CALL((recv), (SFT_parser___parser_nodes[945] + 1)))
-#define ID_parser___parser_nodes___AModuleName (SFT_parser___parser_nodes[946])
-#define COLOR_parser___parser_nodes___AModuleName (SFT_parser___parser_nodes[947])
-#define ATTR_parser___parser_nodes___AModuleName____n_quad(recv) ATTR(recv, (SFT_parser___parser_nodes[948] + 0))
-#define ATTR_parser___parser_nodes___AModuleName____n_path(recv) ATTR(recv, (SFT_parser___parser_nodes[948] + 1))
-#define ATTR_parser___parser_nodes___AModuleName____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[948] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AModuleName (SFT_parser___parser_nodes[949] + 0)
-#define CALL_parser___parser_nodes___AModuleName___n_quad(recv) ((parser___parser_nodes___AModuleName___n_quad_t)CALL((recv), (SFT_parser___parser_nodes[949] + 1)))
-#define CALL_parser___parser_nodes___AModuleName___n_path(recv) ((parser___parser_nodes___AModuleName___n_path_t)CALL((recv), (SFT_parser___parser_nodes[949] + 2)))
-#define CALL_parser___parser_nodes___AModuleName___n_id(recv) ((parser___parser_nodes___AModuleName___n_id_t)CALL((recv), (SFT_parser___parser_nodes[949] + 3)))
-#define ID_parser___parser_nodes___AInLanguage (SFT_parser___parser_nodes[950])
-#define COLOR_parser___parser_nodes___AInLanguage (SFT_parser___parser_nodes[951])
-#define ATTR_parser___parser_nodes___AInLanguage____n_kwin(recv) ATTR(recv, (SFT_parser___parser_nodes[952] + 0))
-#define ATTR_parser___parser_nodes___AInLanguage____n_string(recv) ATTR(recv, (SFT_parser___parser_nodes[952] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AInLanguage (SFT_parser___parser_nodes[953] + 0)
-#define CALL_parser___parser_nodes___AInLanguage___n_kwin(recv) ((parser___parser_nodes___AInLanguage___n_kwin_t)CALL((recv), (SFT_parser___parser_nodes[953] + 1)))
-#define CALL_parser___parser_nodes___AInLanguage___n_string(recv) ((parser___parser_nodes___AInLanguage___n_string_t)CALL((recv), (SFT_parser___parser_nodes[953] + 2)))
-#define ID_parser___parser_nodes___AExternCodeBlock (SFT_parser___parser_nodes[954])
-#define COLOR_parser___parser_nodes___AExternCodeBlock (SFT_parser___parser_nodes[955])
-#define ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(recv) ATTR(recv, (SFT_parser___parser_nodes[956] + 0))
-#define ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(recv) ATTR(recv, (SFT_parser___parser_nodes[956] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___AExternCodeBlock (SFT_parser___parser_nodes[957] + 0)
-#define CALL_parser___parser_nodes___AExternCodeBlock___n_in_language(recv) ((parser___parser_nodes___AExternCodeBlock___n_in_language_t)CALL((recv), (SFT_parser___parser_nodes[957] + 1)))
-#define CALL_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment(recv) ((parser___parser_nodes___AExternCodeBlock___n_extern_code_segment_t)CALL((recv), (SFT_parser___parser_nodes[957] + 2)))
-#define ID_parser___parser_nodes___AQualified (SFT_parser___parser_nodes[958])
-#define COLOR_parser___parser_nodes___AQualified (SFT_parser___parser_nodes[959])
-#define ATTR_parser___parser_nodes___AQualified____n_quad(recv) ATTR(recv, (SFT_parser___parser_nodes[960] + 0))
-#define ATTR_parser___parser_nodes___AQualified____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[960] + 1))
-#define ATTR_parser___parser_nodes___AQualified____n_classid(recv) ATTR(recv, (SFT_parser___parser_nodes[960] + 2))
-#define INIT_TABLE_POS_parser___parser_nodes___AQualified (SFT_parser___parser_nodes[961] + 0)
-#define CALL_parser___parser_nodes___AQualified___n_quad(recv) ((parser___parser_nodes___AQualified___n_quad_t)CALL((recv), (SFT_parser___parser_nodes[961] + 1)))
-#define CALL_parser___parser_nodes___AQualified___n_id(recv) ((parser___parser_nodes___AQualified___n_id_t)CALL((recv), (SFT_parser___parser_nodes[961] + 2)))
-#define CALL_parser___parser_nodes___AQualified___n_classid(recv) ((parser___parser_nodes___AQualified___n_classid_t)CALL((recv), (SFT_parser___parser_nodes[961] + 3)))
-#define ID_parser___parser_nodes___ADoc (SFT_parser___parser_nodes[962])
-#define COLOR_parser___parser_nodes___ADoc (SFT_parser___parser_nodes[963])
-#define ATTR_parser___parser_nodes___ADoc____n_comment(recv) ATTR(recv, (SFT_parser___parser_nodes[964] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ADoc (SFT_parser___parser_nodes[965] + 0)
-#define CALL_parser___parser_nodes___ADoc___n_comment(recv) ((parser___parser_nodes___ADoc___n_comment_t)CALL((recv), (SFT_parser___parser_nodes[965] + 1)))
-#define ID_parser___parser_nodes___AAnnotations (SFT_parser___parser_nodes[966])
-#define COLOR_parser___parser_nodes___AAnnotations (SFT_parser___parser_nodes[967])
-#define ATTR_parser___parser_nodes___AAnnotations____n_at(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 0))
-#define ATTR_parser___parser_nodes___AAnnotations____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 1))
-#define ATTR_parser___parser_nodes___AAnnotations____n_items(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 2))
-#define ATTR_parser___parser_nodes___AAnnotations____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AAnnotations (SFT_parser___parser_nodes[969] + 0)
-#define CALL_parser___parser_nodes___AAnnotations___n_at(recv) ((parser___parser_nodes___AAnnotations___n_at_t)CALL((recv), (SFT_parser___parser_nodes[969] + 1)))
-#define CALL_parser___parser_nodes___AAnnotations___n_opar(recv) ((parser___parser_nodes___AAnnotations___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[969] + 2)))
-#define CALL_parser___parser_nodes___AAnnotations___n_items(recv) ((parser___parser_nodes___AAnnotations___n_items_t)CALL((recv), (SFT_parser___parser_nodes[969] + 3)))
-#define CALL_parser___parser_nodes___AAnnotations___n_cpar(recv) ((parser___parser_nodes___AAnnotations___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[969] + 4)))
-#define ID_parser___parser_nodes___AAnnotation (SFT_parser___parser_nodes[970])
-#define COLOR_parser___parser_nodes___AAnnotation (SFT_parser___parser_nodes[971])
-#define ATTR_parser___parser_nodes___AAnnotation____n_atid(recv) ATTR(recv, (SFT_parser___parser_nodes[972] + 0))
-#define ATTR_parser___parser_nodes___AAnnotation____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[972] + 1))
-#define ATTR_parser___parser_nodes___AAnnotation____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[972] + 2))
-#define ATTR_parser___parser_nodes___AAnnotation____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[972] + 3))
-#define INIT_TABLE_POS_parser___parser_nodes___AAnnotation (SFT_parser___parser_nodes[973] + 0)
-#define CALL_parser___parser_nodes___AAnnotation___n_atid(recv) ((parser___parser_nodes___AAnnotation___n_atid_t)CALL((recv), (SFT_parser___parser_nodes[973] + 1)))
-#define CALL_parser___parser_nodes___AAnnotation___n_opar(recv) ((parser___parser_nodes___AAnnotation___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[973] + 2)))
-#define CALL_parser___parser_nodes___AAnnotation___n_args(recv) ((parser___parser_nodes___AAnnotation___n_args_t)CALL((recv), (SFT_parser___parser_nodes[973] + 3)))
-#define CALL_parser___parser_nodes___AAnnotation___n_cpar(recv) ((parser___parser_nodes___AAnnotation___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[973] + 4)))
-#define ID_parser___parser_nodes___AAtArg (SFT_parser___parser_nodes[974])
-#define COLOR_parser___parser_nodes___AAtArg (SFT_parser___parser_nodes[975])
-#define INIT_TABLE_POS_parser___parser_nodes___AAtArg (SFT_parser___parser_nodes[976] + 0)
-#define ID_parser___parser_nodes___ATypeAtArg (SFT_parser___parser_nodes[977])
-#define COLOR_parser___parser_nodes___ATypeAtArg (SFT_parser___parser_nodes[978])
-#define ATTR_parser___parser_nodes___ATypeAtArg____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[979] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___ATypeAtArg (SFT_parser___parser_nodes[980] + 0)
-#define CALL_parser___parser_nodes___ATypeAtArg___n_type(recv) ((parser___parser_nodes___ATypeAtArg___n_type_t)CALL((recv), (SFT_parser___parser_nodes[980] + 1)))
-#define ID_parser___parser_nodes___AExprAtArg (SFT_parser___parser_nodes[981])
-#define COLOR_parser___parser_nodes___AExprAtArg (SFT_parser___parser_nodes[982])
-#define ATTR_parser___parser_nodes___AExprAtArg____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[983] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AExprAtArg (SFT_parser___parser_nodes[984] + 0)
-#define CALL_parser___parser_nodes___AExprAtArg___n_expr(recv) ((parser___parser_nodes___AExprAtArg___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[984] + 1)))
-#define ID_parser___parser_nodes___AAtAtArg (SFT_parser___parser_nodes[985])
-#define COLOR_parser___parser_nodes___AAtAtArg (SFT_parser___parser_nodes[986])
-#define INIT_TABLE_POS_parser___parser_nodes___AAtAtArg (SFT_parser___parser_nodes[987] + 0)
-#define ID_parser___parser_nodes___AAtid (SFT_parser___parser_nodes[988])
-#define COLOR_parser___parser_nodes___AAtid (SFT_parser___parser_nodes[989])
-#define ATTR_parser___parser_nodes___AAtid____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[990] + 0))
-#define INIT_TABLE_POS_parser___parser_nodes___AAtid (SFT_parser___parser_nodes[991] + 0)
-#define CALL_parser___parser_nodes___AAtid___n_id(recv) ((parser___parser_nodes___AAtid___n_id_t)CALL((recv), (SFT_parser___parser_nodes[991] + 1)))
-#define ID_parser___parser_nodes___AIdAtid (SFT_parser___parser_nodes[992])
-#define COLOR_parser___parser_nodes___AIdAtid (SFT_parser___parser_nodes[993])
-#define INIT_TABLE_POS_parser___parser_nodes___AIdAtid (SFT_parser___parser_nodes[994] + 0)
-#define ID_parser___parser_nodes___AKwexternAtid (SFT_parser___parser_nodes[995])
-#define COLOR_parser___parser_nodes___AKwexternAtid (SFT_parser___parser_nodes[996])
-#define INIT_TABLE_POS_parser___parser_nodes___AKwexternAtid (SFT_parser___parser_nodes[997] + 0)
-#define ID_parser___parser_nodes___AKwinternAtid (SFT_parser___parser_nodes[998])
-#define COLOR_parser___parser_nodes___AKwinternAtid (SFT_parser___parser_nodes[999])
-#define INIT_TABLE_POS_parser___parser_nodes___AKwinternAtid (SFT_parser___parser_nodes[1000] + 0)
-#define ID_parser___parser_nodes___AKwreadableAtid (SFT_parser___parser_nodes[1001])
-#define COLOR_parser___parser_nodes___AKwreadableAtid (SFT_parser___parser_nodes[1002])
-#define INIT_TABLE_POS_parser___parser_nodes___AKwreadableAtid (SFT_parser___parser_nodes[1003] + 0)
-#define ID_parser___parser_nodes___AKwwritableAtid (SFT_parser___parser_nodes[1004])
-#define COLOR_parser___parser_nodes___AKwwritableAtid (SFT_parser___parser_nodes[1005])
-#define INIT_TABLE_POS_parser___parser_nodes___AKwwritableAtid (SFT_parser___parser_nodes[1006] + 0)
-#define ID_parser___parser_nodes___AKwimportAtid (SFT_parser___parser_nodes[1007])
-#define COLOR_parser___parser_nodes___AKwimportAtid (SFT_parser___parser_nodes[1008])
-#define INIT_TABLE_POS_parser___parser_nodes___AKwimportAtid (SFT_parser___parser_nodes[1009] + 0)
-#define ID_parser___parser_nodes___Start (SFT_parser___parser_nodes[1010])
-#define COLOR_parser___parser_nodes___Start (SFT_parser___parser_nodes[1011])
-#define ATTR_parser___parser_nodes___Start____n_base(recv) ATTR(recv, (SFT_parser___parser_nodes[1012] + 0))
-#define ATTR_parser___parser_nodes___Start____n_eof(recv) ATTR(recv, (SFT_parser___parser_nodes[1012] + 1))
-#define INIT_TABLE_POS_parser___parser_nodes___Start (SFT_parser___parser_nodes[1013] + 0)
-#define CALL_parser___parser_nodes___Start___n_base(recv) ((parser___parser_nodes___Start___n_base_t)CALL((recv), (SFT_parser___parser_nodes[1013] + 1)))
-#define CALL_parser___parser_nodes___Start___n_eof(recv) ((parser___parser_nodes___Start___n_eof_t)CALL((recv), (SFT_parser___parser_nodes[1013] + 2)))
-#define CALL_parser___parser_nodes___Start___init(recv) ((parser___parser_nodes___Start___init_t)CALL((recv), (SFT_parser___parser_nodes[1013] + 3)))
+#define CALL_parser___parser_nodes___ANode___debug(recv) ((parser___parser_nodes___ANode___debug_t)CALL((recv), (SFT_parser___parser_nodes[3] + 3)))
+#define CALL_parser___parser_nodes___ANode___parent(recv) ((parser___parser_nodes___ANode___parent_t)CALL((recv), (SFT_parser___parser_nodes[3] + 4)))
+#define CALL_parser___parser_nodes___ANode___parent__eq(recv) ((parser___parser_nodes___ANode___parent__eq_t)CALL((recv), (SFT_parser___parser_nodes[3] + 5)))
+#define CALL_parser___parser_nodes___ANode___init(recv) ((parser___parser_nodes___ANode___init_t)CALL((recv), (SFT_parser___parser_nodes[3] + 6)))
+#define CALL_parser___parser_nodes___ANode___replace_child(recv) ((parser___parser_nodes___ANode___replace_child_t)CALL((recv), (SFT_parser___parser_nodes[3] + 7)))
+#define CALL_parser___parser_nodes___ANode___detach(recv) ((parser___parser_nodes___ANode___detach_t)CALL((recv), (SFT_parser___parser_nodes[3] + 8)))
+#define CALL_parser___parser_nodes___ANode___replace_with(recv) ((parser___parser_nodes___ANode___replace_with_t)CALL((recv), (SFT_parser___parser_nodes[3] + 9)))
+#define CALL_parser___parser_nodes___ANode___visit_all(recv) ((parser___parser_nodes___ANode___visit_all_t)CALL((recv), (SFT_parser___parser_nodes[3] + 10)))
+#define ID_parser___parser_nodes___ANodes (SFT_parser___parser_nodes[4])
+#define COLOR_parser___parser_nodes___ANodes (SFT_parser___parser_nodes[5])
+#define ATTR_parser___parser_nodes___ANodes_____atparent(recv) ATTR(recv, (SFT_parser___parser_nodes[6] + 0))
+#define ATTR_parser___parser_nodes___ANodes_____atitems(recv) ATTR(recv, (SFT_parser___parser_nodes[6] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ANodes (SFT_parser___parser_nodes[7] + 0)
+#define CALL_parser___parser_nodes___ANodes___parent(recv) ((parser___parser_nodes___ANodes___parent_t)CALL((recv), (SFT_parser___parser_nodes[7] + 1)))
+#define CALL_parser___parser_nodes___ANodes___parent__eq(recv) ((parser___parser_nodes___ANodes___parent__eq_t)CALL((recv), (SFT_parser___parser_nodes[7] + 2)))
+#define CALL_parser___parser_nodes___ANodes___items(recv) ((parser___parser_nodes___ANodes___items_t)CALL((recv), (SFT_parser___parser_nodes[7] + 3)))
+#define CALL_parser___parser_nodes___ANodes___items__eq(recv) ((parser___parser_nodes___ANodes___items__eq_t)CALL((recv), (SFT_parser___parser_nodes[7] + 4)))
+#define CALL_parser___parser_nodes___ANodes___hook_add(recv) ((parser___parser_nodes___ANodes___hook_add_t)CALL((recv), (SFT_parser___parser_nodes[7] + 5)))
+#define CALL_parser___parser_nodes___ANodes___hook_remove(recv) ((parser___parser_nodes___ANodes___hook_remove_t)CALL((recv), (SFT_parser___parser_nodes[7] + 6)))
+#define CALL_parser___parser_nodes___ANodes___init(recv) ((parser___parser_nodes___ANodes___init_t)CALL((recv), (SFT_parser___parser_nodes[7] + 7)))
+#define ID_parser___parser_nodes___Token (SFT_parser___parser_nodes[8])
+#define COLOR_parser___parser_nodes___Token (SFT_parser___parser_nodes[9])
+#define INIT_TABLE_POS_parser___parser_nodes___Token (SFT_parser___parser_nodes[10] + 0)
+#define CALL_parser___parser_nodes___Token___text(recv) ((parser___parser_nodes___Token___text_t)CALL((recv), (SFT_parser___parser_nodes[10] + 1)))
+#define CALL_parser___parser_nodes___Token___text__eq(recv) ((parser___parser_nodes___Token___text__eq_t)CALL((recv), (SFT_parser___parser_nodes[10] + 2)))
+#define ID_parser___parser_nodes___Prod (SFT_parser___parser_nodes[11])
+#define COLOR_parser___parser_nodes___Prod (SFT_parser___parser_nodes[12])
+#define ATTR_parser___parser_nodes___Prod____n_annotations(recv) ATTR(recv, (SFT_parser___parser_nodes[13] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___Prod (SFT_parser___parser_nodes[14] + 0)
+#define CALL_parser___parser_nodes___Prod___location__eq(recv) ((parser___parser_nodes___Prod___location__eq_t)CALL((recv), (SFT_parser___parser_nodes[14] + 1)))
+#define CALL_parser___parser_nodes___Prod___n_annotations(recv) ((parser___parser_nodes___Prod___n_annotations_t)CALL((recv), (SFT_parser___parser_nodes[14] + 2)))
+#define CALL_parser___parser_nodes___Prod___n_annotations__eq(recv) ((parser___parser_nodes___Prod___n_annotations__eq_t)CALL((recv), (SFT_parser___parser_nodes[14] + 3)))
+#define CALL_SUPER_parser___parser_nodes___Prod___replace_with(recv) ((parser___parser_nodes___Prod___replace_with_t)CALL((recv), (SFT_parser___parser_nodes[14] + 4)))
+#define ID_parser___parser_nodes___Visitor (SFT_parser___parser_nodes[15])
+#define COLOR_parser___parser_nodes___Visitor (SFT_parser___parser_nodes[16])
+#define ATTR_parser___parser_nodes___Visitor____current_node(recv) ATTR(recv, (SFT_parser___parser_nodes[17] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___Visitor (SFT_parser___parser_nodes[18] + 0)
+#define CALL_parser___parser_nodes___Visitor___visit(recv) ((parser___parser_nodes___Visitor___visit_t)CALL((recv), (SFT_parser___parser_nodes[18] + 1)))
+#define CALL_parser___parser_nodes___Visitor___enter_visit(recv) ((parser___parser_nodes___Visitor___enter_visit_t)CALL((recv), (SFT_parser___parser_nodes[18] + 2)))
+#define CALL_parser___parser_nodes___Visitor___current_node(recv) ((parser___parser_nodes___Visitor___current_node_t)CALL((recv), (SFT_parser___parser_nodes[18] + 3)))
+#define CALL_parser___parser_nodes___Visitor___current_node__eq(recv) ((parser___parser_nodes___Visitor___current_node__eq_t)CALL((recv), (SFT_parser___parser_nodes[18] + 4)))
+#define CALL_parser___parser_nodes___Visitor___init(recv) ((parser___parser_nodes___Visitor___init_t)CALL((recv), (SFT_parser___parser_nodes[18] + 5)))
+#define ID_parser___parser_nodes___TEol (SFT_parser___parser_nodes[19])
+#define COLOR_parser___parser_nodes___TEol (SFT_parser___parser_nodes[20])
+#define INIT_TABLE_POS_parser___parser_nodes___TEol (SFT_parser___parser_nodes[21] + 0)
+#define ID_parser___parser_nodes___TComment (SFT_parser___parser_nodes[22])
+#define COLOR_parser___parser_nodes___TComment (SFT_parser___parser_nodes[23])
+#define INIT_TABLE_POS_parser___parser_nodes___TComment (SFT_parser___parser_nodes[24] + 0)
+#define ID_parser___parser_nodes___TokenKeyword (SFT_parser___parser_nodes[25])
+#define COLOR_parser___parser_nodes___TokenKeyword (SFT_parser___parser_nodes[26])
+#define INIT_TABLE_POS_parser___parser_nodes___TokenKeyword (SFT_parser___parser_nodes[27] + 0)
+#define ID_parser___parser_nodes___TKwmodule (SFT_parser___parser_nodes[28])
+#define COLOR_parser___parser_nodes___TKwmodule (SFT_parser___parser_nodes[29])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwmodule (SFT_parser___parser_nodes[30] + 0)
+#define ID_parser___parser_nodes___TKwimport (SFT_parser___parser_nodes[31])
+#define COLOR_parser___parser_nodes___TKwimport (SFT_parser___parser_nodes[32])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwimport (SFT_parser___parser_nodes[33] + 0)
+#define ID_parser___parser_nodes___TKwclass (SFT_parser___parser_nodes[34])
+#define COLOR_parser___parser_nodes___TKwclass (SFT_parser___parser_nodes[35])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwclass (SFT_parser___parser_nodes[36] + 0)
+#define ID_parser___parser_nodes___TKwabstract (SFT_parser___parser_nodes[37])
+#define COLOR_parser___parser_nodes___TKwabstract (SFT_parser___parser_nodes[38])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwabstract (SFT_parser___parser_nodes[39] + 0)
+#define ID_parser___parser_nodes___TKwinterface (SFT_parser___parser_nodes[40])
+#define COLOR_parser___parser_nodes___TKwinterface (SFT_parser___parser_nodes[41])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwinterface (SFT_parser___parser_nodes[42] + 0)
+#define ID_parser___parser_nodes___TKwenum (SFT_parser___parser_nodes[43])
+#define COLOR_parser___parser_nodes___TKwenum (SFT_parser___parser_nodes[44])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwenum (SFT_parser___parser_nodes[45] + 0)
+#define ID_parser___parser_nodes___TKwend (SFT_parser___parser_nodes[46])
+#define COLOR_parser___parser_nodes___TKwend (SFT_parser___parser_nodes[47])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwend (SFT_parser___parser_nodes[48] + 0)
+#define ID_parser___parser_nodes___TKwmeth (SFT_parser___parser_nodes[49])
+#define COLOR_parser___parser_nodes___TKwmeth (SFT_parser___parser_nodes[50])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwmeth (SFT_parser___parser_nodes[51] + 0)
+#define ID_parser___parser_nodes___TKwtype (SFT_parser___parser_nodes[52])
+#define COLOR_parser___parser_nodes___TKwtype (SFT_parser___parser_nodes[53])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwtype (SFT_parser___parser_nodes[54] + 0)
+#define ID_parser___parser_nodes___TKwinit (SFT_parser___parser_nodes[55])
+#define COLOR_parser___parser_nodes___TKwinit (SFT_parser___parser_nodes[56])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwinit (SFT_parser___parser_nodes[57] + 0)
+#define ID_parser___parser_nodes___TKwredef (SFT_parser___parser_nodes[58])
+#define COLOR_parser___parser_nodes___TKwredef (SFT_parser___parser_nodes[59])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwredef (SFT_parser___parser_nodes[60] + 0)
+#define ID_parser___parser_nodes___TKwis (SFT_parser___parser_nodes[61])
+#define COLOR_parser___parser_nodes___TKwis (SFT_parser___parser_nodes[62])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwis (SFT_parser___parser_nodes[63] + 0)
+#define ID_parser___parser_nodes___TKwdo (SFT_parser___parser_nodes[64])
+#define COLOR_parser___parser_nodes___TKwdo (SFT_parser___parser_nodes[65])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwdo (SFT_parser___parser_nodes[66] + 0)
+#define ID_parser___parser_nodes___TKwreadable (SFT_parser___parser_nodes[67])
+#define COLOR_parser___parser_nodes___TKwreadable (SFT_parser___parser_nodes[68])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwreadable (SFT_parser___parser_nodes[69] + 0)
+#define ID_parser___parser_nodes___TKwwritable (SFT_parser___parser_nodes[70])
+#define COLOR_parser___parser_nodes___TKwwritable (SFT_parser___parser_nodes[71])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwwritable (SFT_parser___parser_nodes[72] + 0)
+#define ID_parser___parser_nodes___TKwvar (SFT_parser___parser_nodes[73])
+#define COLOR_parser___parser_nodes___TKwvar (SFT_parser___parser_nodes[74])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwvar (SFT_parser___parser_nodes[75] + 0)
+#define ID_parser___parser_nodes___TKwintern (SFT_parser___parser_nodes[76])
+#define COLOR_parser___parser_nodes___TKwintern (SFT_parser___parser_nodes[77])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwintern (SFT_parser___parser_nodes[78] + 0)
+#define ID_parser___parser_nodes___TKwextern (SFT_parser___parser_nodes[79])
+#define COLOR_parser___parser_nodes___TKwextern (SFT_parser___parser_nodes[80])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwextern (SFT_parser___parser_nodes[81] + 0)
+#define ID_parser___parser_nodes___TKwprotected (SFT_parser___parser_nodes[82])
+#define COLOR_parser___parser_nodes___TKwprotected (SFT_parser___parser_nodes[83])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwprotected (SFT_parser___parser_nodes[84] + 0)
+#define ID_parser___parser_nodes___TKwprivate (SFT_parser___parser_nodes[85])
+#define COLOR_parser___parser_nodes___TKwprivate (SFT_parser___parser_nodes[86])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwprivate (SFT_parser___parser_nodes[87] + 0)
+#define ID_parser___parser_nodes___TKwintrude (SFT_parser___parser_nodes[88])
+#define COLOR_parser___parser_nodes___TKwintrude (SFT_parser___parser_nodes[89])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwintrude (SFT_parser___parser_nodes[90] + 0)
+#define ID_parser___parser_nodes___TKwif (SFT_parser___parser_nodes[91])
+#define COLOR_parser___parser_nodes___TKwif (SFT_parser___parser_nodes[92])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwif (SFT_parser___parser_nodes[93] + 0)
+#define ID_parser___parser_nodes___TKwthen (SFT_parser___parser_nodes[94])
+#define COLOR_parser___parser_nodes___TKwthen (SFT_parser___parser_nodes[95])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwthen (SFT_parser___parser_nodes[96] + 0)
+#define ID_parser___parser_nodes___TKwelse (SFT_parser___parser_nodes[97])
+#define COLOR_parser___parser_nodes___TKwelse (SFT_parser___parser_nodes[98])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwelse (SFT_parser___parser_nodes[99] + 0)
+#define ID_parser___parser_nodes___TKwwhile (SFT_parser___parser_nodes[100])
+#define COLOR_parser___parser_nodes___TKwwhile (SFT_parser___parser_nodes[101])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwwhile (SFT_parser___parser_nodes[102] + 0)
+#define ID_parser___parser_nodes___TKwloop (SFT_parser___parser_nodes[103])
+#define COLOR_parser___parser_nodes___TKwloop (SFT_parser___parser_nodes[104])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwloop (SFT_parser___parser_nodes[105] + 0)
+#define ID_parser___parser_nodes___TKwfor (SFT_parser___parser_nodes[106])
+#define COLOR_parser___parser_nodes___TKwfor (SFT_parser___parser_nodes[107])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwfor (SFT_parser___parser_nodes[108] + 0)
+#define ID_parser___parser_nodes___TKwin (SFT_parser___parser_nodes[109])
+#define COLOR_parser___parser_nodes___TKwin (SFT_parser___parser_nodes[110])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwin (SFT_parser___parser_nodes[111] + 0)
+#define ID_parser___parser_nodes___TKwand (SFT_parser___parser_nodes[112])
+#define COLOR_parser___parser_nodes___TKwand (SFT_parser___parser_nodes[113])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwand (SFT_parser___parser_nodes[114] + 0)
+#define ID_parser___parser_nodes___TKwor (SFT_parser___parser_nodes[115])
+#define COLOR_parser___parser_nodes___TKwor (SFT_parser___parser_nodes[116])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwor (SFT_parser___parser_nodes[117] + 0)
+#define ID_parser___parser_nodes___TKwnot (SFT_parser___parser_nodes[118])
+#define COLOR_parser___parser_nodes___TKwnot (SFT_parser___parser_nodes[119])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwnot (SFT_parser___parser_nodes[120] + 0)
+#define ID_parser___parser_nodes___TKwreturn (SFT_parser___parser_nodes[121])
+#define COLOR_parser___parser_nodes___TKwreturn (SFT_parser___parser_nodes[122])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwreturn (SFT_parser___parser_nodes[123] + 0)
+#define ID_parser___parser_nodes___TKwcontinue (SFT_parser___parser_nodes[124])
+#define COLOR_parser___parser_nodes___TKwcontinue (SFT_parser___parser_nodes[125])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwcontinue (SFT_parser___parser_nodes[126] + 0)
+#define ID_parser___parser_nodes___TKwbreak (SFT_parser___parser_nodes[127])
+#define COLOR_parser___parser_nodes___TKwbreak (SFT_parser___parser_nodes[128])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwbreak (SFT_parser___parser_nodes[129] + 0)
+#define ID_parser___parser_nodes___TKwabort (SFT_parser___parser_nodes[130])
+#define COLOR_parser___parser_nodes___TKwabort (SFT_parser___parser_nodes[131])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwabort (SFT_parser___parser_nodes[132] + 0)
+#define ID_parser___parser_nodes___TKwassert (SFT_parser___parser_nodes[133])
+#define COLOR_parser___parser_nodes___TKwassert (SFT_parser___parser_nodes[134])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwassert (SFT_parser___parser_nodes[135] + 0)
+#define ID_parser___parser_nodes___TKwnew (SFT_parser___parser_nodes[136])
+#define COLOR_parser___parser_nodes___TKwnew (SFT_parser___parser_nodes[137])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwnew (SFT_parser___parser_nodes[138] + 0)
+#define ID_parser___parser_nodes___TKwisa (SFT_parser___parser_nodes[139])
+#define COLOR_parser___parser_nodes___TKwisa (SFT_parser___parser_nodes[140])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwisa (SFT_parser___parser_nodes[141] + 0)
+#define ID_parser___parser_nodes___TKwonce (SFT_parser___parser_nodes[142])
+#define COLOR_parser___parser_nodes___TKwonce (SFT_parser___parser_nodes[143])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwonce (SFT_parser___parser_nodes[144] + 0)
+#define ID_parser___parser_nodes___TKwsuper (SFT_parser___parser_nodes[145])
+#define COLOR_parser___parser_nodes___TKwsuper (SFT_parser___parser_nodes[146])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwsuper (SFT_parser___parser_nodes[147] + 0)
+#define ID_parser___parser_nodes___TKwself (SFT_parser___parser_nodes[148])
+#define COLOR_parser___parser_nodes___TKwself (SFT_parser___parser_nodes[149])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwself (SFT_parser___parser_nodes[150] + 0)
+#define ID_parser___parser_nodes___TKwtrue (SFT_parser___parser_nodes[151])
+#define COLOR_parser___parser_nodes___TKwtrue (SFT_parser___parser_nodes[152])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwtrue (SFT_parser___parser_nodes[153] + 0)
+#define ID_parser___parser_nodes___TKwfalse (SFT_parser___parser_nodes[154])
+#define COLOR_parser___parser_nodes___TKwfalse (SFT_parser___parser_nodes[155])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwfalse (SFT_parser___parser_nodes[156] + 0)
+#define ID_parser___parser_nodes___TKwnull (SFT_parser___parser_nodes[157])
+#define COLOR_parser___parser_nodes___TKwnull (SFT_parser___parser_nodes[158])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwnull (SFT_parser___parser_nodes[159] + 0)
+#define ID_parser___parser_nodes___TKwas (SFT_parser___parser_nodes[160])
+#define COLOR_parser___parser_nodes___TKwas (SFT_parser___parser_nodes[161])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwas (SFT_parser___parser_nodes[162] + 0)
+#define ID_parser___parser_nodes___TKwnullable (SFT_parser___parser_nodes[163])
+#define COLOR_parser___parser_nodes___TKwnullable (SFT_parser___parser_nodes[164])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwnullable (SFT_parser___parser_nodes[165] + 0)
+#define ID_parser___parser_nodes___TKwisset (SFT_parser___parser_nodes[166])
+#define COLOR_parser___parser_nodes___TKwisset (SFT_parser___parser_nodes[167])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwisset (SFT_parser___parser_nodes[168] + 0)
+#define ID_parser___parser_nodes___TKwlabel (SFT_parser___parser_nodes[169])
+#define COLOR_parser___parser_nodes___TKwlabel (SFT_parser___parser_nodes[170])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwlabel (SFT_parser___parser_nodes[171] + 0)
+#define ID_parser___parser_nodes___TKwdebug (SFT_parser___parser_nodes[172])
+#define COLOR_parser___parser_nodes___TKwdebug (SFT_parser___parser_nodes[173])
+#define INIT_TABLE_POS_parser___parser_nodes___TKwdebug (SFT_parser___parser_nodes[174] + 0)
+#define ID_parser___parser_nodes___TOpar (SFT_parser___parser_nodes[175])
+#define COLOR_parser___parser_nodes___TOpar (SFT_parser___parser_nodes[176])
+#define INIT_TABLE_POS_parser___parser_nodes___TOpar (SFT_parser___parser_nodes[177] + 0)
+#define ID_parser___parser_nodes___TCpar (SFT_parser___parser_nodes[178])
+#define COLOR_parser___parser_nodes___TCpar (SFT_parser___parser_nodes[179])
+#define INIT_TABLE_POS_parser___parser_nodes___TCpar (SFT_parser___parser_nodes[180] + 0)
+#define ID_parser___parser_nodes___TObra (SFT_parser___parser_nodes[181])
+#define COLOR_parser___parser_nodes___TObra (SFT_parser___parser_nodes[182])
+#define INIT_TABLE_POS_parser___parser_nodes___TObra (SFT_parser___parser_nodes[183] + 0)
+#define ID_parser___parser_nodes___TCbra (SFT_parser___parser_nodes[184])
+#define COLOR_parser___parser_nodes___TCbra (SFT_parser___parser_nodes[185])
+#define INIT_TABLE_POS_parser___parser_nodes___TCbra (SFT_parser___parser_nodes[186] + 0)
+#define ID_parser___parser_nodes___TComma (SFT_parser___parser_nodes[187])
+#define COLOR_parser___parser_nodes___TComma (SFT_parser___parser_nodes[188])
+#define INIT_TABLE_POS_parser___parser_nodes___TComma (SFT_parser___parser_nodes[189] + 0)
+#define ID_parser___parser_nodes___TColumn (SFT_parser___parser_nodes[190])
+#define COLOR_parser___parser_nodes___TColumn (SFT_parser___parser_nodes[191])
+#define INIT_TABLE_POS_parser___parser_nodes___TColumn (SFT_parser___parser_nodes[192] + 0)
+#define ID_parser___parser_nodes___TQuad (SFT_parser___parser_nodes[193])
+#define COLOR_parser___parser_nodes___TQuad (SFT_parser___parser_nodes[194])
+#define INIT_TABLE_POS_parser___parser_nodes___TQuad (SFT_parser___parser_nodes[195] + 0)
+#define ID_parser___parser_nodes___TAssign (SFT_parser___parser_nodes[196])
+#define COLOR_parser___parser_nodes___TAssign (SFT_parser___parser_nodes[197])
+#define INIT_TABLE_POS_parser___parser_nodes___TAssign (SFT_parser___parser_nodes[198] + 0)
+#define ID_parser___parser_nodes___TokenOperator (SFT_parser___parser_nodes[199])
+#define COLOR_parser___parser_nodes___TokenOperator (SFT_parser___parser_nodes[200])
+#define INIT_TABLE_POS_parser___parser_nodes___TokenOperator (SFT_parser___parser_nodes[201] + 0)
+#define ID_parser___parser_nodes___TPluseq (SFT_parser___parser_nodes[202])
+#define COLOR_parser___parser_nodes___TPluseq (SFT_parser___parser_nodes[203])
+#define INIT_TABLE_POS_parser___parser_nodes___TPluseq (SFT_parser___parser_nodes[204] + 0)
+#define ID_parser___parser_nodes___TMinuseq (SFT_parser___parser_nodes[205])
+#define COLOR_parser___parser_nodes___TMinuseq (SFT_parser___parser_nodes[206])
+#define INIT_TABLE_POS_parser___parser_nodes___TMinuseq (SFT_parser___parser_nodes[207] + 0)
+#define ID_parser___parser_nodes___TDotdotdot (SFT_parser___parser_nodes[208])
+#define COLOR_parser___parser_nodes___TDotdotdot (SFT_parser___parser_nodes[209])
+#define INIT_TABLE_POS_parser___parser_nodes___TDotdotdot (SFT_parser___parser_nodes[210] + 0)
+#define ID_parser___parser_nodes___TDotdot (SFT_parser___parser_nodes[211])
+#define COLOR_parser___parser_nodes___TDotdot (SFT_parser___parser_nodes[212])
+#define INIT_TABLE_POS_parser___parser_nodes___TDotdot (SFT_parser___parser_nodes[213] + 0)
+#define ID_parser___parser_nodes___TDot (SFT_parser___parser_nodes[214])
+#define COLOR_parser___parser_nodes___TDot (SFT_parser___parser_nodes[215])
+#define INIT_TABLE_POS_parser___parser_nodes___TDot (SFT_parser___parser_nodes[216] + 0)
+#define ID_parser___parser_nodes___TPlus (SFT_parser___parser_nodes[217])
+#define COLOR_parser___parser_nodes___TPlus (SFT_parser___parser_nodes[218])
+#define INIT_TABLE_POS_parser___parser_nodes___TPlus (SFT_parser___parser_nodes[219] + 0)
+#define ID_parser___parser_nodes___TMinus (SFT_parser___parser_nodes[220])
+#define COLOR_parser___parser_nodes___TMinus (SFT_parser___parser_nodes[221])
+#define INIT_TABLE_POS_parser___parser_nodes___TMinus (SFT_parser___parser_nodes[222] + 0)
+#define ID_parser___parser_nodes___TStar (SFT_parser___parser_nodes[223])
+#define COLOR_parser___parser_nodes___TStar (SFT_parser___parser_nodes[224])
+#define INIT_TABLE_POS_parser___parser_nodes___TStar (SFT_parser___parser_nodes[225] + 0)
+#define ID_parser___parser_nodes___TSlash (SFT_parser___parser_nodes[226])
+#define COLOR_parser___parser_nodes___TSlash (SFT_parser___parser_nodes[227])
+#define INIT_TABLE_POS_parser___parser_nodes___TSlash (SFT_parser___parser_nodes[228] + 0)
+#define ID_parser___parser_nodes___TPercent (SFT_parser___parser_nodes[229])
+#define COLOR_parser___parser_nodes___TPercent (SFT_parser___parser_nodes[230])
+#define INIT_TABLE_POS_parser___parser_nodes___TPercent (SFT_parser___parser_nodes[231] + 0)
+#define ID_parser___parser_nodes___TEq (SFT_parser___parser_nodes[232])
+#define COLOR_parser___parser_nodes___TEq (SFT_parser___parser_nodes[233])
+#define INIT_TABLE_POS_parser___parser_nodes___TEq (SFT_parser___parser_nodes[234] + 0)
+#define ID_parser___parser_nodes___TNe (SFT_parser___parser_nodes[235])
+#define COLOR_parser___parser_nodes___TNe (SFT_parser___parser_nodes[236])
+#define INIT_TABLE_POS_parser___parser_nodes___TNe (SFT_parser___parser_nodes[237] + 0)
+#define ID_parser___parser_nodes___TLt (SFT_parser___parser_nodes[238])
+#define COLOR_parser___parser_nodes___TLt (SFT_parser___parser_nodes[239])
+#define INIT_TABLE_POS_parser___parser_nodes___TLt (SFT_parser___parser_nodes[240] + 0)
+#define ID_parser___parser_nodes___TLe (SFT_parser___parser_nodes[241])
+#define COLOR_parser___parser_nodes___TLe (SFT_parser___parser_nodes[242])
+#define INIT_TABLE_POS_parser___parser_nodes___TLe (SFT_parser___parser_nodes[243] + 0)
+#define ID_parser___parser_nodes___TLl (SFT_parser___parser_nodes[244])
+#define COLOR_parser___parser_nodes___TLl (SFT_parser___parser_nodes[245])
+#define INIT_TABLE_POS_parser___parser_nodes___TLl (SFT_parser___parser_nodes[246] + 0)
+#define ID_parser___parser_nodes___TGt (SFT_parser___parser_nodes[247])
+#define COLOR_parser___parser_nodes___TGt (SFT_parser___parser_nodes[248])
+#define INIT_TABLE_POS_parser___parser_nodes___TGt (SFT_parser___parser_nodes[249] + 0)
+#define ID_parser___parser_nodes___TGe (SFT_parser___parser_nodes[250])
+#define COLOR_parser___parser_nodes___TGe (SFT_parser___parser_nodes[251])
+#define INIT_TABLE_POS_parser___parser_nodes___TGe (SFT_parser___parser_nodes[252] + 0)
+#define ID_parser___parser_nodes___TGg (SFT_parser___parser_nodes[253])
+#define COLOR_parser___parser_nodes___TGg (SFT_parser___parser_nodes[254])
+#define INIT_TABLE_POS_parser___parser_nodes___TGg (SFT_parser___parser_nodes[255] + 0)
+#define ID_parser___parser_nodes___TStarship (SFT_parser___parser_nodes[256])
+#define COLOR_parser___parser_nodes___TStarship (SFT_parser___parser_nodes[257])
+#define INIT_TABLE_POS_parser___parser_nodes___TStarship (SFT_parser___parser_nodes[258] + 0)
+#define ID_parser___parser_nodes___TBang (SFT_parser___parser_nodes[259])
+#define COLOR_parser___parser_nodes___TBang (SFT_parser___parser_nodes[260])
+#define INIT_TABLE_POS_parser___parser_nodes___TBang (SFT_parser___parser_nodes[261] + 0)
+#define ID_parser___parser_nodes___TAt (SFT_parser___parser_nodes[262])
+#define COLOR_parser___parser_nodes___TAt (SFT_parser___parser_nodes[263])
+#define INIT_TABLE_POS_parser___parser_nodes___TAt (SFT_parser___parser_nodes[264] + 0)
+#define ID_parser___parser_nodes___TClassid (SFT_parser___parser_nodes[265])
+#define COLOR_parser___parser_nodes___TClassid (SFT_parser___parser_nodes[266])
+#define INIT_TABLE_POS_parser___parser_nodes___TClassid (SFT_parser___parser_nodes[267] + 0)
+#define ID_parser___parser_nodes___TId (SFT_parser___parser_nodes[268])
+#define COLOR_parser___parser_nodes___TId (SFT_parser___parser_nodes[269])
+#define INIT_TABLE_POS_parser___parser_nodes___TId (SFT_parser___parser_nodes[270] + 0)
+#define ID_parser___parser_nodes___TAttrid (SFT_parser___parser_nodes[271])
+#define COLOR_parser___parser_nodes___TAttrid (SFT_parser___parser_nodes[272])
+#define INIT_TABLE_POS_parser___parser_nodes___TAttrid (SFT_parser___parser_nodes[273] + 0)
+#define ID_parser___parser_nodes___TokenLiteral (SFT_parser___parser_nodes[274])
+#define COLOR_parser___parser_nodes___TokenLiteral (SFT_parser___parser_nodes[275])
+#define INIT_TABLE_POS_parser___parser_nodes___TokenLiteral (SFT_parser___parser_nodes[276] + 0)
+#define ID_parser___parser_nodes___TNumber (SFT_parser___parser_nodes[277])
+#define COLOR_parser___parser_nodes___TNumber (SFT_parser___parser_nodes[278])
+#define INIT_TABLE_POS_parser___parser_nodes___TNumber (SFT_parser___parser_nodes[279] + 0)
+#define ID_parser___parser_nodes___TFloat (SFT_parser___parser_nodes[280])
+#define COLOR_parser___parser_nodes___TFloat (SFT_parser___parser_nodes[281])
+#define INIT_TABLE_POS_parser___parser_nodes___TFloat (SFT_parser___parser_nodes[282] + 0)
+#define ID_parser___parser_nodes___TChar (SFT_parser___parser_nodes[283])
+#define COLOR_parser___parser_nodes___TChar (SFT_parser___parser_nodes[284])
+#define INIT_TABLE_POS_parser___parser_nodes___TChar (SFT_parser___parser_nodes[285] + 0)
+#define ID_parser___parser_nodes___TString (SFT_parser___parser_nodes[286])
+#define COLOR_parser___parser_nodes___TString (SFT_parser___parser_nodes[287])
+#define INIT_TABLE_POS_parser___parser_nodes___TString (SFT_parser___parser_nodes[288] + 0)
+#define ID_parser___parser_nodes___TStartString (SFT_parser___parser_nodes[289])
+#define COLOR_parser___parser_nodes___TStartString (SFT_parser___parser_nodes[290])
+#define INIT_TABLE_POS_parser___parser_nodes___TStartString (SFT_parser___parser_nodes[291] + 0)
+#define ID_parser___parser_nodes___TMidString (SFT_parser___parser_nodes[292])
+#define COLOR_parser___parser_nodes___TMidString (SFT_parser___parser_nodes[293])
+#define INIT_TABLE_POS_parser___parser_nodes___TMidString (SFT_parser___parser_nodes[294] + 0)
+#define ID_parser___parser_nodes___TEndString (SFT_parser___parser_nodes[295])
+#define COLOR_parser___parser_nodes___TEndString (SFT_parser___parser_nodes[296])
+#define INIT_TABLE_POS_parser___parser_nodes___TEndString (SFT_parser___parser_nodes[297] + 0)
+#define ID_parser___parser_nodes___TBadString (SFT_parser___parser_nodes[298])
+#define COLOR_parser___parser_nodes___TBadString (SFT_parser___parser_nodes[299])
+#define INIT_TABLE_POS_parser___parser_nodes___TBadString (SFT_parser___parser_nodes[300] + 0)
+#define ID_parser___parser_nodes___TBadChar (SFT_parser___parser_nodes[301])
+#define COLOR_parser___parser_nodes___TBadChar (SFT_parser___parser_nodes[302])
+#define INIT_TABLE_POS_parser___parser_nodes___TBadChar (SFT_parser___parser_nodes[303] + 0)
+#define ID_parser___parser_nodes___TExternCodeSegment (SFT_parser___parser_nodes[304])
+#define COLOR_parser___parser_nodes___TExternCodeSegment (SFT_parser___parser_nodes[305])
+#define INIT_TABLE_POS_parser___parser_nodes___TExternCodeSegment (SFT_parser___parser_nodes[306] + 0)
+#define ID_parser___parser_nodes___EOF (SFT_parser___parser_nodes[307])
+#define COLOR_parser___parser_nodes___EOF (SFT_parser___parser_nodes[308])
+#define INIT_TABLE_POS_parser___parser_nodes___EOF (SFT_parser___parser_nodes[309] + 0)
+#define ID_parser___parser_nodes___AError (SFT_parser___parser_nodes[310])
+#define COLOR_parser___parser_nodes___AError (SFT_parser___parser_nodes[311])
+#define INIT_TABLE_POS_parser___parser_nodes___AError (SFT_parser___parser_nodes[312] + 0)
+#define ID_parser___parser_nodes___ALexerError (SFT_parser___parser_nodes[313])
+#define COLOR_parser___parser_nodes___ALexerError (SFT_parser___parser_nodes[314])
+#define INIT_TABLE_POS_parser___parser_nodes___ALexerError (SFT_parser___parser_nodes[315] + 0)
+#define ID_parser___parser_nodes___AParserError (SFT_parser___parser_nodes[316])
+#define COLOR_parser___parser_nodes___AParserError (SFT_parser___parser_nodes[317])
+#define INIT_TABLE_POS_parser___parser_nodes___AParserError (SFT_parser___parser_nodes[318] + 0)
+#define ID_parser___parser_nodes___AModule (SFT_parser___parser_nodes[319])
+#define COLOR_parser___parser_nodes___AModule (SFT_parser___parser_nodes[320])
+#define ATTR_parser___parser_nodes___AModule____n_moduledecl(recv) ATTR(recv, (SFT_parser___parser_nodes[321] + 0))
+#define ATTR_parser___parser_nodes___AModule____n_imports(recv) ATTR(recv, (SFT_parser___parser_nodes[321] + 1))
+#define ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(recv) ATTR(recv, (SFT_parser___parser_nodes[321] + 2))
+#define ATTR_parser___parser_nodes___AModule____n_classdefs(recv) ATTR(recv, (SFT_parser___parser_nodes[321] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AModule (SFT_parser___parser_nodes[322] + 0)
+#define CALL_parser___parser_nodes___AModule___n_moduledecl(recv) ((parser___parser_nodes___AModule___n_moduledecl_t)CALL((recv), (SFT_parser___parser_nodes[322] + 1)))
+#define CALL_parser___parser_nodes___AModule___n_moduledecl__eq(recv) ((parser___parser_nodes___AModule___n_moduledecl__eq_t)CALL((recv), (SFT_parser___parser_nodes[322] + 2)))
+#define CALL_parser___parser_nodes___AModule___n_imports(recv) ((parser___parser_nodes___AModule___n_imports_t)CALL((recv), (SFT_parser___parser_nodes[322] + 3)))
+#define CALL_parser___parser_nodes___AModule___n_extern_code_blocks(recv) ((parser___parser_nodes___AModule___n_extern_code_blocks_t)CALL((recv), (SFT_parser___parser_nodes[322] + 4)))
+#define CALL_parser___parser_nodes___AModule___n_classdefs(recv) ((parser___parser_nodes___AModule___n_classdefs_t)CALL((recv), (SFT_parser___parser_nodes[322] + 5)))
+#define ID_parser___parser_nodes___AModuledecl (SFT_parser___parser_nodes[323])
+#define COLOR_parser___parser_nodes___AModuledecl (SFT_parser___parser_nodes[324])
+#define ATTR_parser___parser_nodes___AModuledecl____n_doc(recv) ATTR(recv, (SFT_parser___parser_nodes[325] + 0))
+#define ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(recv) ATTR(recv, (SFT_parser___parser_nodes[325] + 1))
+#define ATTR_parser___parser_nodes___AModuledecl____n_name(recv) ATTR(recv, (SFT_parser___parser_nodes[325] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AModuledecl (SFT_parser___parser_nodes[326] + 0)
+#define CALL_parser___parser_nodes___AModuledecl___n_doc(recv) ((parser___parser_nodes___AModuledecl___n_doc_t)CALL((recv), (SFT_parser___parser_nodes[326] + 1)))
+#define CALL_parser___parser_nodes___AModuledecl___n_doc__eq(recv) ((parser___parser_nodes___AModuledecl___n_doc__eq_t)CALL((recv), (SFT_parser___parser_nodes[326] + 2)))
+#define CALL_parser___parser_nodes___AModuledecl___n_kwmodule(recv) ((parser___parser_nodes___AModuledecl___n_kwmodule_t)CALL((recv), (SFT_parser___parser_nodes[326] + 3)))
+#define CALL_parser___parser_nodes___AModuledecl___n_kwmodule__eq(recv) ((parser___parser_nodes___AModuledecl___n_kwmodule__eq_t)CALL((recv), (SFT_parser___parser_nodes[326] + 4)))
+#define CALL_parser___parser_nodes___AModuledecl___n_name(recv) ((parser___parser_nodes___AModuledecl___n_name_t)CALL((recv), (SFT_parser___parser_nodes[326] + 5)))
+#define CALL_parser___parser_nodes___AModuledecl___n_name__eq(recv) ((parser___parser_nodes___AModuledecl___n_name__eq_t)CALL((recv), (SFT_parser___parser_nodes[326] + 6)))
+#define ID_parser___parser_nodes___AImport (SFT_parser___parser_nodes[327])
+#define COLOR_parser___parser_nodes___AImport (SFT_parser___parser_nodes[328])
+#define INIT_TABLE_POS_parser___parser_nodes___AImport (SFT_parser___parser_nodes[329] + 0)
+#define ID_parser___parser_nodes___AStdImport (SFT_parser___parser_nodes[330])
+#define COLOR_parser___parser_nodes___AStdImport (SFT_parser___parser_nodes[331])
+#define ATTR_parser___parser_nodes___AStdImport____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[332] + 0))
+#define ATTR_parser___parser_nodes___AStdImport____n_kwimport(recv) ATTR(recv, (SFT_parser___parser_nodes[332] + 1))
+#define ATTR_parser___parser_nodes___AStdImport____n_name(recv) ATTR(recv, (SFT_parser___parser_nodes[332] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AStdImport (SFT_parser___parser_nodes[333] + 0)
+#define CALL_parser___parser_nodes___AStdImport___n_visibility(recv) ((parser___parser_nodes___AStdImport___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[333] + 1)))
+#define CALL_parser___parser_nodes___AStdImport___n_visibility__eq(recv) ((parser___parser_nodes___AStdImport___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[333] + 2)))
+#define CALL_parser___parser_nodes___AStdImport___n_kwimport(recv) ((parser___parser_nodes___AStdImport___n_kwimport_t)CALL((recv), (SFT_parser___parser_nodes[333] + 3)))
+#define CALL_parser___parser_nodes___AStdImport___n_kwimport__eq(recv) ((parser___parser_nodes___AStdImport___n_kwimport__eq_t)CALL((recv), (SFT_parser___parser_nodes[333] + 4)))
+#define CALL_parser___parser_nodes___AStdImport___n_name(recv) ((parser___parser_nodes___AStdImport___n_name_t)CALL((recv), (SFT_parser___parser_nodes[333] + 5)))
+#define CALL_parser___parser_nodes___AStdImport___n_name__eq(recv) ((parser___parser_nodes___AStdImport___n_name__eq_t)CALL((recv), (SFT_parser___parser_nodes[333] + 6)))
+#define ID_parser___parser_nodes___ANoImport (SFT_parser___parser_nodes[334])
+#define COLOR_parser___parser_nodes___ANoImport (SFT_parser___parser_nodes[335])
+#define ATTR_parser___parser_nodes___ANoImport____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[336] + 0))
+#define ATTR_parser___parser_nodes___ANoImport____n_kwimport(recv) ATTR(recv, (SFT_parser___parser_nodes[336] + 1))
+#define ATTR_parser___parser_nodes___ANoImport____n_kwend(recv) ATTR(recv, (SFT_parser___parser_nodes[336] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___ANoImport (SFT_parser___parser_nodes[337] + 0)
+#define CALL_parser___parser_nodes___ANoImport___n_visibility(recv) ((parser___parser_nodes___ANoImport___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[337] + 1)))
+#define CALL_parser___parser_nodes___ANoImport___n_visibility__eq(recv) ((parser___parser_nodes___ANoImport___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[337] + 2)))
+#define CALL_parser___parser_nodes___ANoImport___n_kwimport(recv) ((parser___parser_nodes___ANoImport___n_kwimport_t)CALL((recv), (SFT_parser___parser_nodes[337] + 3)))
+#define CALL_parser___parser_nodes___ANoImport___n_kwimport__eq(recv) ((parser___parser_nodes___ANoImport___n_kwimport__eq_t)CALL((recv), (SFT_parser___parser_nodes[337] + 4)))
+#define CALL_parser___parser_nodes___ANoImport___n_kwend(recv) ((parser___parser_nodes___ANoImport___n_kwend_t)CALL((recv), (SFT_parser___parser_nodes[337] + 5)))
+#define CALL_parser___parser_nodes___ANoImport___n_kwend__eq(recv) ((parser___parser_nodes___ANoImport___n_kwend__eq_t)CALL((recv), (SFT_parser___parser_nodes[337] + 6)))
+#define ID_parser___parser_nodes___AVisibility (SFT_parser___parser_nodes[338])
+#define COLOR_parser___parser_nodes___AVisibility (SFT_parser___parser_nodes[339])
+#define INIT_TABLE_POS_parser___parser_nodes___AVisibility (SFT_parser___parser_nodes[340] + 0)
+#define ID_parser___parser_nodes___APublicVisibility (SFT_parser___parser_nodes[341])
+#define COLOR_parser___parser_nodes___APublicVisibility (SFT_parser___parser_nodes[342])
+#define INIT_TABLE_POS_parser___parser_nodes___APublicVisibility (SFT_parser___parser_nodes[343] + 0)
+#define ID_parser___parser_nodes___APrivateVisibility (SFT_parser___parser_nodes[344])
+#define COLOR_parser___parser_nodes___APrivateVisibility (SFT_parser___parser_nodes[345])
+#define ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(recv) ATTR(recv, (SFT_parser___parser_nodes[346] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___APrivateVisibility (SFT_parser___parser_nodes[347] + 0)
+#define CALL_parser___parser_nodes___APrivateVisibility___n_kwprivate(recv) ((parser___parser_nodes___APrivateVisibility___n_kwprivate_t)CALL((recv), (SFT_parser___parser_nodes[347] + 1)))
+#define CALL_parser___parser_nodes___APrivateVisibility___n_kwprivate__eq(recv) ((parser___parser_nodes___APrivateVisibility___n_kwprivate__eq_t)CALL((recv), (SFT_parser___parser_nodes[347] + 2)))
+#define ID_parser___parser_nodes___AProtectedVisibility (SFT_parser___parser_nodes[348])
+#define COLOR_parser___parser_nodes___AProtectedVisibility (SFT_parser___parser_nodes[349])
+#define ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(recv) ATTR(recv, (SFT_parser___parser_nodes[350] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AProtectedVisibility (SFT_parser___parser_nodes[351] + 0)
+#define CALL_parser___parser_nodes___AProtectedVisibility___n_kwprotected(recv) ((parser___parser_nodes___AProtectedVisibility___n_kwprotected_t)CALL((recv), (SFT_parser___parser_nodes[351] + 1)))
+#define CALL_parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq(recv) ((parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq_t)CALL((recv), (SFT_parser___parser_nodes[351] + 2)))
+#define ID_parser___parser_nodes___AIntrudeVisibility (SFT_parser___parser_nodes[352])
+#define COLOR_parser___parser_nodes___AIntrudeVisibility (SFT_parser___parser_nodes[353])
+#define ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(recv) ATTR(recv, (SFT_parser___parser_nodes[354] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AIntrudeVisibility (SFT_parser___parser_nodes[355] + 0)
+#define CALL_parser___parser_nodes___AIntrudeVisibility___n_kwintrude(recv) ((parser___parser_nodes___AIntrudeVisibility___n_kwintrude_t)CALL((recv), (SFT_parser___parser_nodes[355] + 1)))
+#define CALL_parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq(recv) ((parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq_t)CALL((recv), (SFT_parser___parser_nodes[355] + 2)))
+#define ID_parser___parser_nodes___AClassdef (SFT_parser___parser_nodes[356])
+#define COLOR_parser___parser_nodes___AClassdef (SFT_parser___parser_nodes[357])
+#define ATTR_parser___parser_nodes___AClassdef____n_propdefs(recv) ATTR(recv, (SFT_parser___parser_nodes[358] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AClassdef (SFT_parser___parser_nodes[359] + 0)
+#define CALL_parser___parser_nodes___AClassdef___n_propdefs(recv) ((parser___parser_nodes___AClassdef___n_propdefs_t)CALL((recv), (SFT_parser___parser_nodes[359] + 1)))
+#define ID_parser___parser_nodes___AStdClassdef (SFT_parser___parser_nodes[360])
+#define COLOR_parser___parser_nodes___AStdClassdef (SFT_parser___parser_nodes[361])
+#define ATTR_parser___parser_nodes___AStdClassdef____n_doc(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 0))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 1))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 2))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_classkind(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 3))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 4))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 5))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 6))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 7))
+#define ATTR_parser___parser_nodes___AStdClassdef____n_kwend(recv) ATTR(recv, (SFT_parser___parser_nodes[362] + 8))
+#define INIT_TABLE_POS_parser___parser_nodes___AStdClassdef (SFT_parser___parser_nodes[363] + 0)
+#define CALL_parser___parser_nodes___AStdClassdef___n_doc(recv) ((parser___parser_nodes___AStdClassdef___n_doc_t)CALL((recv), (SFT_parser___parser_nodes[363] + 1)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_doc__eq(recv) ((parser___parser_nodes___AStdClassdef___n_doc__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 2)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_kwredef(recv) ((parser___parser_nodes___AStdClassdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[363] + 3)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_kwredef__eq(recv) ((parser___parser_nodes___AStdClassdef___n_kwredef__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 4)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_visibility(recv) ((parser___parser_nodes___AStdClassdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[363] + 5)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_visibility__eq(recv) ((parser___parser_nodes___AStdClassdef___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 6)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_classkind(recv) ((parser___parser_nodes___AStdClassdef___n_classkind_t)CALL((recv), (SFT_parser___parser_nodes[363] + 7)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_classkind__eq(recv) ((parser___parser_nodes___AStdClassdef___n_classkind__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 8)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_id(recv) ((parser___parser_nodes___AStdClassdef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[363] + 9)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_id__eq(recv) ((parser___parser_nodes___AStdClassdef___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 10)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_formaldefs(recv) ((parser___parser_nodes___AStdClassdef___n_formaldefs_t)CALL((recv), (SFT_parser___parser_nodes[363] + 11)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_extern_code_block(recv) ((parser___parser_nodes___AStdClassdef___n_extern_code_block_t)CALL((recv), (SFT_parser___parser_nodes[363] + 12)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_extern_code_block__eq(recv) ((parser___parser_nodes___AStdClassdef___n_extern_code_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 13)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_superclasses(recv) ((parser___parser_nodes___AStdClassdef___n_superclasses_t)CALL((recv), (SFT_parser___parser_nodes[363] + 14)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_kwend(recv) ((parser___parser_nodes___AStdClassdef___n_kwend_t)CALL((recv), (SFT_parser___parser_nodes[363] + 15)))
+#define CALL_parser___parser_nodes___AStdClassdef___n_kwend__eq(recv) ((parser___parser_nodes___AStdClassdef___n_kwend__eq_t)CALL((recv), (SFT_parser___parser_nodes[363] + 16)))
+#define ID_parser___parser_nodes___ATopClassdef (SFT_parser___parser_nodes[364])
+#define COLOR_parser___parser_nodes___ATopClassdef (SFT_parser___parser_nodes[365])
+#define INIT_TABLE_POS_parser___parser_nodes___ATopClassdef (SFT_parser___parser_nodes[366] + 0)
+#define ID_parser___parser_nodes___AMainClassdef (SFT_parser___parser_nodes[367])
+#define COLOR_parser___parser_nodes___AMainClassdef (SFT_parser___parser_nodes[368])
+#define INIT_TABLE_POS_parser___parser_nodes___AMainClassdef (SFT_parser___parser_nodes[369] + 0)
+#define ID_parser___parser_nodes___AClasskind (SFT_parser___parser_nodes[370])
+#define COLOR_parser___parser_nodes___AClasskind (SFT_parser___parser_nodes[371])
+#define INIT_TABLE_POS_parser___parser_nodes___AClasskind (SFT_parser___parser_nodes[372] + 0)
+#define ID_parser___parser_nodes___AConcreteClasskind (SFT_parser___parser_nodes[373])
+#define COLOR_parser___parser_nodes___AConcreteClasskind (SFT_parser___parser_nodes[374])
+#define ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(recv) ATTR(recv, (SFT_parser___parser_nodes[375] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AConcreteClasskind (SFT_parser___parser_nodes[376] + 0)
+#define CALL_parser___parser_nodes___AConcreteClasskind___n_kwclass(recv) ((parser___parser_nodes___AConcreteClasskind___n_kwclass_t)CALL((recv), (SFT_parser___parser_nodes[376] + 1)))
+#define CALL_parser___parser_nodes___AConcreteClasskind___n_kwclass__eq(recv) ((parser___parser_nodes___AConcreteClasskind___n_kwclass__eq_t)CALL((recv), (SFT_parser___parser_nodes[376] + 2)))
+#define ID_parser___parser_nodes___AAbstractClasskind (SFT_parser___parser_nodes[377])
+#define COLOR_parser___parser_nodes___AAbstractClasskind (SFT_parser___parser_nodes[378])
+#define ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(recv) ATTR(recv, (SFT_parser___parser_nodes[379] + 0))
+#define ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(recv) ATTR(recv, (SFT_parser___parser_nodes[379] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AAbstractClasskind (SFT_parser___parser_nodes[380] + 0)
+#define CALL_parser___parser_nodes___AAbstractClasskind___n_kwabstract(recv) ((parser___parser_nodes___AAbstractClasskind___n_kwabstract_t)CALL((recv), (SFT_parser___parser_nodes[380] + 1)))
+#define CALL_parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq(recv) ((parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq_t)CALL((recv), (SFT_parser___parser_nodes[380] + 2)))
+#define CALL_parser___parser_nodes___AAbstractClasskind___n_kwclass(recv) ((parser___parser_nodes___AAbstractClasskind___n_kwclass_t)CALL((recv), (SFT_parser___parser_nodes[380] + 3)))
+#define CALL_parser___parser_nodes___AAbstractClasskind___n_kwclass__eq(recv) ((parser___parser_nodes___AAbstractClasskind___n_kwclass__eq_t)CALL((recv), (SFT_parser___parser_nodes[380] + 4)))
+#define ID_parser___parser_nodes___AInterfaceClasskind (SFT_parser___parser_nodes[381])
+#define COLOR_parser___parser_nodes___AInterfaceClasskind (SFT_parser___parser_nodes[382])
+#define ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(recv) ATTR(recv, (SFT_parser___parser_nodes[383] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AInterfaceClasskind (SFT_parser___parser_nodes[384] + 0)
+#define CALL_parser___parser_nodes___AInterfaceClasskind___n_kwinterface(recv) ((parser___parser_nodes___AInterfaceClasskind___n_kwinterface_t)CALL((recv), (SFT_parser___parser_nodes[384] + 1)))
+#define CALL_parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq(recv) ((parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq_t)CALL((recv), (SFT_parser___parser_nodes[384] + 2)))
+#define ID_parser___parser_nodes___AEnumClasskind (SFT_parser___parser_nodes[385])
+#define COLOR_parser___parser_nodes___AEnumClasskind (SFT_parser___parser_nodes[386])
+#define ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(recv) ATTR(recv, (SFT_parser___parser_nodes[387] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AEnumClasskind (SFT_parser___parser_nodes[388] + 0)
+#define CALL_parser___parser_nodes___AEnumClasskind___n_kwenum(recv) ((parser___parser_nodes___AEnumClasskind___n_kwenum_t)CALL((recv), (SFT_parser___parser_nodes[388] + 1)))
+#define CALL_parser___parser_nodes___AEnumClasskind___n_kwenum__eq(recv) ((parser___parser_nodes___AEnumClasskind___n_kwenum__eq_t)CALL((recv), (SFT_parser___parser_nodes[388] + 2)))
+#define ID_parser___parser_nodes___AExternClasskind (SFT_parser___parser_nodes[389])
+#define COLOR_parser___parser_nodes___AExternClasskind (SFT_parser___parser_nodes[390])
+#define ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(recv) ATTR(recv, (SFT_parser___parser_nodes[391] + 0))
+#define ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(recv) ATTR(recv, (SFT_parser___parser_nodes[391] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AExternClasskind (SFT_parser___parser_nodes[392] + 0)
+#define CALL_parser___parser_nodes___AExternClasskind___n_kwextern(recv) ((parser___parser_nodes___AExternClasskind___n_kwextern_t)CALL((recv), (SFT_parser___parser_nodes[392] + 1)))
+#define CALL_parser___parser_nodes___AExternClasskind___n_kwextern__eq(recv) ((parser___parser_nodes___AExternClasskind___n_kwextern__eq_t)CALL((recv), (SFT_parser___parser_nodes[392] + 2)))
+#define CALL_parser___parser_nodes___AExternClasskind___n_kwclass(recv) ((parser___parser_nodes___AExternClasskind___n_kwclass_t)CALL((recv), (SFT_parser___parser_nodes[392] + 3)))
+#define CALL_parser___parser_nodes___AExternClasskind___n_kwclass__eq(recv) ((parser___parser_nodes___AExternClasskind___n_kwclass__eq_t)CALL((recv), (SFT_parser___parser_nodes[392] + 4)))
+#define ID_parser___parser_nodes___AFormaldef (SFT_parser___parser_nodes[393])
+#define COLOR_parser___parser_nodes___AFormaldef (SFT_parser___parser_nodes[394])
+#define ATTR_parser___parser_nodes___AFormaldef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[395] + 0))
+#define ATTR_parser___parser_nodes___AFormaldef____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[395] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AFormaldef (SFT_parser___parser_nodes[396] + 0)
+#define CALL_parser___parser_nodes___AFormaldef___n_id(recv) ((parser___parser_nodes___AFormaldef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[396] + 1)))
+#define CALL_parser___parser_nodes___AFormaldef___n_id__eq(recv) ((parser___parser_nodes___AFormaldef___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[396] + 2)))
+#define CALL_parser___parser_nodes___AFormaldef___n_type(recv) ((parser___parser_nodes___AFormaldef___n_type_t)CALL((recv), (SFT_parser___parser_nodes[396] + 3)))
+#define CALL_parser___parser_nodes___AFormaldef___n_type__eq(recv) ((parser___parser_nodes___AFormaldef___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[396] + 4)))
+#define ID_parser___parser_nodes___ASuperclass (SFT_parser___parser_nodes[397])
+#define COLOR_parser___parser_nodes___ASuperclass (SFT_parser___parser_nodes[398])
+#define ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 0))
+#define ATTR_parser___parser_nodes___ASuperclass____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[399] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ASuperclass (SFT_parser___parser_nodes[400] + 0)
+#define CALL_parser___parser_nodes___ASuperclass___n_kwsuper(recv) ((parser___parser_nodes___ASuperclass___n_kwsuper_t)CALL((recv), (SFT_parser___parser_nodes[400] + 1)))
+#define CALL_parser___parser_nodes___ASuperclass___n_kwsuper__eq(recv) ((parser___parser_nodes___ASuperclass___n_kwsuper__eq_t)CALL((recv), (SFT_parser___parser_nodes[400] + 2)))
+#define CALL_parser___parser_nodes___ASuperclass___n_type(recv) ((parser___parser_nodes___ASuperclass___n_type_t)CALL((recv), (SFT_parser___parser_nodes[400] + 3)))
+#define CALL_parser___parser_nodes___ASuperclass___n_type__eq(recv) ((parser___parser_nodes___ASuperclass___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[400] + 4)))
+#define ID_parser___parser_nodes___APropdef (SFT_parser___parser_nodes[401])
+#define COLOR_parser___parser_nodes___APropdef (SFT_parser___parser_nodes[402])
+#define ATTR_parser___parser_nodes___APropdef____n_doc(recv) ATTR(recv, (SFT_parser___parser_nodes[403] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___APropdef (SFT_parser___parser_nodes[404] + 0)
+#define CALL_parser___parser_nodes___APropdef___n_doc(recv) ((parser___parser_nodes___APropdef___n_doc_t)CALL((recv), (SFT_parser___parser_nodes[404] + 1)))
+#define CALL_parser___parser_nodes___APropdef___n_doc__eq(recv) ((parser___parser_nodes___APropdef___n_doc__eq_t)CALL((recv), (SFT_parser___parser_nodes[404] + 2)))
+#define ID_parser___parser_nodes___AAttrPropdef (SFT_parser___parser_nodes[405])
+#define COLOR_parser___parser_nodes___AAttrPropdef (SFT_parser___parser_nodes[406])
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 0))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 1))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 2))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 3))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_id2(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 4))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 5))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_readable(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 6))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_writable(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 7))
+#define ATTR_parser___parser_nodes___AAttrPropdef____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[407] + 8))
+#define INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef (SFT_parser___parser_nodes[408] + 0)
+#define CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(recv) ((parser___parser_nodes___AAttrPropdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[408] + 1)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_kwredef__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_kwredef__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 2)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_visibility(recv) ((parser___parser_nodes___AAttrPropdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[408] + 3)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_visibility__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 4)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_kwvar(recv) ((parser___parser_nodes___AAttrPropdef___n_kwvar_t)CALL((recv), (SFT_parser___parser_nodes[408] + 5)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_kwvar__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_kwvar__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 6)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_id(recv) ((parser___parser_nodes___AAttrPropdef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[408] + 7)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_id__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 8)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_id2(recv) ((parser___parser_nodes___AAttrPropdef___n_id2_t)CALL((recv), (SFT_parser___parser_nodes[408] + 9)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_id2__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_id2__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 10)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_type(recv) ((parser___parser_nodes___AAttrPropdef___n_type_t)CALL((recv), (SFT_parser___parser_nodes[408] + 11)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_type__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 12)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_readable(recv) ((parser___parser_nodes___AAttrPropdef___n_readable_t)CALL((recv), (SFT_parser___parser_nodes[408] + 13)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_readable__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_readable__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 14)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_writable(recv) ((parser___parser_nodes___AAttrPropdef___n_writable_t)CALL((recv), (SFT_parser___parser_nodes[408] + 15)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_writable__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_writable__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 16)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_expr(recv) ((parser___parser_nodes___AAttrPropdef___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[408] + 17)))
+#define CALL_parser___parser_nodes___AAttrPropdef___n_expr__eq(recv) ((parser___parser_nodes___AAttrPropdef___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[408] + 18)))
+#define ID_parser___parser_nodes___AMethPropdef (SFT_parser___parser_nodes[409])
+#define COLOR_parser___parser_nodes___AMethPropdef (SFT_parser___parser_nodes[410])
+#define ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[411] + 0))
+#define ATTR_parser___parser_nodes___AMethPropdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[411] + 1))
+#define ATTR_parser___parser_nodes___AMethPropdef____n_methid(recv) ATTR(recv, (SFT_parser___parser_nodes[411] + 2))
+#define ATTR_parser___parser_nodes___AMethPropdef____n_signature(recv) ATTR(recv, (SFT_parser___parser_nodes[411] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AMethPropdef (SFT_parser___parser_nodes[412] + 0)
+#define CALL_parser___parser_nodes___AMethPropdef___n_kwredef(recv) ((parser___parser_nodes___AMethPropdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[412] + 1)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_kwredef__eq(recv) ((parser___parser_nodes___AMethPropdef___n_kwredef__eq_t)CALL((recv), (SFT_parser___parser_nodes[412] + 2)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_visibility(recv) ((parser___parser_nodes___AMethPropdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[412] + 3)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_visibility__eq(recv) ((parser___parser_nodes___AMethPropdef___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[412] + 4)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_methid(recv) ((parser___parser_nodes___AMethPropdef___n_methid_t)CALL((recv), (SFT_parser___parser_nodes[412] + 5)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_methid__eq(recv) ((parser___parser_nodes___AMethPropdef___n_methid__eq_t)CALL((recv), (SFT_parser___parser_nodes[412] + 6)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_signature(recv) ((parser___parser_nodes___AMethPropdef___n_signature_t)CALL((recv), (SFT_parser___parser_nodes[412] + 7)))
+#define CALL_parser___parser_nodes___AMethPropdef___n_signature__eq(recv) ((parser___parser_nodes___AMethPropdef___n_signature__eq_t)CALL((recv), (SFT_parser___parser_nodes[412] + 8)))
+#define ID_parser___parser_nodes___ADeferredMethPropdef (SFT_parser___parser_nodes[413])
+#define COLOR_parser___parser_nodes___ADeferredMethPropdef (SFT_parser___parser_nodes[414])
+#define ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[415] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef (SFT_parser___parser_nodes[416] + 0)
+#define CALL_parser___parser_nodes___ADeferredMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___ADeferredMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[416] + 1)))
+#define CALL_parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq(recv) ((parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq_t)CALL((recv), (SFT_parser___parser_nodes[416] + 2)))
+#define ID_parser___parser_nodes___AInternMethPropdef (SFT_parser___parser_nodes[417])
+#define COLOR_parser___parser_nodes___AInternMethPropdef (SFT_parser___parser_nodes[418])
+#define ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[419] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AInternMethPropdef (SFT_parser___parser_nodes[420] + 0)
+#define CALL_parser___parser_nodes___AInternMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___AInternMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[420] + 1)))
+#define CALL_parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq(recv) ((parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq_t)CALL((recv), (SFT_parser___parser_nodes[420] + 2)))
+#define ID_parser___parser_nodes___AExternPropdef (SFT_parser___parser_nodes[421])
+#define COLOR_parser___parser_nodes___AExternPropdef (SFT_parser___parser_nodes[422])
+#define ATTR_parser___parser_nodes___AExternPropdef____n_extern(recv) ATTR(recv, (SFT_parser___parser_nodes[423] + 0))
+#define ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(recv) ATTR(recv, (SFT_parser___parser_nodes[423] + 1))
+#define ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(recv) ATTR(recv, (SFT_parser___parser_nodes[423] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AExternPropdef (SFT_parser___parser_nodes[424] + 0)
+#define CALL_parser___parser_nodes___AExternPropdef___n_extern(recv) ((parser___parser_nodes___AExternPropdef___n_extern_t)CALL((recv), (SFT_parser___parser_nodes[424] + 1)))
+#define CALL_parser___parser_nodes___AExternPropdef___n_extern__eq(recv) ((parser___parser_nodes___AExternPropdef___n_extern__eq_t)CALL((recv), (SFT_parser___parser_nodes[424] + 2)))
+#define CALL_parser___parser_nodes___AExternPropdef___n_extern_calls(recv) ((parser___parser_nodes___AExternPropdef___n_extern_calls_t)CALL((recv), (SFT_parser___parser_nodes[424] + 3)))
+#define CALL_parser___parser_nodes___AExternPropdef___n_extern_calls__eq(recv) ((parser___parser_nodes___AExternPropdef___n_extern_calls__eq_t)CALL((recv), (SFT_parser___parser_nodes[424] + 4)))
+#define CALL_parser___parser_nodes___AExternPropdef___n_extern_code_block(recv) ((parser___parser_nodes___AExternPropdef___n_extern_code_block_t)CALL((recv), (SFT_parser___parser_nodes[424] + 5)))
+#define CALL_parser___parser_nodes___AExternPropdef___n_extern_code_block__eq(recv) ((parser___parser_nodes___AExternPropdef___n_extern_code_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[424] + 6)))
+#define ID_parser___parser_nodes___AExternMethPropdef (SFT_parser___parser_nodes[425])
+#define COLOR_parser___parser_nodes___AExternMethPropdef (SFT_parser___parser_nodes[426])
+#define ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[427] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef (SFT_parser___parser_nodes[428] + 0)
+#define CALL_parser___parser_nodes___AExternMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___AExternMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[428] + 1)))
+#define CALL_parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq(recv) ((parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq_t)CALL((recv), (SFT_parser___parser_nodes[428] + 2)))
+#define ID_parser___parser_nodes___AConcreteMethPropdef (SFT_parser___parser_nodes[429])
+#define COLOR_parser___parser_nodes___AConcreteMethPropdef (SFT_parser___parser_nodes[430])
+#define ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(recv) ATTR(recv, (SFT_parser___parser_nodes[431] + 0))
+#define ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[431] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef (SFT_parser___parser_nodes[432] + 0)
+#define CALL_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth(recv) ((parser___parser_nodes___AConcreteMethPropdef___n_kwmeth_t)CALL((recv), (SFT_parser___parser_nodes[432] + 1)))
+#define CALL_parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq(recv) ((parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq_t)CALL((recv), (SFT_parser___parser_nodes[432] + 2)))
+#define CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(recv) ((parser___parser_nodes___AConcreteMethPropdef___n_block_t)CALL((recv), (SFT_parser___parser_nodes[432] + 3)))
+#define CALL_parser___parser_nodes___AConcreteMethPropdef___n_block__eq(recv) ((parser___parser_nodes___AConcreteMethPropdef___n_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[432] + 4)))
+#define ID_parser___parser_nodes___AInitPropdef (SFT_parser___parser_nodes[433])
+#define COLOR_parser___parser_nodes___AInitPropdef (SFT_parser___parser_nodes[434])
+#define INIT_TABLE_POS_parser___parser_nodes___AInitPropdef (SFT_parser___parser_nodes[435] + 0)
+#define ID_parser___parser_nodes___AConcreteInitPropdef (SFT_parser___parser_nodes[436])
+#define COLOR_parser___parser_nodes___AConcreteInitPropdef (SFT_parser___parser_nodes[437])
+#define ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(recv) ATTR(recv, (SFT_parser___parser_nodes[438] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef (SFT_parser___parser_nodes[439] + 0)
+#define CALL_parser___parser_nodes___AConcreteInitPropdef___n_kwinit(recv) ((parser___parser_nodes___AConcreteInitPropdef___n_kwinit_t)CALL((recv), (SFT_parser___parser_nodes[439] + 1)))
+#define CALL_parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq(recv) ((parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq_t)CALL((recv), (SFT_parser___parser_nodes[439] + 2)))
+#define ID_parser___parser_nodes___AExternInitPropdef (SFT_parser___parser_nodes[440])
+#define COLOR_parser___parser_nodes___AExternInitPropdef (SFT_parser___parser_nodes[441])
+#define ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(recv) ATTR(recv, (SFT_parser___parser_nodes[442] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef (SFT_parser___parser_nodes[443] + 0)
+#define CALL_parser___parser_nodes___AExternInitPropdef___n_kwnew(recv) ((parser___parser_nodes___AExternInitPropdef___n_kwnew_t)CALL((recv), (SFT_parser___parser_nodes[443] + 1)))
+#define CALL_parser___parser_nodes___AExternInitPropdef___n_kwnew__eq(recv) ((parser___parser_nodes___AExternInitPropdef___n_kwnew__eq_t)CALL((recv), (SFT_parser___parser_nodes[443] + 2)))
+#define ID_parser___parser_nodes___AMainMethPropdef (SFT_parser___parser_nodes[444])
+#define COLOR_parser___parser_nodes___AMainMethPropdef (SFT_parser___parser_nodes[445])
+#define INIT_TABLE_POS_parser___parser_nodes___AMainMethPropdef (SFT_parser___parser_nodes[446] + 0)
+#define ID_parser___parser_nodes___AExternCalls (SFT_parser___parser_nodes[447])
+#define COLOR_parser___parser_nodes___AExternCalls (SFT_parser___parser_nodes[448])
+#define ATTR_parser___parser_nodes___AExternCalls____n_kwimport(recv) ATTR(recv, (SFT_parser___parser_nodes[449] + 0))
+#define ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(recv) ATTR(recv, (SFT_parser___parser_nodes[449] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AExternCalls (SFT_parser___parser_nodes[450] + 0)
+#define CALL_parser___parser_nodes___AExternCalls___n_kwimport(recv) ((parser___parser_nodes___AExternCalls___n_kwimport_t)CALL((recv), (SFT_parser___parser_nodes[450] + 1)))
+#define CALL_parser___parser_nodes___AExternCalls___n_kwimport__eq(recv) ((parser___parser_nodes___AExternCalls___n_kwimport__eq_t)CALL((recv), (SFT_parser___parser_nodes[450] + 2)))
+#define CALL_parser___parser_nodes___AExternCalls___n_extern_calls(recv) ((parser___parser_nodes___AExternCalls___n_extern_calls_t)CALL((recv), (SFT_parser___parser_nodes[450] + 3)))
+#define ID_parser___parser_nodes___AExternCall (SFT_parser___parser_nodes[451])
+#define COLOR_parser___parser_nodes___AExternCall (SFT_parser___parser_nodes[452])
+#define INIT_TABLE_POS_parser___parser_nodes___AExternCall (SFT_parser___parser_nodes[453] + 0)
+#define ID_parser___parser_nodes___APropExternCall (SFT_parser___parser_nodes[454])
+#define COLOR_parser___parser_nodes___APropExternCall (SFT_parser___parser_nodes[455])
+#define INIT_TABLE_POS_parser___parser_nodes___APropExternCall (SFT_parser___parser_nodes[456] + 0)
+#define ID_parser___parser_nodes___ALocalPropExternCall (SFT_parser___parser_nodes[457])
+#define COLOR_parser___parser_nodes___ALocalPropExternCall (SFT_parser___parser_nodes[458])
+#define ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(recv) ATTR(recv, (SFT_parser___parser_nodes[459] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall (SFT_parser___parser_nodes[460] + 0)
+#define CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(recv) ((parser___parser_nodes___ALocalPropExternCall___n_methid_t)CALL((recv), (SFT_parser___parser_nodes[460] + 1)))
+#define CALL_parser___parser_nodes___ALocalPropExternCall___n_methid__eq(recv) ((parser___parser_nodes___ALocalPropExternCall___n_methid__eq_t)CALL((recv), (SFT_parser___parser_nodes[460] + 2)))
+#define ID_parser___parser_nodes___AFullPropExternCall (SFT_parser___parser_nodes[461])
+#define COLOR_parser___parser_nodes___AFullPropExternCall (SFT_parser___parser_nodes[462])
+#define ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(recv) ATTR(recv, (SFT_parser___parser_nodes[463] + 0))
+#define ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(recv) ATTR(recv, (SFT_parser___parser_nodes[463] + 1))
+#define ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(recv) ATTR(recv, (SFT_parser___parser_nodes[463] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall (SFT_parser___parser_nodes[464] + 0)
+#define CALL_parser___parser_nodes___AFullPropExternCall___n_classid(recv) ((parser___parser_nodes___AFullPropExternCall___n_classid_t)CALL((recv), (SFT_parser___parser_nodes[464] + 1)))
+#define CALL_parser___parser_nodes___AFullPropExternCall___n_classid__eq(recv) ((parser___parser_nodes___AFullPropExternCall___n_classid__eq_t)CALL((recv), (SFT_parser___parser_nodes[464] + 2)))
+#define CALL_parser___parser_nodes___AFullPropExternCall___n_quad(recv) ((parser___parser_nodes___AFullPropExternCall___n_quad_t)CALL((recv), (SFT_parser___parser_nodes[464] + 3)))
+#define CALL_parser___parser_nodes___AFullPropExternCall___n_quad__eq(recv) ((parser___parser_nodes___AFullPropExternCall___n_quad__eq_t)CALL((recv), (SFT_parser___parser_nodes[464] + 4)))
+#define CALL_parser___parser_nodes___AFullPropExternCall___n_methid(recv) ((parser___parser_nodes___AFullPropExternCall___n_methid_t)CALL((recv), (SFT_parser___parser_nodes[464] + 5)))
+#define CALL_parser___parser_nodes___AFullPropExternCall___n_methid__eq(recv) ((parser___parser_nodes___AFullPropExternCall___n_methid__eq_t)CALL((recv), (SFT_parser___parser_nodes[464] + 6)))
+#define ID_parser___parser_nodes___AInitPropExternCall (SFT_parser___parser_nodes[465])
+#define COLOR_parser___parser_nodes___AInitPropExternCall (SFT_parser___parser_nodes[466])
+#define ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(recv) ATTR(recv, (SFT_parser___parser_nodes[467] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall (SFT_parser___parser_nodes[468] + 0)
+#define CALL_parser___parser_nodes___AInitPropExternCall___n_classid(recv) ((parser___parser_nodes___AInitPropExternCall___n_classid_t)CALL((recv), (SFT_parser___parser_nodes[468] + 1)))
+#define CALL_parser___parser_nodes___AInitPropExternCall___n_classid__eq(recv) ((parser___parser_nodes___AInitPropExternCall___n_classid__eq_t)CALL((recv), (SFT_parser___parser_nodes[468] + 2)))
+#define ID_parser___parser_nodes___ASuperExternCall (SFT_parser___parser_nodes[469])
+#define COLOR_parser___parser_nodes___ASuperExternCall (SFT_parser___parser_nodes[470])
+#define ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(recv) ATTR(recv, (SFT_parser___parser_nodes[471] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall (SFT_parser___parser_nodes[472] + 0)
+#define CALL_parser___parser_nodes___ASuperExternCall___n_kwsuper(recv) ((parser___parser_nodes___ASuperExternCall___n_kwsuper_t)CALL((recv), (SFT_parser___parser_nodes[472] + 1)))
+#define CALL_parser___parser_nodes___ASuperExternCall___n_kwsuper__eq(recv) ((parser___parser_nodes___ASuperExternCall___n_kwsuper__eq_t)CALL((recv), (SFT_parser___parser_nodes[472] + 2)))
+#define ID_parser___parser_nodes___ACastExternCall (SFT_parser___parser_nodes[473])
+#define COLOR_parser___parser_nodes___ACastExternCall (SFT_parser___parser_nodes[474])
+#define INIT_TABLE_POS_parser___parser_nodes___ACastExternCall (SFT_parser___parser_nodes[475] + 0)
+#define ID_parser___parser_nodes___ACastAsExternCall (SFT_parser___parser_nodes[476])
+#define COLOR_parser___parser_nodes___ACastAsExternCall (SFT_parser___parser_nodes[477])
+#define ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 0))
+#define ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 1))
+#define ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(recv) ATTR(recv, (SFT_parser___parser_nodes[478] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall (SFT_parser___parser_nodes[479] + 0)
+#define CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(recv) ((parser___parser_nodes___ACastAsExternCall___n_from_type_t)CALL((recv), (SFT_parser___parser_nodes[479] + 1)))
+#define CALL_parser___parser_nodes___ACastAsExternCall___n_from_type__eq(recv) ((parser___parser_nodes___ACastAsExternCall___n_from_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[479] + 2)))
+#define CALL_parser___parser_nodes___ACastAsExternCall___n_kwas(recv) ((parser___parser_nodes___ACastAsExternCall___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[479] + 3)))
+#define CALL_parser___parser_nodes___ACastAsExternCall___n_kwas__eq(recv) ((parser___parser_nodes___ACastAsExternCall___n_kwas__eq_t)CALL((recv), (SFT_parser___parser_nodes[479] + 4)))
+#define CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(recv) ((parser___parser_nodes___ACastAsExternCall___n_to_type_t)CALL((recv), (SFT_parser___parser_nodes[479] + 5)))
+#define CALL_parser___parser_nodes___ACastAsExternCall___n_to_type__eq(recv) ((parser___parser_nodes___ACastAsExternCall___n_to_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[479] + 6)))
+#define ID_parser___parser_nodes___AAsNullableExternCall (SFT_parser___parser_nodes[480])
+#define COLOR_parser___parser_nodes___AAsNullableExternCall (SFT_parser___parser_nodes[481])
+#define ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 0))
+#define ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 1))
+#define ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(recv) ATTR(recv, (SFT_parser___parser_nodes[482] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall (SFT_parser___parser_nodes[483] + 0)
+#define CALL_parser___parser_nodes___AAsNullableExternCall___n_type(recv) ((parser___parser_nodes___AAsNullableExternCall___n_type_t)CALL((recv), (SFT_parser___parser_nodes[483] + 1)))
+#define CALL_parser___parser_nodes___AAsNullableExternCall___n_type__eq(recv) ((parser___parser_nodes___AAsNullableExternCall___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[483] + 2)))
+#define CALL_parser___parser_nodes___AAsNullableExternCall___n_kwas(recv) ((parser___parser_nodes___AAsNullableExternCall___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[483] + 3)))
+#define CALL_parser___parser_nodes___AAsNullableExternCall___n_kwas__eq(recv) ((parser___parser_nodes___AAsNullableExternCall___n_kwas__eq_t)CALL((recv), (SFT_parser___parser_nodes[483] + 4)))
+#define CALL_parser___parser_nodes___AAsNullableExternCall___n_kwnullable(recv) ((parser___parser_nodes___AAsNullableExternCall___n_kwnullable_t)CALL((recv), (SFT_parser___parser_nodes[483] + 5)))
+#define CALL_parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq(recv) ((parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq_t)CALL((recv), (SFT_parser___parser_nodes[483] + 6)))
+#define ID_parser___parser_nodes___AAsNotNullableExternCall (SFT_parser___parser_nodes[484])
+#define COLOR_parser___parser_nodes___AAsNotNullableExternCall (SFT_parser___parser_nodes[485])
+#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[486] + 0))
+#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[486] + 1))
+#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(recv) ATTR(recv, (SFT_parser___parser_nodes[486] + 2))
+#define ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(recv) ATTR(recv, (SFT_parser___parser_nodes[486] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall (SFT_parser___parser_nodes[487] + 0)
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_type_t)CALL((recv), (SFT_parser___parser_nodes[487] + 1)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type__eq(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[487] + 2)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwas(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[487] + 3)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq_t)CALL((recv), (SFT_parser___parser_nodes[487] + 4)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwnot_t)CALL((recv), (SFT_parser___parser_nodes[487] + 5)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq_t)CALL((recv), (SFT_parser___parser_nodes[487] + 6)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable_t)CALL((recv), (SFT_parser___parser_nodes[487] + 7)))
+#define CALL_parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq(recv) ((parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq_t)CALL((recv), (SFT_parser___parser_nodes[487] + 8)))
+#define ID_parser___parser_nodes___ATypePropdef (SFT_parser___parser_nodes[488])
+#define COLOR_parser___parser_nodes___ATypePropdef (SFT_parser___parser_nodes[489])
+#define ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[490] + 0))
+#define ATTR_parser___parser_nodes___ATypePropdef____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[490] + 1))
+#define ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(recv) ATTR(recv, (SFT_parser___parser_nodes[490] + 2))
+#define ATTR_parser___parser_nodes___ATypePropdef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[490] + 3))
+#define ATTR_parser___parser_nodes___ATypePropdef____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[490] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___ATypePropdef (SFT_parser___parser_nodes[491] + 0)
+#define CALL_parser___parser_nodes___ATypePropdef___n_kwredef(recv) ((parser___parser_nodes___ATypePropdef___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[491] + 1)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_kwredef__eq(recv) ((parser___parser_nodes___ATypePropdef___n_kwredef__eq_t)CALL((recv), (SFT_parser___parser_nodes[491] + 2)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_visibility(recv) ((parser___parser_nodes___ATypePropdef___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[491] + 3)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_visibility__eq(recv) ((parser___parser_nodes___ATypePropdef___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[491] + 4)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_kwtype(recv) ((parser___parser_nodes___ATypePropdef___n_kwtype_t)CALL((recv), (SFT_parser___parser_nodes[491] + 5)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_kwtype__eq(recv) ((parser___parser_nodes___ATypePropdef___n_kwtype__eq_t)CALL((recv), (SFT_parser___parser_nodes[491] + 6)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_id(recv) ((parser___parser_nodes___ATypePropdef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[491] + 7)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_id__eq(recv) ((parser___parser_nodes___ATypePropdef___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[491] + 8)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_type(recv) ((parser___parser_nodes___ATypePropdef___n_type_t)CALL((recv), (SFT_parser___parser_nodes[491] + 9)))
+#define CALL_parser___parser_nodes___ATypePropdef___n_type__eq(recv) ((parser___parser_nodes___ATypePropdef___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[491] + 10)))
+#define ID_parser___parser_nodes___AAble (SFT_parser___parser_nodes[492])
+#define COLOR_parser___parser_nodes___AAble (SFT_parser___parser_nodes[493])
+#define ATTR_parser___parser_nodes___AAble____n_visibility(recv) ATTR(recv, (SFT_parser___parser_nodes[494] + 0))
+#define ATTR_parser___parser_nodes___AAble____n_kwredef(recv) ATTR(recv, (SFT_parser___parser_nodes[494] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AAble (SFT_parser___parser_nodes[495] + 0)
+#define CALL_parser___parser_nodes___AAble___n_visibility(recv) ((parser___parser_nodes___AAble___n_visibility_t)CALL((recv), (SFT_parser___parser_nodes[495] + 1)))
+#define CALL_parser___parser_nodes___AAble___n_visibility__eq(recv) ((parser___parser_nodes___AAble___n_visibility__eq_t)CALL((recv), (SFT_parser___parser_nodes[495] + 2)))
+#define CALL_parser___parser_nodes___AAble___n_kwredef(recv) ((parser___parser_nodes___AAble___n_kwredef_t)CALL((recv), (SFT_parser___parser_nodes[495] + 3)))
+#define CALL_parser___parser_nodes___AAble___n_kwredef__eq(recv) ((parser___parser_nodes___AAble___n_kwredef__eq_t)CALL((recv), (SFT_parser___parser_nodes[495] + 4)))
+#define ID_parser___parser_nodes___AReadAble (SFT_parser___parser_nodes[496])
+#define COLOR_parser___parser_nodes___AReadAble (SFT_parser___parser_nodes[497])
+#define ATTR_parser___parser_nodes___AReadAble____n_kwreadable(recv) ATTR(recv, (SFT_parser___parser_nodes[498] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AReadAble (SFT_parser___parser_nodes[499] + 0)
+#define CALL_parser___parser_nodes___AReadAble___n_kwreadable(recv) ((parser___parser_nodes___AReadAble___n_kwreadable_t)CALL((recv), (SFT_parser___parser_nodes[499] + 1)))
+#define CALL_parser___parser_nodes___AReadAble___n_kwreadable__eq(recv) ((parser___parser_nodes___AReadAble___n_kwreadable__eq_t)CALL((recv), (SFT_parser___parser_nodes[499] + 2)))
+#define ID_parser___parser_nodes___AWriteAble (SFT_parser___parser_nodes[500])
+#define COLOR_parser___parser_nodes___AWriteAble (SFT_parser___parser_nodes[501])
+#define ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(recv) ATTR(recv, (SFT_parser___parser_nodes[502] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AWriteAble (SFT_parser___parser_nodes[503] + 0)
+#define CALL_parser___parser_nodes___AWriteAble___n_kwwritable(recv) ((parser___parser_nodes___AWriteAble___n_kwwritable_t)CALL((recv), (SFT_parser___parser_nodes[503] + 1)))
+#define CALL_parser___parser_nodes___AWriteAble___n_kwwritable__eq(recv) ((parser___parser_nodes___AWriteAble___n_kwwritable__eq_t)CALL((recv), (SFT_parser___parser_nodes[503] + 2)))
+#define ID_parser___parser_nodes___AMethid (SFT_parser___parser_nodes[504])
+#define COLOR_parser___parser_nodes___AMethid (SFT_parser___parser_nodes[505])
+#define INIT_TABLE_POS_parser___parser_nodes___AMethid (SFT_parser___parser_nodes[506] + 0)
+#define ID_parser___parser_nodes___AIdMethid (SFT_parser___parser_nodes[507])
+#define COLOR_parser___parser_nodes___AIdMethid (SFT_parser___parser_nodes[508])
+#define ATTR_parser___parser_nodes___AIdMethid____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[509] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AIdMethid (SFT_parser___parser_nodes[510] + 0)
+#define CALL_parser___parser_nodes___AIdMethid___n_id(recv) ((parser___parser_nodes___AIdMethid___n_id_t)CALL((recv), (SFT_parser___parser_nodes[510] + 1)))
+#define CALL_parser___parser_nodes___AIdMethid___n_id__eq(recv) ((parser___parser_nodes___AIdMethid___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[510] + 2)))
+#define ID_parser___parser_nodes___APlusMethid (SFT_parser___parser_nodes[511])
+#define COLOR_parser___parser_nodes___APlusMethid (SFT_parser___parser_nodes[512])
+#define ATTR_parser___parser_nodes___APlusMethid____n_plus(recv) ATTR(recv, (SFT_parser___parser_nodes[513] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___APlusMethid (SFT_parser___parser_nodes[514] + 0)
+#define CALL_parser___parser_nodes___APlusMethid___n_plus(recv) ((parser___parser_nodes___APlusMethid___n_plus_t)CALL((recv), (SFT_parser___parser_nodes[514] + 1)))
+#define CALL_parser___parser_nodes___APlusMethid___n_plus__eq(recv) ((parser___parser_nodes___APlusMethid___n_plus__eq_t)CALL((recv), (SFT_parser___parser_nodes[514] + 2)))
+#define ID_parser___parser_nodes___AMinusMethid (SFT_parser___parser_nodes[515])
+#define COLOR_parser___parser_nodes___AMinusMethid (SFT_parser___parser_nodes[516])
+#define ATTR_parser___parser_nodes___AMinusMethid____n_minus(recv) ATTR(recv, (SFT_parser___parser_nodes[517] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AMinusMethid (SFT_parser___parser_nodes[518] + 0)
+#define CALL_parser___parser_nodes___AMinusMethid___n_minus(recv) ((parser___parser_nodes___AMinusMethid___n_minus_t)CALL((recv), (SFT_parser___parser_nodes[518] + 1)))
+#define CALL_parser___parser_nodes___AMinusMethid___n_minus__eq(recv) ((parser___parser_nodes___AMinusMethid___n_minus__eq_t)CALL((recv), (SFT_parser___parser_nodes[518] + 2)))
+#define ID_parser___parser_nodes___AStarMethid (SFT_parser___parser_nodes[519])
+#define COLOR_parser___parser_nodes___AStarMethid (SFT_parser___parser_nodes[520])
+#define ATTR_parser___parser_nodes___AStarMethid____n_star(recv) ATTR(recv, (SFT_parser___parser_nodes[521] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AStarMethid (SFT_parser___parser_nodes[522] + 0)
+#define CALL_parser___parser_nodes___AStarMethid___n_star(recv) ((parser___parser_nodes___AStarMethid___n_star_t)CALL((recv), (SFT_parser___parser_nodes[522] + 1)))
+#define CALL_parser___parser_nodes___AStarMethid___n_star__eq(recv) ((parser___parser_nodes___AStarMethid___n_star__eq_t)CALL((recv), (SFT_parser___parser_nodes[522] + 2)))
+#define ID_parser___parser_nodes___ASlashMethid (SFT_parser___parser_nodes[523])
+#define COLOR_parser___parser_nodes___ASlashMethid (SFT_parser___parser_nodes[524])
+#define ATTR_parser___parser_nodes___ASlashMethid____n_slash(recv) ATTR(recv, (SFT_parser___parser_nodes[525] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ASlashMethid (SFT_parser___parser_nodes[526] + 0)
+#define CALL_parser___parser_nodes___ASlashMethid___n_slash(recv) ((parser___parser_nodes___ASlashMethid___n_slash_t)CALL((recv), (SFT_parser___parser_nodes[526] + 1)))
+#define CALL_parser___parser_nodes___ASlashMethid___n_slash__eq(recv) ((parser___parser_nodes___ASlashMethid___n_slash__eq_t)CALL((recv), (SFT_parser___parser_nodes[526] + 2)))
+#define ID_parser___parser_nodes___APercentMethid (SFT_parser___parser_nodes[527])
+#define COLOR_parser___parser_nodes___APercentMethid (SFT_parser___parser_nodes[528])
+#define ATTR_parser___parser_nodes___APercentMethid____n_percent(recv) ATTR(recv, (SFT_parser___parser_nodes[529] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___APercentMethid (SFT_parser___parser_nodes[530] + 0)
+#define CALL_parser___parser_nodes___APercentMethid___n_percent(recv) ((parser___parser_nodes___APercentMethid___n_percent_t)CALL((recv), (SFT_parser___parser_nodes[530] + 1)))
+#define CALL_parser___parser_nodes___APercentMethid___n_percent__eq(recv) ((parser___parser_nodes___APercentMethid___n_percent__eq_t)CALL((recv), (SFT_parser___parser_nodes[530] + 2)))
+#define ID_parser___parser_nodes___AEqMethid (SFT_parser___parser_nodes[531])
+#define COLOR_parser___parser_nodes___AEqMethid (SFT_parser___parser_nodes[532])
+#define ATTR_parser___parser_nodes___AEqMethid____n_eq(recv) ATTR(recv, (SFT_parser___parser_nodes[533] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AEqMethid (SFT_parser___parser_nodes[534] + 0)
+#define CALL_parser___parser_nodes___AEqMethid___n_eq(recv) ((parser___parser_nodes___AEqMethid___n_eq_t)CALL((recv), (SFT_parser___parser_nodes[534] + 1)))
+#define CALL_parser___parser_nodes___AEqMethid___n_eq__eq(recv) ((parser___parser_nodes___AEqMethid___n_eq__eq_t)CALL((recv), (SFT_parser___parser_nodes[534] + 2)))
+#define ID_parser___parser_nodes___ANeMethid (SFT_parser___parser_nodes[535])
+#define COLOR_parser___parser_nodes___ANeMethid (SFT_parser___parser_nodes[536])
+#define ATTR_parser___parser_nodes___ANeMethid____n_ne(recv) ATTR(recv, (SFT_parser___parser_nodes[537] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ANeMethid (SFT_parser___parser_nodes[538] + 0)
+#define CALL_parser___parser_nodes___ANeMethid___n_ne(recv) ((parser___parser_nodes___ANeMethid___n_ne_t)CALL((recv), (SFT_parser___parser_nodes[538] + 1)))
+#define CALL_parser___parser_nodes___ANeMethid___n_ne__eq(recv) ((parser___parser_nodes___ANeMethid___n_ne__eq_t)CALL((recv), (SFT_parser___parser_nodes[538] + 2)))
+#define ID_parser___parser_nodes___ALeMethid (SFT_parser___parser_nodes[539])
+#define COLOR_parser___parser_nodes___ALeMethid (SFT_parser___parser_nodes[540])
+#define ATTR_parser___parser_nodes___ALeMethid____n_le(recv) ATTR(recv, (SFT_parser___parser_nodes[541] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ALeMethid (SFT_parser___parser_nodes[542] + 0)
+#define CALL_parser___parser_nodes___ALeMethid___n_le(recv) ((parser___parser_nodes___ALeMethid___n_le_t)CALL((recv), (SFT_parser___parser_nodes[542] + 1)))
+#define CALL_parser___parser_nodes___ALeMethid___n_le__eq(recv) ((parser___parser_nodes___ALeMethid___n_le__eq_t)CALL((recv), (SFT_parser___parser_nodes[542] + 2)))
+#define ID_parser___parser_nodes___AGeMethid (SFT_parser___parser_nodes[543])
+#define COLOR_parser___parser_nodes___AGeMethid (SFT_parser___parser_nodes[544])
+#define ATTR_parser___parser_nodes___AGeMethid____n_ge(recv) ATTR(recv, (SFT_parser___parser_nodes[545] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AGeMethid (SFT_parser___parser_nodes[546] + 0)
+#define CALL_parser___parser_nodes___AGeMethid___n_ge(recv) ((parser___parser_nodes___AGeMethid___n_ge_t)CALL((recv), (SFT_parser___parser_nodes[546] + 1)))
+#define CALL_parser___parser_nodes___AGeMethid___n_ge__eq(recv) ((parser___parser_nodes___AGeMethid___n_ge__eq_t)CALL((recv), (SFT_parser___parser_nodes[546] + 2)))
+#define ID_parser___parser_nodes___ALtMethid (SFT_parser___parser_nodes[547])
+#define COLOR_parser___parser_nodes___ALtMethid (SFT_parser___parser_nodes[548])
+#define ATTR_parser___parser_nodes___ALtMethid____n_lt(recv) ATTR(recv, (SFT_parser___parser_nodes[549] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ALtMethid (SFT_parser___parser_nodes[550] + 0)
+#define CALL_parser___parser_nodes___ALtMethid___n_lt(recv) ((parser___parser_nodes___ALtMethid___n_lt_t)CALL((recv), (SFT_parser___parser_nodes[550] + 1)))
+#define CALL_parser___parser_nodes___ALtMethid___n_lt__eq(recv) ((parser___parser_nodes___ALtMethid___n_lt__eq_t)CALL((recv), (SFT_parser___parser_nodes[550] + 2)))
+#define ID_parser___parser_nodes___AGtMethid (SFT_parser___parser_nodes[551])
+#define COLOR_parser___parser_nodes___AGtMethid (SFT_parser___parser_nodes[552])
+#define ATTR_parser___parser_nodes___AGtMethid____n_gt(recv) ATTR(recv, (SFT_parser___parser_nodes[553] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AGtMethid (SFT_parser___parser_nodes[554] + 0)
+#define CALL_parser___parser_nodes___AGtMethid___n_gt(recv) ((parser___parser_nodes___AGtMethid___n_gt_t)CALL((recv), (SFT_parser___parser_nodes[554] + 1)))
+#define CALL_parser___parser_nodes___AGtMethid___n_gt__eq(recv) ((parser___parser_nodes___AGtMethid___n_gt__eq_t)CALL((recv), (SFT_parser___parser_nodes[554] + 2)))
+#define ID_parser___parser_nodes___ALlMethid (SFT_parser___parser_nodes[555])
+#define COLOR_parser___parser_nodes___ALlMethid (SFT_parser___parser_nodes[556])
+#define ATTR_parser___parser_nodes___ALlMethid____n_ll(recv) ATTR(recv, (SFT_parser___parser_nodes[557] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ALlMethid (SFT_parser___parser_nodes[558] + 0)
+#define CALL_parser___parser_nodes___ALlMethid___n_ll(recv) ((parser___parser_nodes___ALlMethid___n_ll_t)CALL((recv), (SFT_parser___parser_nodes[558] + 1)))
+#define CALL_parser___parser_nodes___ALlMethid___n_ll__eq(recv) ((parser___parser_nodes___ALlMethid___n_ll__eq_t)CALL((recv), (SFT_parser___parser_nodes[558] + 2)))
+#define ID_parser___parser_nodes___AGgMethid (SFT_parser___parser_nodes[559])
+#define COLOR_parser___parser_nodes___AGgMethid (SFT_parser___parser_nodes[560])
+#define ATTR_parser___parser_nodes___AGgMethid____n_gg(recv) ATTR(recv, (SFT_parser___parser_nodes[561] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AGgMethid (SFT_parser___parser_nodes[562] + 0)
+#define CALL_parser___parser_nodes___AGgMethid___n_gg(recv) ((parser___parser_nodes___AGgMethid___n_gg_t)CALL((recv), (SFT_parser___parser_nodes[562] + 1)))
+#define CALL_parser___parser_nodes___AGgMethid___n_gg__eq(recv) ((parser___parser_nodes___AGgMethid___n_gg__eq_t)CALL((recv), (SFT_parser___parser_nodes[562] + 2)))
+#define ID_parser___parser_nodes___ABraMethid (SFT_parser___parser_nodes[563])
+#define COLOR_parser___parser_nodes___ABraMethid (SFT_parser___parser_nodes[564])
+#define ATTR_parser___parser_nodes___ABraMethid____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[565] + 0))
+#define ATTR_parser___parser_nodes___ABraMethid____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[565] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ABraMethid (SFT_parser___parser_nodes[566] + 0)
+#define CALL_parser___parser_nodes___ABraMethid___n_obra(recv) ((parser___parser_nodes___ABraMethid___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[566] + 1)))
+#define CALL_parser___parser_nodes___ABraMethid___n_obra__eq(recv) ((parser___parser_nodes___ABraMethid___n_obra__eq_t)CALL((recv), (SFT_parser___parser_nodes[566] + 2)))
+#define CALL_parser___parser_nodes___ABraMethid___n_cbra(recv) ((parser___parser_nodes___ABraMethid___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[566] + 3)))
+#define CALL_parser___parser_nodes___ABraMethid___n_cbra__eq(recv) ((parser___parser_nodes___ABraMethid___n_cbra__eq_t)CALL((recv), (SFT_parser___parser_nodes[566] + 4)))
+#define ID_parser___parser_nodes___AStarshipMethid (SFT_parser___parser_nodes[567])
+#define COLOR_parser___parser_nodes___AStarshipMethid (SFT_parser___parser_nodes[568])
+#define ATTR_parser___parser_nodes___AStarshipMethid____n_starship(recv) ATTR(recv, (SFT_parser___parser_nodes[569] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AStarshipMethid (SFT_parser___parser_nodes[570] + 0)
+#define CALL_parser___parser_nodes___AStarshipMethid___n_starship(recv) ((parser___parser_nodes___AStarshipMethid___n_starship_t)CALL((recv), (SFT_parser___parser_nodes[570] + 1)))
+#define CALL_parser___parser_nodes___AStarshipMethid___n_starship__eq(recv) ((parser___parser_nodes___AStarshipMethid___n_starship__eq_t)CALL((recv), (SFT_parser___parser_nodes[570] + 2)))
+#define ID_parser___parser_nodes___AAssignMethid (SFT_parser___parser_nodes[571])
+#define COLOR_parser___parser_nodes___AAssignMethid (SFT_parser___parser_nodes[572])
+#define ATTR_parser___parser_nodes___AAssignMethid____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 0))
+#define ATTR_parser___parser_nodes___AAssignMethid____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[573] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AAssignMethid (SFT_parser___parser_nodes[574] + 0)
+#define CALL_parser___parser_nodes___AAssignMethid___n_id(recv) ((parser___parser_nodes___AAssignMethid___n_id_t)CALL((recv), (SFT_parser___parser_nodes[574] + 1)))
+#define CALL_parser___parser_nodes___AAssignMethid___n_id__eq(recv) ((parser___parser_nodes___AAssignMethid___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[574] + 2)))
+#define CALL_parser___parser_nodes___AAssignMethid___n_assign(recv) ((parser___parser_nodes___AAssignMethid___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[574] + 3)))
+#define CALL_parser___parser_nodes___AAssignMethid___n_assign__eq(recv) ((parser___parser_nodes___AAssignMethid___n_assign__eq_t)CALL((recv), (SFT_parser___parser_nodes[574] + 4)))
+#define ID_parser___parser_nodes___ABraassignMethid (SFT_parser___parser_nodes[575])
+#define COLOR_parser___parser_nodes___ABraassignMethid (SFT_parser___parser_nodes[576])
+#define ATTR_parser___parser_nodes___ABraassignMethid____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[577] + 0))
+#define ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[577] + 1))
+#define ATTR_parser___parser_nodes___ABraassignMethid____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[577] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___ABraassignMethid (SFT_parser___parser_nodes[578] + 0)
+#define CALL_parser___parser_nodes___ABraassignMethid___n_obra(recv) ((parser___parser_nodes___ABraassignMethid___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[578] + 1)))
+#define CALL_parser___parser_nodes___ABraassignMethid___n_obra__eq(recv) ((parser___parser_nodes___ABraassignMethid___n_obra__eq_t)CALL((recv), (SFT_parser___parser_nodes[578] + 2)))
+#define CALL_parser___parser_nodes___ABraassignMethid___n_cbra(recv) ((parser___parser_nodes___ABraassignMethid___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[578] + 3)))
+#define CALL_parser___parser_nodes___ABraassignMethid___n_cbra__eq(recv) ((parser___parser_nodes___ABraassignMethid___n_cbra__eq_t)CALL((recv), (SFT_parser___parser_nodes[578] + 4)))
+#define CALL_parser___parser_nodes___ABraassignMethid___n_assign(recv) ((parser___parser_nodes___ABraassignMethid___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[578] + 5)))
+#define CALL_parser___parser_nodes___ABraassignMethid___n_assign__eq(recv) ((parser___parser_nodes___ABraassignMethid___n_assign__eq_t)CALL((recv), (SFT_parser___parser_nodes[578] + 6)))
+#define ID_parser___parser_nodes___ASignature (SFT_parser___parser_nodes[579])
+#define COLOR_parser___parser_nodes___ASignature (SFT_parser___parser_nodes[580])
+#define ATTR_parser___parser_nodes___ASignature____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 0))
+#define ATTR_parser___parser_nodes___ASignature____n_params(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 1))
+#define ATTR_parser___parser_nodes___ASignature____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 2))
+#define ATTR_parser___parser_nodes___ASignature____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 3))
+#define ATTR_parser___parser_nodes___ASignature____n_closure_decls(recv) ATTR(recv, (SFT_parser___parser_nodes[581] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___ASignature (SFT_parser___parser_nodes[582] + 0)
+#define CALL_parser___parser_nodes___ASignature___n_opar(recv) ((parser___parser_nodes___ASignature___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[582] + 1)))
+#define CALL_parser___parser_nodes___ASignature___n_opar__eq(recv) ((parser___parser_nodes___ASignature___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[582] + 2)))
+#define CALL_parser___parser_nodes___ASignature___n_params(recv) ((parser___parser_nodes___ASignature___n_params_t)CALL((recv), (SFT_parser___parser_nodes[582] + 3)))
+#define CALL_parser___parser_nodes___ASignature___n_cpar(recv) ((parser___parser_nodes___ASignature___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[582] + 4)))
+#define CALL_parser___parser_nodes___ASignature___n_cpar__eq(recv) ((parser___parser_nodes___ASignature___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[582] + 5)))
+#define CALL_parser___parser_nodes___ASignature___n_type(recv) ((parser___parser_nodes___ASignature___n_type_t)CALL((recv), (SFT_parser___parser_nodes[582] + 6)))
+#define CALL_parser___parser_nodes___ASignature___n_type__eq(recv) ((parser___parser_nodes___ASignature___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[582] + 7)))
+#define CALL_parser___parser_nodes___ASignature___n_closure_decls(recv) ((parser___parser_nodes___ASignature___n_closure_decls_t)CALL((recv), (SFT_parser___parser_nodes[582] + 8)))
+#define ID_parser___parser_nodes___AParam (SFT_parser___parser_nodes[583])
+#define COLOR_parser___parser_nodes___AParam (SFT_parser___parser_nodes[584])
+#define ATTR_parser___parser_nodes___AParam____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[585] + 0))
+#define ATTR_parser___parser_nodes___AParam____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[585] + 1))
+#define ATTR_parser___parser_nodes___AParam____n_dotdotdot(recv) ATTR(recv, (SFT_parser___parser_nodes[585] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AParam (SFT_parser___parser_nodes[586] + 0)
+#define CALL_parser___parser_nodes___AParam___n_id(recv) ((parser___parser_nodes___AParam___n_id_t)CALL((recv), (SFT_parser___parser_nodes[586] + 1)))
+#define CALL_parser___parser_nodes___AParam___n_id__eq(recv) ((parser___parser_nodes___AParam___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[586] + 2)))
+#define CALL_parser___parser_nodes___AParam___n_type(recv) ((parser___parser_nodes___AParam___n_type_t)CALL((recv), (SFT_parser___parser_nodes[586] + 3)))
+#define CALL_parser___parser_nodes___AParam___n_type__eq(recv) ((parser___parser_nodes___AParam___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[586] + 4)))
+#define CALL_parser___parser_nodes___AParam___n_dotdotdot(recv) ((parser___parser_nodes___AParam___n_dotdotdot_t)CALL((recv), (SFT_parser___parser_nodes[586] + 5)))
+#define CALL_parser___parser_nodes___AParam___n_dotdotdot__eq(recv) ((parser___parser_nodes___AParam___n_dotdotdot__eq_t)CALL((recv), (SFT_parser___parser_nodes[586] + 6)))
+#define ID_parser___parser_nodes___AClosureDecl (SFT_parser___parser_nodes[587])
+#define COLOR_parser___parser_nodes___AClosureDecl (SFT_parser___parser_nodes[588])
+#define ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 0))
+#define ATTR_parser___parser_nodes___AClosureDecl____n_bang(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 1))
+#define ATTR_parser___parser_nodes___AClosureDecl____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 2))
+#define ATTR_parser___parser_nodes___AClosureDecl____n_signature(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 3))
+#define ATTR_parser___parser_nodes___AClosureDecl____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[589] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___AClosureDecl (SFT_parser___parser_nodes[590] + 0)
+#define CALL_parser___parser_nodes___AClosureDecl___n_kwbreak(recv) ((parser___parser_nodes___AClosureDecl___n_kwbreak_t)CALL((recv), (SFT_parser___parser_nodes[590] + 1)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_kwbreak__eq(recv) ((parser___parser_nodes___AClosureDecl___n_kwbreak__eq_t)CALL((recv), (SFT_parser___parser_nodes[590] + 2)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_bang(recv) ((parser___parser_nodes___AClosureDecl___n_bang_t)CALL((recv), (SFT_parser___parser_nodes[590] + 3)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_bang__eq(recv) ((parser___parser_nodes___AClosureDecl___n_bang__eq_t)CALL((recv), (SFT_parser___parser_nodes[590] + 4)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_id(recv) ((parser___parser_nodes___AClosureDecl___n_id_t)CALL((recv), (SFT_parser___parser_nodes[590] + 5)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_id__eq(recv) ((parser___parser_nodes___AClosureDecl___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[590] + 6)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_signature(recv) ((parser___parser_nodes___AClosureDecl___n_signature_t)CALL((recv), (SFT_parser___parser_nodes[590] + 7)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_signature__eq(recv) ((parser___parser_nodes___AClosureDecl___n_signature__eq_t)CALL((recv), (SFT_parser___parser_nodes[590] + 8)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_expr(recv) ((parser___parser_nodes___AClosureDecl___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[590] + 9)))
+#define CALL_parser___parser_nodes___AClosureDecl___n_expr__eq(recv) ((parser___parser_nodes___AClosureDecl___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[590] + 10)))
+#define ID_parser___parser_nodes___AType (SFT_parser___parser_nodes[591])
+#define COLOR_parser___parser_nodes___AType (SFT_parser___parser_nodes[592])
+#define ATTR_parser___parser_nodes___AType____n_kwnullable(recv) ATTR(recv, (SFT_parser___parser_nodes[593] + 0))
+#define ATTR_parser___parser_nodes___AType____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[593] + 1))
+#define ATTR_parser___parser_nodes___AType____n_types(recv) ATTR(recv, (SFT_parser___parser_nodes[593] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AType (SFT_parser___parser_nodes[594] + 0)
+#define CALL_parser___parser_nodes___AType___n_kwnullable(recv) ((parser___parser_nodes___AType___n_kwnullable_t)CALL((recv), (SFT_parser___parser_nodes[594] + 1)))
+#define CALL_parser___parser_nodes___AType___n_kwnullable__eq(recv) ((parser___parser_nodes___AType___n_kwnullable__eq_t)CALL((recv), (SFT_parser___parser_nodes[594] + 2)))
+#define CALL_parser___parser_nodes___AType___n_id(recv) ((parser___parser_nodes___AType___n_id_t)CALL((recv), (SFT_parser___parser_nodes[594] + 3)))
+#define CALL_parser___parser_nodes___AType___n_id__eq(recv) ((parser___parser_nodes___AType___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[594] + 4)))
+#define CALL_parser___parser_nodes___AType___n_types(recv) ((parser___parser_nodes___AType___n_types_t)CALL((recv), (SFT_parser___parser_nodes[594] + 5)))
+#define ID_parser___parser_nodes___ALabel (SFT_parser___parser_nodes[595])
+#define COLOR_parser___parser_nodes___ALabel (SFT_parser___parser_nodes[596])
+#define ATTR_parser___parser_nodes___ALabel____n_kwlabel(recv) ATTR(recv, (SFT_parser___parser_nodes[597] + 0))
+#define ATTR_parser___parser_nodes___ALabel____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[597] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ALabel (SFT_parser___parser_nodes[598] + 0)
+#define CALL_parser___parser_nodes___ALabel___n_kwlabel(recv) ((parser___parser_nodes___ALabel___n_kwlabel_t)CALL((recv), (SFT_parser___parser_nodes[598] + 1)))
+#define CALL_parser___parser_nodes___ALabel___n_kwlabel__eq(recv) ((parser___parser_nodes___ALabel___n_kwlabel__eq_t)CALL((recv), (SFT_parser___parser_nodes[598] + 2)))
+#define CALL_parser___parser_nodes___ALabel___n_id(recv) ((parser___parser_nodes___ALabel___n_id_t)CALL((recv), (SFT_parser___parser_nodes[598] + 3)))
+#define CALL_parser___parser_nodes___ALabel___n_id__eq(recv) ((parser___parser_nodes___ALabel___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[598] + 4)))
+#define ID_parser___parser_nodes___AExpr (SFT_parser___parser_nodes[599])
+#define COLOR_parser___parser_nodes___AExpr (SFT_parser___parser_nodes[600])
+#define INIT_TABLE_POS_parser___parser_nodes___AExpr (SFT_parser___parser_nodes[601] + 0)
+#define ID_parser___parser_nodes___ABlockExpr (SFT_parser___parser_nodes[602])
+#define COLOR_parser___parser_nodes___ABlockExpr (SFT_parser___parser_nodes[603])
+#define ATTR_parser___parser_nodes___ABlockExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[604] + 0))
+#define ATTR_parser___parser_nodes___ABlockExpr____n_kwend(recv) ATTR(recv, (SFT_parser___parser_nodes[604] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ABlockExpr (SFT_parser___parser_nodes[605] + 0)
+#define CALL_parser___parser_nodes___ABlockExpr___n_expr(recv) ((parser___parser_nodes___ABlockExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[605] + 1)))
+#define CALL_parser___parser_nodes___ABlockExpr___n_kwend(recv) ((parser___parser_nodes___ABlockExpr___n_kwend_t)CALL((recv), (SFT_parser___parser_nodes[605] + 2)))
+#define CALL_parser___parser_nodes___ABlockExpr___n_kwend__eq(recv) ((parser___parser_nodes___ABlockExpr___n_kwend__eq_t)CALL((recv), (SFT_parser___parser_nodes[605] + 3)))
+#define ID_parser___parser_nodes___AVardeclExpr (SFT_parser___parser_nodes[606])
+#define COLOR_parser___parser_nodes___AVardeclExpr (SFT_parser___parser_nodes[607])
+#define ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(recv) ATTR(recv, (SFT_parser___parser_nodes[608] + 0))
+#define ATTR_parser___parser_nodes___AVardeclExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[608] + 1))
+#define ATTR_parser___parser_nodes___AVardeclExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[608] + 2))
+#define ATTR_parser___parser_nodes___AVardeclExpr____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[608] + 3))
+#define ATTR_parser___parser_nodes___AVardeclExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[608] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr (SFT_parser___parser_nodes[609] + 0)
+#define CALL_parser___parser_nodes___AVardeclExpr___n_kwvar(recv) ((parser___parser_nodes___AVardeclExpr___n_kwvar_t)CALL((recv), (SFT_parser___parser_nodes[609] + 1)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_kwvar__eq(recv) ((parser___parser_nodes___AVardeclExpr___n_kwvar__eq_t)CALL((recv), (SFT_parser___parser_nodes[609] + 2)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_id(recv) ((parser___parser_nodes___AVardeclExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[609] + 3)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_id__eq(recv) ((parser___parser_nodes___AVardeclExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[609] + 4)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_type(recv) ((parser___parser_nodes___AVardeclExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[609] + 5)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_type__eq(recv) ((parser___parser_nodes___AVardeclExpr___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[609] + 6)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_assign(recv) ((parser___parser_nodes___AVardeclExpr___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[609] + 7)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_assign__eq(recv) ((parser___parser_nodes___AVardeclExpr___n_assign__eq_t)CALL((recv), (SFT_parser___parser_nodes[609] + 8)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_expr(recv) ((parser___parser_nodes___AVardeclExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[609] + 9)))
+#define CALL_parser___parser_nodes___AVardeclExpr___n_expr__eq(recv) ((parser___parser_nodes___AVardeclExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[609] + 10)))
+#define ID_parser___parser_nodes___AReturnExpr (SFT_parser___parser_nodes[610])
+#define COLOR_parser___parser_nodes___AReturnExpr (SFT_parser___parser_nodes[611])
+#define ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(recv) ATTR(recv, (SFT_parser___parser_nodes[612] + 0))
+#define ATTR_parser___parser_nodes___AReturnExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[612] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AReturnExpr (SFT_parser___parser_nodes[613] + 0)
+#define CALL_parser___parser_nodes___AReturnExpr___n_kwreturn(recv) ((parser___parser_nodes___AReturnExpr___n_kwreturn_t)CALL((recv), (SFT_parser___parser_nodes[613] + 1)))
+#define CALL_parser___parser_nodes___AReturnExpr___n_kwreturn__eq(recv) ((parser___parser_nodes___AReturnExpr___n_kwreturn__eq_t)CALL((recv), (SFT_parser___parser_nodes[613] + 2)))
+#define CALL_parser___parser_nodes___AReturnExpr___n_expr(recv) ((parser___parser_nodes___AReturnExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[613] + 3)))
+#define CALL_parser___parser_nodes___AReturnExpr___n_expr__eq(recv) ((parser___parser_nodes___AReturnExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[613] + 4)))
+#define ID_parser___parser_nodes___ALabelable (SFT_parser___parser_nodes[614])
+#define COLOR_parser___parser_nodes___ALabelable (SFT_parser___parser_nodes[615])
+#define ATTR_parser___parser_nodes___ALabelable____n_label(recv) ATTR(recv, (SFT_parser___parser_nodes[616] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ALabelable (SFT_parser___parser_nodes[617] + 0)
+#define CALL_parser___parser_nodes___ALabelable___n_label(recv) ((parser___parser_nodes___ALabelable___n_label_t)CALL((recv), (SFT_parser___parser_nodes[617] + 1)))
+#define CALL_parser___parser_nodes___ALabelable___n_label__eq(recv) ((parser___parser_nodes___ALabelable___n_label__eq_t)CALL((recv), (SFT_parser___parser_nodes[617] + 2)))
+#define ID_parser___parser_nodes___ABreakExpr (SFT_parser___parser_nodes[618])
+#define COLOR_parser___parser_nodes___ABreakExpr (SFT_parser___parser_nodes[619])
+#define ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(recv) ATTR(recv, (SFT_parser___parser_nodes[620] + 0))
+#define ATTR_parser___parser_nodes___ABreakExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[620] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ABreakExpr (SFT_parser___parser_nodes[621] + 0)
+#define CALL_parser___parser_nodes___ABreakExpr___n_kwbreak(recv) ((parser___parser_nodes___ABreakExpr___n_kwbreak_t)CALL((recv), (SFT_parser___parser_nodes[621] + 1)))
+#define CALL_parser___parser_nodes___ABreakExpr___n_kwbreak__eq(recv) ((parser___parser_nodes___ABreakExpr___n_kwbreak__eq_t)CALL((recv), (SFT_parser___parser_nodes[621] + 2)))
+#define CALL_parser___parser_nodes___ABreakExpr___n_expr(recv) ((parser___parser_nodes___ABreakExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[621] + 3)))
+#define CALL_parser___parser_nodes___ABreakExpr___n_expr__eq(recv) ((parser___parser_nodes___ABreakExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[621] + 4)))
+#define ID_parser___parser_nodes___AAbortExpr (SFT_parser___parser_nodes[622])
+#define COLOR_parser___parser_nodes___AAbortExpr (SFT_parser___parser_nodes[623])
+#define ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(recv) ATTR(recv, (SFT_parser___parser_nodes[624] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AAbortExpr (SFT_parser___parser_nodes[625] + 0)
+#define CALL_parser___parser_nodes___AAbortExpr___n_kwabort(recv) ((parser___parser_nodes___AAbortExpr___n_kwabort_t)CALL((recv), (SFT_parser___parser_nodes[625] + 1)))
+#define CALL_parser___parser_nodes___AAbortExpr___n_kwabort__eq(recv) ((parser___parser_nodes___AAbortExpr___n_kwabort__eq_t)CALL((recv), (SFT_parser___parser_nodes[625] + 2)))
+#define ID_parser___parser_nodes___AContinueExpr (SFT_parser___parser_nodes[626])
+#define COLOR_parser___parser_nodes___AContinueExpr (SFT_parser___parser_nodes[627])
+#define ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(recv) ATTR(recv, (SFT_parser___parser_nodes[628] + 0))
+#define ATTR_parser___parser_nodes___AContinueExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[628] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AContinueExpr (SFT_parser___parser_nodes[629] + 0)
+#define CALL_parser___parser_nodes___AContinueExpr___n_kwcontinue(recv) ((parser___parser_nodes___AContinueExpr___n_kwcontinue_t)CALL((recv), (SFT_parser___parser_nodes[629] + 1)))
+#define CALL_parser___parser_nodes___AContinueExpr___n_kwcontinue__eq(recv) ((parser___parser_nodes___AContinueExpr___n_kwcontinue__eq_t)CALL((recv), (SFT_parser___parser_nodes[629] + 2)))
+#define CALL_parser___parser_nodes___AContinueExpr___n_expr(recv) ((parser___parser_nodes___AContinueExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[629] + 3)))
+#define CALL_parser___parser_nodes___AContinueExpr___n_expr__eq(recv) ((parser___parser_nodes___AContinueExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[629] + 4)))
+#define ID_parser___parser_nodes___ADoExpr (SFT_parser___parser_nodes[630])
+#define COLOR_parser___parser_nodes___ADoExpr (SFT_parser___parser_nodes[631])
+#define ATTR_parser___parser_nodes___ADoExpr____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 0))
+#define ATTR_parser___parser_nodes___ADoExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[632] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ADoExpr (SFT_parser___parser_nodes[633] + 0)
+#define CALL_parser___parser_nodes___ADoExpr___n_kwdo(recv) ((parser___parser_nodes___ADoExpr___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[633] + 1)))
+#define CALL_parser___parser_nodes___ADoExpr___n_kwdo__eq(recv) ((parser___parser_nodes___ADoExpr___n_kwdo__eq_t)CALL((recv), (SFT_parser___parser_nodes[633] + 2)))
+#define CALL_parser___parser_nodes___ADoExpr___n_block(recv) ((parser___parser_nodes___ADoExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[633] + 3)))
+#define CALL_parser___parser_nodes___ADoExpr___n_block__eq(recv) ((parser___parser_nodes___ADoExpr___n_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[633] + 4)))
+#define ID_parser___parser_nodes___AIfExpr (SFT_parser___parser_nodes[634])
+#define COLOR_parser___parser_nodes___AIfExpr (SFT_parser___parser_nodes[635])
+#define ATTR_parser___parser_nodes___AIfExpr____n_kwif(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 0))
+#define ATTR_parser___parser_nodes___AIfExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 1))
+#define ATTR_parser___parser_nodes___AIfExpr____n_then(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 2))
+#define ATTR_parser___parser_nodes___AIfExpr____n_else(recv) ATTR(recv, (SFT_parser___parser_nodes[636] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AIfExpr (SFT_parser___parser_nodes[637] + 0)
+#define CALL_parser___parser_nodes___AIfExpr___n_kwif(recv) ((parser___parser_nodes___AIfExpr___n_kwif_t)CALL((recv), (SFT_parser___parser_nodes[637] + 1)))
+#define CALL_parser___parser_nodes___AIfExpr___n_kwif__eq(recv) ((parser___parser_nodes___AIfExpr___n_kwif__eq_t)CALL((recv), (SFT_parser___parser_nodes[637] + 2)))
+#define CALL_parser___parser_nodes___AIfExpr___n_expr(recv) ((parser___parser_nodes___AIfExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[637] + 3)))
+#define CALL_parser___parser_nodes___AIfExpr___n_expr__eq(recv) ((parser___parser_nodes___AIfExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[637] + 4)))
+#define CALL_parser___parser_nodes___AIfExpr___n_then(recv) ((parser___parser_nodes___AIfExpr___n_then_t)CALL((recv), (SFT_parser___parser_nodes[637] + 5)))
+#define CALL_parser___parser_nodes___AIfExpr___n_then__eq(recv) ((parser___parser_nodes___AIfExpr___n_then__eq_t)CALL((recv), (SFT_parser___parser_nodes[637] + 6)))
+#define CALL_parser___parser_nodes___AIfExpr___n_else(recv) ((parser___parser_nodes___AIfExpr___n_else_t)CALL((recv), (SFT_parser___parser_nodes[637] + 7)))
+#define CALL_parser___parser_nodes___AIfExpr___n_else__eq(recv) ((parser___parser_nodes___AIfExpr___n_else__eq_t)CALL((recv), (SFT_parser___parser_nodes[637] + 8)))
+#define ID_parser___parser_nodes___AIfexprExpr (SFT_parser___parser_nodes[638])
+#define COLOR_parser___parser_nodes___AIfexprExpr (SFT_parser___parser_nodes[639])
+#define ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 0))
+#define ATTR_parser___parser_nodes___AIfexprExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 1))
+#define ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 2))
+#define ATTR_parser___parser_nodes___AIfexprExpr____n_then(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 3))
+#define ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 4))
+#define ATTR_parser___parser_nodes___AIfexprExpr____n_else(recv) ATTR(recv, (SFT_parser___parser_nodes[640] + 5))
+#define INIT_TABLE_POS_parser___parser_nodes___AIfexprExpr (SFT_parser___parser_nodes[641] + 0)
+#define CALL_parser___parser_nodes___AIfexprExpr___n_kwif(recv) ((parser___parser_nodes___AIfexprExpr___n_kwif_t)CALL((recv), (SFT_parser___parser_nodes[641] + 1)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_kwif__eq(recv) ((parser___parser_nodes___AIfexprExpr___n_kwif__eq_t)CALL((recv), (SFT_parser___parser_nodes[641] + 2)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_expr(recv) ((parser___parser_nodes___AIfexprExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[641] + 3)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_expr__eq(recv) ((parser___parser_nodes___AIfexprExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[641] + 4)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_kwthen(recv) ((parser___parser_nodes___AIfexprExpr___n_kwthen_t)CALL((recv), (SFT_parser___parser_nodes[641] + 5)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_kwthen__eq(recv) ((parser___parser_nodes___AIfexprExpr___n_kwthen__eq_t)CALL((recv), (SFT_parser___parser_nodes[641] + 6)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_then(recv) ((parser___parser_nodes___AIfexprExpr___n_then_t)CALL((recv), (SFT_parser___parser_nodes[641] + 7)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_then__eq(recv) ((parser___parser_nodes___AIfexprExpr___n_then__eq_t)CALL((recv), (SFT_parser___parser_nodes[641] + 8)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_kwelse(recv) ((parser___parser_nodes___AIfexprExpr___n_kwelse_t)CALL((recv), (SFT_parser___parser_nodes[641] + 9)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_kwelse__eq(recv) ((parser___parser_nodes___AIfexprExpr___n_kwelse__eq_t)CALL((recv), (SFT_parser___parser_nodes[641] + 10)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_else(recv) ((parser___parser_nodes___AIfexprExpr___n_else_t)CALL((recv), (SFT_parser___parser_nodes[641] + 11)))
+#define CALL_parser___parser_nodes___AIfexprExpr___n_else__eq(recv) ((parser___parser_nodes___AIfexprExpr___n_else__eq_t)CALL((recv), (SFT_parser___parser_nodes[641] + 12)))
+#define ID_parser___parser_nodes___AWhileExpr (SFT_parser___parser_nodes[642])
+#define COLOR_parser___parser_nodes___AWhileExpr (SFT_parser___parser_nodes[643])
+#define ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 0))
+#define ATTR_parser___parser_nodes___AWhileExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 1))
+#define ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 2))
+#define ATTR_parser___parser_nodes___AWhileExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[644] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AWhileExpr (SFT_parser___parser_nodes[645] + 0)
+#define CALL_parser___parser_nodes___AWhileExpr___n_kwwhile(recv) ((parser___parser_nodes___AWhileExpr___n_kwwhile_t)CALL((recv), (SFT_parser___parser_nodes[645] + 1)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_kwwhile__eq(recv) ((parser___parser_nodes___AWhileExpr___n_kwwhile__eq_t)CALL((recv), (SFT_parser___parser_nodes[645] + 2)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_expr(recv) ((parser___parser_nodes___AWhileExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[645] + 3)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_expr__eq(recv) ((parser___parser_nodes___AWhileExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[645] + 4)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_kwdo(recv) ((parser___parser_nodes___AWhileExpr___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[645] + 5)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_kwdo__eq(recv) ((parser___parser_nodes___AWhileExpr___n_kwdo__eq_t)CALL((recv), (SFT_parser___parser_nodes[645] + 6)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_block(recv) ((parser___parser_nodes___AWhileExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[645] + 7)))
+#define CALL_parser___parser_nodes___AWhileExpr___n_block__eq(recv) ((parser___parser_nodes___AWhileExpr___n_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[645] + 8)))
+#define ID_parser___parser_nodes___ALoopExpr (SFT_parser___parser_nodes[646])
+#define COLOR_parser___parser_nodes___ALoopExpr (SFT_parser___parser_nodes[647])
+#define ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(recv) ATTR(recv, (SFT_parser___parser_nodes[648] + 0))
+#define ATTR_parser___parser_nodes___ALoopExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[648] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ALoopExpr (SFT_parser___parser_nodes[649] + 0)
+#define CALL_parser___parser_nodes___ALoopExpr___n_kwloop(recv) ((parser___parser_nodes___ALoopExpr___n_kwloop_t)CALL((recv), (SFT_parser___parser_nodes[649] + 1)))
+#define CALL_parser___parser_nodes___ALoopExpr___n_kwloop__eq(recv) ((parser___parser_nodes___ALoopExpr___n_kwloop__eq_t)CALL((recv), (SFT_parser___parser_nodes[649] + 2)))
+#define CALL_parser___parser_nodes___ALoopExpr___n_block(recv) ((parser___parser_nodes___ALoopExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[649] + 3)))
+#define CALL_parser___parser_nodes___ALoopExpr___n_block__eq(recv) ((parser___parser_nodes___ALoopExpr___n_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[649] + 4)))
+#define ID_parser___parser_nodes___AForExpr (SFT_parser___parser_nodes[650])
+#define COLOR_parser___parser_nodes___AForExpr (SFT_parser___parser_nodes[651])
+#define ATTR_parser___parser_nodes___AForExpr____n_kwfor(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 0))
+#define ATTR_parser___parser_nodes___AForExpr____n_ids(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 1))
+#define ATTR_parser___parser_nodes___AForExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 2))
+#define ATTR_parser___parser_nodes___AForExpr____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 3))
+#define ATTR_parser___parser_nodes___AForExpr____n_block(recv) ATTR(recv, (SFT_parser___parser_nodes[652] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___AForExpr (SFT_parser___parser_nodes[653] + 0)
+#define CALL_parser___parser_nodes___AForExpr___n_kwfor(recv) ((parser___parser_nodes___AForExpr___n_kwfor_t)CALL((recv), (SFT_parser___parser_nodes[653] + 1)))
+#define CALL_parser___parser_nodes___AForExpr___n_kwfor__eq(recv) ((parser___parser_nodes___AForExpr___n_kwfor__eq_t)CALL((recv), (SFT_parser___parser_nodes[653] + 2)))
+#define CALL_parser___parser_nodes___AForExpr___n_ids(recv) ((parser___parser_nodes___AForExpr___n_ids_t)CALL((recv), (SFT_parser___parser_nodes[653] + 3)))
+#define CALL_parser___parser_nodes___AForExpr___n_expr(recv) ((parser___parser_nodes___AForExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[653] + 4)))
+#define CALL_parser___parser_nodes___AForExpr___n_expr__eq(recv) ((parser___parser_nodes___AForExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[653] + 5)))
+#define CALL_parser___parser_nodes___AForExpr___n_kwdo(recv) ((parser___parser_nodes___AForExpr___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[653] + 6)))
+#define CALL_parser___parser_nodes___AForExpr___n_kwdo__eq(recv) ((parser___parser_nodes___AForExpr___n_kwdo__eq_t)CALL((recv), (SFT_parser___parser_nodes[653] + 7)))
+#define CALL_parser___parser_nodes___AForExpr___n_block(recv) ((parser___parser_nodes___AForExpr___n_block_t)CALL((recv), (SFT_parser___parser_nodes[653] + 8)))
+#define CALL_parser___parser_nodes___AForExpr___n_block__eq(recv) ((parser___parser_nodes___AForExpr___n_block__eq_t)CALL((recv), (SFT_parser___parser_nodes[653] + 9)))
+#define ID_parser___parser_nodes___AAssertExpr (SFT_parser___parser_nodes[654])
+#define COLOR_parser___parser_nodes___AAssertExpr (SFT_parser___parser_nodes[655])
+#define ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(recv) ATTR(recv, (SFT_parser___parser_nodes[656] + 0))
+#define ATTR_parser___parser_nodes___AAssertExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[656] + 1))
+#define ATTR_parser___parser_nodes___AAssertExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[656] + 2))
+#define ATTR_parser___parser_nodes___AAssertExpr____n_else(recv) ATTR(recv, (SFT_parser___parser_nodes[656] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AAssertExpr (SFT_parser___parser_nodes[657] + 0)
+#define CALL_parser___parser_nodes___AAssertExpr___n_kwassert(recv) ((parser___parser_nodes___AAssertExpr___n_kwassert_t)CALL((recv), (SFT_parser___parser_nodes[657] + 1)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_kwassert__eq(recv) ((parser___parser_nodes___AAssertExpr___n_kwassert__eq_t)CALL((recv), (SFT_parser___parser_nodes[657] + 2)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_id(recv) ((parser___parser_nodes___AAssertExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[657] + 3)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_id__eq(recv) ((parser___parser_nodes___AAssertExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[657] + 4)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_expr(recv) ((parser___parser_nodes___AAssertExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[657] + 5)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_expr__eq(recv) ((parser___parser_nodes___AAssertExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[657] + 6)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_else(recv) ((parser___parser_nodes___AAssertExpr___n_else_t)CALL((recv), (SFT_parser___parser_nodes[657] + 7)))
+#define CALL_parser___parser_nodes___AAssertExpr___n_else__eq(recv) ((parser___parser_nodes___AAssertExpr___n_else__eq_t)CALL((recv), (SFT_parser___parser_nodes[657] + 8)))
+#define ID_parser___parser_nodes___AAssignFormExpr (SFT_parser___parser_nodes[658])
+#define COLOR_parser___parser_nodes___AAssignFormExpr (SFT_parser___parser_nodes[659])
+#define ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(recv) ATTR(recv, (SFT_parser___parser_nodes[660] + 0))
+#define ATTR_parser___parser_nodes___AAssignFormExpr____n_value(recv) ATTR(recv, (SFT_parser___parser_nodes[660] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AAssignFormExpr (SFT_parser___parser_nodes[661] + 0)
+#define CALL_parser___parser_nodes___AAssignFormExpr___n_assign(recv) ((parser___parser_nodes___AAssignFormExpr___n_assign_t)CALL((recv), (SFT_parser___parser_nodes[661] + 1)))
+#define CALL_parser___parser_nodes___AAssignFormExpr___n_assign__eq(recv) ((parser___parser_nodes___AAssignFormExpr___n_assign__eq_t)CALL((recv), (SFT_parser___parser_nodes[661] + 2)))
+#define CALL_parser___parser_nodes___AAssignFormExpr___n_value(recv) ((parser___parser_nodes___AAssignFormExpr___n_value_t)CALL((recv), (SFT_parser___parser_nodes[661] + 3)))
+#define CALL_parser___parser_nodes___AAssignFormExpr___n_value__eq(recv) ((parser___parser_nodes___AAssignFormExpr___n_value__eq_t)CALL((recv), (SFT_parser___parser_nodes[661] + 4)))
+#define ID_parser___parser_nodes___AReassignFormExpr (SFT_parser___parser_nodes[662])
+#define COLOR_parser___parser_nodes___AReassignFormExpr (SFT_parser___parser_nodes[663])
+#define ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(recv) ATTR(recv, (SFT_parser___parser_nodes[664] + 0))
+#define ATTR_parser___parser_nodes___AReassignFormExpr____n_value(recv) ATTR(recv, (SFT_parser___parser_nodes[664] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AReassignFormExpr (SFT_parser___parser_nodes[665] + 0)
+#define CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(recv) ((parser___parser_nodes___AReassignFormExpr___n_assign_op_t)CALL((recv), (SFT_parser___parser_nodes[665] + 1)))
+#define CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op__eq(recv) ((parser___parser_nodes___AReassignFormExpr___n_assign_op__eq_t)CALL((recv), (SFT_parser___parser_nodes[665] + 2)))
+#define CALL_parser___parser_nodes___AReassignFormExpr___n_value(recv) ((parser___parser_nodes___AReassignFormExpr___n_value_t)CALL((recv), (SFT_parser___parser_nodes[665] + 3)))
+#define CALL_parser___parser_nodes___AReassignFormExpr___n_value__eq(recv) ((parser___parser_nodes___AReassignFormExpr___n_value__eq_t)CALL((recv), (SFT_parser___parser_nodes[665] + 4)))
+#define ID_parser___parser_nodes___AOnceExpr (SFT_parser___parser_nodes[666])
+#define COLOR_parser___parser_nodes___AOnceExpr (SFT_parser___parser_nodes[667])
+#define ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(recv) ATTR(recv, (SFT_parser___parser_nodes[668] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AOnceExpr (SFT_parser___parser_nodes[669] + 0)
+#define CALL_parser___parser_nodes___AOnceExpr___n_kwonce(recv) ((parser___parser_nodes___AOnceExpr___n_kwonce_t)CALL((recv), (SFT_parser___parser_nodes[669] + 1)))
+#define CALL_parser___parser_nodes___AOnceExpr___n_kwonce__eq(recv) ((parser___parser_nodes___AOnceExpr___n_kwonce__eq_t)CALL((recv), (SFT_parser___parser_nodes[669] + 2)))
+#define ID_parser___parser_nodes___ASendExpr (SFT_parser___parser_nodes[670])
+#define COLOR_parser___parser_nodes___ASendExpr (SFT_parser___parser_nodes[671])
+#define ATTR_parser___parser_nodes___ASendExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[672] + 0))
+#define ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(recv) ATTR(recv, (SFT_parser___parser_nodes[672] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ASendExpr (SFT_parser___parser_nodes[673] + 0)
+#define CALL_parser___parser_nodes___ASendExpr___n_expr(recv) ((parser___parser_nodes___ASendExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[673] + 1)))
+#define CALL_parser___parser_nodes___ASendExpr___n_expr__eq(recv) ((parser___parser_nodes___ASendExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[673] + 2)))
+#define CALL_parser___parser_nodes___ASendExpr___n_closure_defs(recv) ((parser___parser_nodes___ASendExpr___n_closure_defs_t)CALL((recv), (SFT_parser___parser_nodes[673] + 3)))
+#define ID_parser___parser_nodes___ABinopExpr (SFT_parser___parser_nodes[674])
+#define COLOR_parser___parser_nodes___ABinopExpr (SFT_parser___parser_nodes[675])
+#define ATTR_parser___parser_nodes___ABinopExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[676] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ABinopExpr (SFT_parser___parser_nodes[677] + 0)
+#define CALL_parser___parser_nodes___ABinopExpr___n_expr2(recv) ((parser___parser_nodes___ABinopExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[677] + 1)))
+#define CALL_parser___parser_nodes___ABinopExpr___n_expr2__eq(recv) ((parser___parser_nodes___ABinopExpr___n_expr2__eq_t)CALL((recv), (SFT_parser___parser_nodes[677] + 2)))
+#define ID_parser___parser_nodes___ABoolExpr (SFT_parser___parser_nodes[678])
+#define COLOR_parser___parser_nodes___ABoolExpr (SFT_parser___parser_nodes[679])
+#define INIT_TABLE_POS_parser___parser_nodes___ABoolExpr (SFT_parser___parser_nodes[680] + 0)
+#define ID_parser___parser_nodes___AOrExpr (SFT_parser___parser_nodes[681])
+#define COLOR_parser___parser_nodes___AOrExpr (SFT_parser___parser_nodes[682])
+#define ATTR_parser___parser_nodes___AOrExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[683] + 0))
+#define ATTR_parser___parser_nodes___AOrExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[683] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AOrExpr (SFT_parser___parser_nodes[684] + 0)
+#define CALL_parser___parser_nodes___AOrExpr___n_expr(recv) ((parser___parser_nodes___AOrExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[684] + 1)))
+#define CALL_parser___parser_nodes___AOrExpr___n_expr__eq(recv) ((parser___parser_nodes___AOrExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[684] + 2)))
+#define CALL_parser___parser_nodes___AOrExpr___n_expr2(recv) ((parser___parser_nodes___AOrExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[684] + 3)))
+#define CALL_parser___parser_nodes___AOrExpr___n_expr2__eq(recv) ((parser___parser_nodes___AOrExpr___n_expr2__eq_t)CALL((recv), (SFT_parser___parser_nodes[684] + 4)))
+#define ID_parser___parser_nodes___AAndExpr (SFT_parser___parser_nodes[685])
+#define COLOR_parser___parser_nodes___AAndExpr (SFT_parser___parser_nodes[686])
+#define ATTR_parser___parser_nodes___AAndExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[687] + 0))
+#define ATTR_parser___parser_nodes___AAndExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[687] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AAndExpr (SFT_parser___parser_nodes[688] + 0)
+#define CALL_parser___parser_nodes___AAndExpr___n_expr(recv) ((parser___parser_nodes___AAndExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[688] + 1)))
+#define CALL_parser___parser_nodes___AAndExpr___n_expr__eq(recv) ((parser___parser_nodes___AAndExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[688] + 2)))
+#define CALL_parser___parser_nodes___AAndExpr___n_expr2(recv) ((parser___parser_nodes___AAndExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[688] + 3)))
+#define CALL_parser___parser_nodes___AAndExpr___n_expr2__eq(recv) ((parser___parser_nodes___AAndExpr___n_expr2__eq_t)CALL((recv), (SFT_parser___parser_nodes[688] + 4)))
+#define ID_parser___parser_nodes___AOrElseExpr (SFT_parser___parser_nodes[689])
+#define COLOR_parser___parser_nodes___AOrElseExpr (SFT_parser___parser_nodes[690])
+#define ATTR_parser___parser_nodes___AOrElseExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[691] + 0))
+#define ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[691] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AOrElseExpr (SFT_parser___parser_nodes[692] + 0)
+#define CALL_parser___parser_nodes___AOrElseExpr___n_expr(recv) ((parser___parser_nodes___AOrElseExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[692] + 1)))
+#define CALL_parser___parser_nodes___AOrElseExpr___n_expr__eq(recv) ((parser___parser_nodes___AOrElseExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[692] + 2)))
+#define CALL_parser___parser_nodes___AOrElseExpr___n_expr2(recv) ((parser___parser_nodes___AOrElseExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[692] + 3)))
+#define CALL_parser___parser_nodes___AOrElseExpr___n_expr2__eq(recv) ((parser___parser_nodes___AOrElseExpr___n_expr2__eq_t)CALL((recv), (SFT_parser___parser_nodes[692] + 4)))
+#define ID_parser___parser_nodes___ANotExpr (SFT_parser___parser_nodes[693])
+#define COLOR_parser___parser_nodes___ANotExpr (SFT_parser___parser_nodes[694])
+#define ATTR_parser___parser_nodes___ANotExpr____n_kwnot(recv) ATTR(recv, (SFT_parser___parser_nodes[695] + 0))
+#define ATTR_parser___parser_nodes___ANotExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[695] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ANotExpr (SFT_parser___parser_nodes[696] + 0)
+#define CALL_parser___parser_nodes___ANotExpr___n_kwnot(recv) ((parser___parser_nodes___ANotExpr___n_kwnot_t)CALL((recv), (SFT_parser___parser_nodes[696] + 1)))
+#define CALL_parser___parser_nodes___ANotExpr___n_kwnot__eq(recv) ((parser___parser_nodes___ANotExpr___n_kwnot__eq_t)CALL((recv), (SFT_parser___parser_nodes[696] + 2)))
+#define CALL_parser___parser_nodes___ANotExpr___n_expr(recv) ((parser___parser_nodes___ANotExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[696] + 3)))
+#define CALL_parser___parser_nodes___ANotExpr___n_expr__eq(recv) ((parser___parser_nodes___ANotExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[696] + 4)))
+#define ID_parser___parser_nodes___AEqExpr (SFT_parser___parser_nodes[697])
+#define COLOR_parser___parser_nodes___AEqExpr (SFT_parser___parser_nodes[698])
+#define INIT_TABLE_POS_parser___parser_nodes___AEqExpr (SFT_parser___parser_nodes[699] + 0)
+#define ID_parser___parser_nodes___AEeExpr (SFT_parser___parser_nodes[700])
+#define COLOR_parser___parser_nodes___AEeExpr (SFT_parser___parser_nodes[701])
+#define ATTR_parser___parser_nodes___AEeExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[702] + 0))
+#define ATTR_parser___parser_nodes___AEeExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[702] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AEeExpr (SFT_parser___parser_nodes[703] + 0)
+#define CALL_parser___parser_nodes___AEeExpr___n_expr(recv) ((parser___parser_nodes___AEeExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[703] + 1)))
+#define CALL_parser___parser_nodes___AEeExpr___n_expr__eq(recv) ((parser___parser_nodes___AEeExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[703] + 2)))
+#define CALL_parser___parser_nodes___AEeExpr___n_expr2(recv) ((parser___parser_nodes___AEeExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[703] + 3)))
+#define CALL_parser___parser_nodes___AEeExpr___n_expr2__eq(recv) ((parser___parser_nodes___AEeExpr___n_expr2__eq_t)CALL((recv), (SFT_parser___parser_nodes[703] + 4)))
+#define ID_parser___parser_nodes___ANeExpr (SFT_parser___parser_nodes[704])
+#define COLOR_parser___parser_nodes___ANeExpr (SFT_parser___parser_nodes[705])
+#define INIT_TABLE_POS_parser___parser_nodes___ANeExpr (SFT_parser___parser_nodes[706] + 0)
+#define ID_parser___parser_nodes___ALtExpr (SFT_parser___parser_nodes[707])
+#define COLOR_parser___parser_nodes___ALtExpr (SFT_parser___parser_nodes[708])
+#define INIT_TABLE_POS_parser___parser_nodes___ALtExpr (SFT_parser___parser_nodes[709] + 0)
+#define ID_parser___parser_nodes___ALeExpr (SFT_parser___parser_nodes[710])
+#define COLOR_parser___parser_nodes___ALeExpr (SFT_parser___parser_nodes[711])
+#define INIT_TABLE_POS_parser___parser_nodes___ALeExpr (SFT_parser___parser_nodes[712] + 0)
+#define ID_parser___parser_nodes___ALlExpr (SFT_parser___parser_nodes[713])
+#define COLOR_parser___parser_nodes___ALlExpr (SFT_parser___parser_nodes[714])
+#define INIT_TABLE_POS_parser___parser_nodes___ALlExpr (SFT_parser___parser_nodes[715] + 0)
+#define ID_parser___parser_nodes___AGtExpr (SFT_parser___parser_nodes[716])
+#define COLOR_parser___parser_nodes___AGtExpr (SFT_parser___parser_nodes[717])
+#define INIT_TABLE_POS_parser___parser_nodes___AGtExpr (SFT_parser___parser_nodes[718] + 0)
+#define ID_parser___parser_nodes___AGeExpr (SFT_parser___parser_nodes[719])
+#define COLOR_parser___parser_nodes___AGeExpr (SFT_parser___parser_nodes[720])
+#define INIT_TABLE_POS_parser___parser_nodes___AGeExpr (SFT_parser___parser_nodes[721] + 0)
+#define ID_parser___parser_nodes___AGgExpr (SFT_parser___parser_nodes[722])
+#define COLOR_parser___parser_nodes___AGgExpr (SFT_parser___parser_nodes[723])
+#define INIT_TABLE_POS_parser___parser_nodes___AGgExpr (SFT_parser___parser_nodes[724] + 0)
+#define ID_parser___parser_nodes___AIsaExpr (SFT_parser___parser_nodes[725])
+#define COLOR_parser___parser_nodes___AIsaExpr (SFT_parser___parser_nodes[726])
+#define ATTR_parser___parser_nodes___AIsaExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[727] + 0))
+#define ATTR_parser___parser_nodes___AIsaExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[727] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AIsaExpr (SFT_parser___parser_nodes[728] + 0)
+#define CALL_parser___parser_nodes___AIsaExpr___n_expr(recv) ((parser___parser_nodes___AIsaExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[728] + 1)))
+#define CALL_parser___parser_nodes___AIsaExpr___n_expr__eq(recv) ((parser___parser_nodes___AIsaExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[728] + 2)))
+#define CALL_parser___parser_nodes___AIsaExpr___n_type(recv) ((parser___parser_nodes___AIsaExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[728] + 3)))
+#define CALL_parser___parser_nodes___AIsaExpr___n_type__eq(recv) ((parser___parser_nodes___AIsaExpr___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[728] + 4)))
+#define ID_parser___parser_nodes___APlusExpr (SFT_parser___parser_nodes[729])
+#define COLOR_parser___parser_nodes___APlusExpr (SFT_parser___parser_nodes[730])
+#define INIT_TABLE_POS_parser___parser_nodes___APlusExpr (SFT_parser___parser_nodes[731] + 0)
+#define ID_parser___parser_nodes___AMinusExpr (SFT_parser___parser_nodes[732])
+#define COLOR_parser___parser_nodes___AMinusExpr (SFT_parser___parser_nodes[733])
+#define INIT_TABLE_POS_parser___parser_nodes___AMinusExpr (SFT_parser___parser_nodes[734] + 0)
+#define ID_parser___parser_nodes___AStarshipExpr (SFT_parser___parser_nodes[735])
+#define COLOR_parser___parser_nodes___AStarshipExpr (SFT_parser___parser_nodes[736])
+#define INIT_TABLE_POS_parser___parser_nodes___AStarshipExpr (SFT_parser___parser_nodes[737] + 0)
+#define ID_parser___parser_nodes___AStarExpr (SFT_parser___parser_nodes[738])
+#define COLOR_parser___parser_nodes___AStarExpr (SFT_parser___parser_nodes[739])
+#define INIT_TABLE_POS_parser___parser_nodes___AStarExpr (SFT_parser___parser_nodes[740] + 0)
+#define ID_parser___parser_nodes___ASlashExpr (SFT_parser___parser_nodes[741])
+#define COLOR_parser___parser_nodes___ASlashExpr (SFT_parser___parser_nodes[742])
+#define INIT_TABLE_POS_parser___parser_nodes___ASlashExpr (SFT_parser___parser_nodes[743] + 0)
+#define ID_parser___parser_nodes___APercentExpr (SFT_parser___parser_nodes[744])
+#define COLOR_parser___parser_nodes___APercentExpr (SFT_parser___parser_nodes[745])
+#define INIT_TABLE_POS_parser___parser_nodes___APercentExpr (SFT_parser___parser_nodes[746] + 0)
+#define ID_parser___parser_nodes___AUminusExpr (SFT_parser___parser_nodes[747])
+#define COLOR_parser___parser_nodes___AUminusExpr (SFT_parser___parser_nodes[748])
+#define ATTR_parser___parser_nodes___AUminusExpr____n_minus(recv) ATTR(recv, (SFT_parser___parser_nodes[749] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AUminusExpr (SFT_parser___parser_nodes[750] + 0)
+#define CALL_parser___parser_nodes___AUminusExpr___n_minus(recv) ((parser___parser_nodes___AUminusExpr___n_minus_t)CALL((recv), (SFT_parser___parser_nodes[750] + 1)))
+#define CALL_parser___parser_nodes___AUminusExpr___n_minus__eq(recv) ((parser___parser_nodes___AUminusExpr___n_minus__eq_t)CALL((recv), (SFT_parser___parser_nodes[750] + 2)))
+#define ID_parser___parser_nodes___ANewExpr (SFT_parser___parser_nodes[751])
+#define COLOR_parser___parser_nodes___ANewExpr (SFT_parser___parser_nodes[752])
+#define ATTR_parser___parser_nodes___ANewExpr____n_kwnew(recv) ATTR(recv, (SFT_parser___parser_nodes[753] + 0))
+#define ATTR_parser___parser_nodes___ANewExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[753] + 1))
+#define ATTR_parser___parser_nodes___ANewExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[753] + 2))
+#define ATTR_parser___parser_nodes___ANewExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[753] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___ANewExpr (SFT_parser___parser_nodes[754] + 0)
+#define CALL_parser___parser_nodes___ANewExpr___n_kwnew(recv) ((parser___parser_nodes___ANewExpr___n_kwnew_t)CALL((recv), (SFT_parser___parser_nodes[754] + 1)))
+#define CALL_parser___parser_nodes___ANewExpr___n_kwnew__eq(recv) ((parser___parser_nodes___ANewExpr___n_kwnew__eq_t)CALL((recv), (SFT_parser___parser_nodes[754] + 2)))
+#define CALL_parser___parser_nodes___ANewExpr___n_type(recv) ((parser___parser_nodes___ANewExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[754] + 3)))
+#define CALL_parser___parser_nodes___ANewExpr___n_type__eq(recv) ((parser___parser_nodes___ANewExpr___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[754] + 4)))
+#define CALL_parser___parser_nodes___ANewExpr___n_id(recv) ((parser___parser_nodes___ANewExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[754] + 5)))
+#define CALL_parser___parser_nodes___ANewExpr___n_id__eq(recv) ((parser___parser_nodes___ANewExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[754] + 6)))
+#define CALL_parser___parser_nodes___ANewExpr___n_args(recv) ((parser___parser_nodes___ANewExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[754] + 7)))
+#define CALL_parser___parser_nodes___ANewExpr___n_args__eq(recv) ((parser___parser_nodes___ANewExpr___n_args__eq_t)CALL((recv), (SFT_parser___parser_nodes[754] + 8)))
+#define ID_parser___parser_nodes___AAttrFormExpr (SFT_parser___parser_nodes[755])
+#define COLOR_parser___parser_nodes___AAttrFormExpr (SFT_parser___parser_nodes[756])
+#define ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[757] + 0))
+#define ATTR_parser___parser_nodes___AAttrFormExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[757] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AAttrFormExpr (SFT_parser___parser_nodes[758] + 0)
+#define CALL_parser___parser_nodes___AAttrFormExpr___n_expr(recv) ((parser___parser_nodes___AAttrFormExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[758] + 1)))
+#define CALL_parser___parser_nodes___AAttrFormExpr___n_expr__eq(recv) ((parser___parser_nodes___AAttrFormExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[758] + 2)))
+#define CALL_parser___parser_nodes___AAttrFormExpr___n_id(recv) ((parser___parser_nodes___AAttrFormExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[758] + 3)))
+#define CALL_parser___parser_nodes___AAttrFormExpr___n_id__eq(recv) ((parser___parser_nodes___AAttrFormExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[758] + 4)))
+#define ID_parser___parser_nodes___AAttrExpr (SFT_parser___parser_nodes[759])
+#define COLOR_parser___parser_nodes___AAttrExpr (SFT_parser___parser_nodes[760])
+#define INIT_TABLE_POS_parser___parser_nodes___AAttrExpr (SFT_parser___parser_nodes[761] + 0)
+#define ID_parser___parser_nodes___AAttrAssignExpr (SFT_parser___parser_nodes[762])
+#define COLOR_parser___parser_nodes___AAttrAssignExpr (SFT_parser___parser_nodes[763])
+#define INIT_TABLE_POS_parser___parser_nodes___AAttrAssignExpr (SFT_parser___parser_nodes[764] + 0)
+#define ID_parser___parser_nodes___ACallFormExpr (SFT_parser___parser_nodes[765])
+#define COLOR_parser___parser_nodes___ACallFormExpr (SFT_parser___parser_nodes[766])
+#define ATTR_parser___parser_nodes___ACallFormExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[767] + 0))
+#define ATTR_parser___parser_nodes___ACallFormExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[767] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ACallFormExpr (SFT_parser___parser_nodes[768] + 0)
+#define CALL_parser___parser_nodes___ACallFormExpr___n_id(recv) ((parser___parser_nodes___ACallFormExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[768] + 1)))
+#define CALL_parser___parser_nodes___ACallFormExpr___n_id__eq(recv) ((parser___parser_nodes___ACallFormExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[768] + 2)))
+#define CALL_parser___parser_nodes___ACallFormExpr___n_args(recv) ((parser___parser_nodes___ACallFormExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[768] + 3)))
+#define CALL_parser___parser_nodes___ACallFormExpr___n_args__eq(recv) ((parser___parser_nodes___ACallFormExpr___n_args__eq_t)CALL((recv), (SFT_parser___parser_nodes[768] + 4)))
+#define ID_parser___parser_nodes___ASendReassignFormExpr (SFT_parser___parser_nodes[769])
+#define COLOR_parser___parser_nodes___ASendReassignFormExpr (SFT_parser___parser_nodes[770])
+#define INIT_TABLE_POS_parser___parser_nodes___ASendReassignFormExpr (SFT_parser___parser_nodes[771] + 0)
+#define ID_parser___parser_nodes___AAttrReassignExpr (SFT_parser___parser_nodes[772])
+#define COLOR_parser___parser_nodes___AAttrReassignExpr (SFT_parser___parser_nodes[773])
+#define INIT_TABLE_POS_parser___parser_nodes___AAttrReassignExpr (SFT_parser___parser_nodes[774] + 0)
+#define ID_parser___parser_nodes___ACallExpr (SFT_parser___parser_nodes[775])
+#define COLOR_parser___parser_nodes___ACallExpr (SFT_parser___parser_nodes[776])
+#define INIT_TABLE_POS_parser___parser_nodes___ACallExpr (SFT_parser___parser_nodes[777] + 0)
+#define ID_parser___parser_nodes___ACallAssignExpr (SFT_parser___parser_nodes[778])
+#define COLOR_parser___parser_nodes___ACallAssignExpr (SFT_parser___parser_nodes[779])
+#define INIT_TABLE_POS_parser___parser_nodes___ACallAssignExpr (SFT_parser___parser_nodes[780] + 0)
+#define ID_parser___parser_nodes___ACallReassignExpr (SFT_parser___parser_nodes[781])
+#define COLOR_parser___parser_nodes___ACallReassignExpr (SFT_parser___parser_nodes[782])
+#define INIT_TABLE_POS_parser___parser_nodes___ACallReassignExpr (SFT_parser___parser_nodes[783] + 0)
+#define ID_parser___parser_nodes___ASuperExpr (SFT_parser___parser_nodes[784])
+#define COLOR_parser___parser_nodes___ASuperExpr (SFT_parser___parser_nodes[785])
+#define ATTR_parser___parser_nodes___ASuperExpr____n_qualified(recv) ATTR(recv, (SFT_parser___parser_nodes[786] + 0))
+#define ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(recv) ATTR(recv, (SFT_parser___parser_nodes[786] + 1))
+#define ATTR_parser___parser_nodes___ASuperExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[786] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___ASuperExpr (SFT_parser___parser_nodes[787] + 0)
+#define CALL_parser___parser_nodes___ASuperExpr___n_qualified(recv) ((parser___parser_nodes___ASuperExpr___n_qualified_t)CALL((recv), (SFT_parser___parser_nodes[787] + 1)))
+#define CALL_parser___parser_nodes___ASuperExpr___n_qualified__eq(recv) ((parser___parser_nodes___ASuperExpr___n_qualified__eq_t)CALL((recv), (SFT_parser___parser_nodes[787] + 2)))
+#define CALL_parser___parser_nodes___ASuperExpr___n_kwsuper(recv) ((parser___parser_nodes___ASuperExpr___n_kwsuper_t)CALL((recv), (SFT_parser___parser_nodes[787] + 3)))
+#define CALL_parser___parser_nodes___ASuperExpr___n_kwsuper__eq(recv) ((parser___parser_nodes___ASuperExpr___n_kwsuper__eq_t)CALL((recv), (SFT_parser___parser_nodes[787] + 4)))
+#define CALL_parser___parser_nodes___ASuperExpr___n_args(recv) ((parser___parser_nodes___ASuperExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[787] + 5)))
+#define CALL_parser___parser_nodes___ASuperExpr___n_args__eq(recv) ((parser___parser_nodes___ASuperExpr___n_args__eq_t)CALL((recv), (SFT_parser___parser_nodes[787] + 6)))
+#define ID_parser___parser_nodes___AInitExpr (SFT_parser___parser_nodes[788])
+#define COLOR_parser___parser_nodes___AInitExpr (SFT_parser___parser_nodes[789])
+#define ATTR_parser___parser_nodes___AInitExpr____n_kwinit(recv) ATTR(recv, (SFT_parser___parser_nodes[790] + 0))
+#define ATTR_parser___parser_nodes___AInitExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[790] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AInitExpr (SFT_parser___parser_nodes[791] + 0)
+#define CALL_parser___parser_nodes___AInitExpr___n_kwinit(recv) ((parser___parser_nodes___AInitExpr___n_kwinit_t)CALL((recv), (SFT_parser___parser_nodes[791] + 1)))
+#define CALL_parser___parser_nodes___AInitExpr___n_kwinit__eq(recv) ((parser___parser_nodes___AInitExpr___n_kwinit__eq_t)CALL((recv), (SFT_parser___parser_nodes[791] + 2)))
+#define CALL_parser___parser_nodes___AInitExpr___n_args(recv) ((parser___parser_nodes___AInitExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[791] + 3)))
+#define CALL_parser___parser_nodes___AInitExpr___n_args__eq(recv) ((parser___parser_nodes___AInitExpr___n_args__eq_t)CALL((recv), (SFT_parser___parser_nodes[791] + 4)))
+#define ID_parser___parser_nodes___ABraFormExpr (SFT_parser___parser_nodes[792])
+#define COLOR_parser___parser_nodes___ABraFormExpr (SFT_parser___parser_nodes[793])
+#define ATTR_parser___parser_nodes___ABraFormExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[794] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ABraFormExpr (SFT_parser___parser_nodes[795] + 0)
+#define CALL_parser___parser_nodes___ABraFormExpr___n_args(recv) ((parser___parser_nodes___ABraFormExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[795] + 1)))
+#define CALL_parser___parser_nodes___ABraFormExpr___n_args__eq(recv) ((parser___parser_nodes___ABraFormExpr___n_args__eq_t)CALL((recv), (SFT_parser___parser_nodes[795] + 2)))
+#define ID_parser___parser_nodes___ABraExpr (SFT_parser___parser_nodes[796])
+#define COLOR_parser___parser_nodes___ABraExpr (SFT_parser___parser_nodes[797])
+#define INIT_TABLE_POS_parser___parser_nodes___ABraExpr (SFT_parser___parser_nodes[798] + 0)
+#define ID_parser___parser_nodes___ABraAssignExpr (SFT_parser___parser_nodes[799])
+#define COLOR_parser___parser_nodes___ABraAssignExpr (SFT_parser___parser_nodes[800])
+#define INIT_TABLE_POS_parser___parser_nodes___ABraAssignExpr (SFT_parser___parser_nodes[801] + 0)
+#define ID_parser___parser_nodes___AVarFormExpr (SFT_parser___parser_nodes[802])
+#define COLOR_parser___parser_nodes___AVarFormExpr (SFT_parser___parser_nodes[803])
+#define ATTR_parser___parser_nodes___AVarFormExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[804] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AVarFormExpr (SFT_parser___parser_nodes[805] + 0)
+#define CALL_parser___parser_nodes___AVarFormExpr___n_id(recv) ((parser___parser_nodes___AVarFormExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[805] + 1)))
+#define CALL_parser___parser_nodes___AVarFormExpr___n_id__eq(recv) ((parser___parser_nodes___AVarFormExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[805] + 2)))
+#define ID_parser___parser_nodes___ABraReassignExpr (SFT_parser___parser_nodes[806])
+#define COLOR_parser___parser_nodes___ABraReassignExpr (SFT_parser___parser_nodes[807])
+#define INIT_TABLE_POS_parser___parser_nodes___ABraReassignExpr (SFT_parser___parser_nodes[808] + 0)
+#define ID_parser___parser_nodes___AClosureCallExpr (SFT_parser___parser_nodes[809])
+#define COLOR_parser___parser_nodes___AClosureCallExpr (SFT_parser___parser_nodes[810])
+#define ATTR_parser___parser_nodes___AClosureCallExpr____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[811] + 0))
+#define ATTR_parser___parser_nodes___AClosureCallExpr____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[811] + 1))
+#define ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(recv) ATTR(recv, (SFT_parser___parser_nodes[811] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AClosureCallExpr (SFT_parser___parser_nodes[812] + 0)
+#define CALL_parser___parser_nodes___AClosureCallExpr___n_id(recv) ((parser___parser_nodes___AClosureCallExpr___n_id_t)CALL((recv), (SFT_parser___parser_nodes[812] + 1)))
+#define CALL_parser___parser_nodes___AClosureCallExpr___n_id__eq(recv) ((parser___parser_nodes___AClosureCallExpr___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[812] + 2)))
+#define CALL_parser___parser_nodes___AClosureCallExpr___n_args(recv) ((parser___parser_nodes___AClosureCallExpr___n_args_t)CALL((recv), (SFT_parser___parser_nodes[812] + 3)))
+#define CALL_parser___parser_nodes___AClosureCallExpr___n_args__eq(recv) ((parser___parser_nodes___AClosureCallExpr___n_args__eq_t)CALL((recv), (SFT_parser___parser_nodes[812] + 4)))
+#define CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(recv) ((parser___parser_nodes___AClosureCallExpr___n_closure_defs_t)CALL((recv), (SFT_parser___parser_nodes[812] + 5)))
+#define ID_parser___parser_nodes___AVarExpr (SFT_parser___parser_nodes[813])
+#define COLOR_parser___parser_nodes___AVarExpr (SFT_parser___parser_nodes[814])
+#define INIT_TABLE_POS_parser___parser_nodes___AVarExpr (SFT_parser___parser_nodes[815] + 0)
+#define ID_parser___parser_nodes___AVarAssignExpr (SFT_parser___parser_nodes[816])
+#define COLOR_parser___parser_nodes___AVarAssignExpr (SFT_parser___parser_nodes[817])
+#define INIT_TABLE_POS_parser___parser_nodes___AVarAssignExpr (SFT_parser___parser_nodes[818] + 0)
+#define ID_parser___parser_nodes___AVarReassignExpr (SFT_parser___parser_nodes[819])
+#define COLOR_parser___parser_nodes___AVarReassignExpr (SFT_parser___parser_nodes[820])
+#define INIT_TABLE_POS_parser___parser_nodes___AVarReassignExpr (SFT_parser___parser_nodes[821] + 0)
+#define ID_parser___parser_nodes___ARangeExpr (SFT_parser___parser_nodes[822])
+#define COLOR_parser___parser_nodes___ARangeExpr (SFT_parser___parser_nodes[823])
+#define ATTR_parser___parser_nodes___ARangeExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[824] + 0))
+#define ATTR_parser___parser_nodes___ARangeExpr____n_expr2(recv) ATTR(recv, (SFT_parser___parser_nodes[824] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ARangeExpr (SFT_parser___parser_nodes[825] + 0)
+#define CALL_parser___parser_nodes___ARangeExpr___n_expr(recv) ((parser___parser_nodes___ARangeExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[825] + 1)))
+#define CALL_parser___parser_nodes___ARangeExpr___n_expr__eq(recv) ((parser___parser_nodes___ARangeExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[825] + 2)))
+#define CALL_parser___parser_nodes___ARangeExpr___n_expr2(recv) ((parser___parser_nodes___ARangeExpr___n_expr2_t)CALL((recv), (SFT_parser___parser_nodes[825] + 3)))
+#define CALL_parser___parser_nodes___ARangeExpr___n_expr2__eq(recv) ((parser___parser_nodes___ARangeExpr___n_expr2__eq_t)CALL((recv), (SFT_parser___parser_nodes[825] + 4)))
+#define ID_parser___parser_nodes___ACrangeExpr (SFT_parser___parser_nodes[826])
+#define COLOR_parser___parser_nodes___ACrangeExpr (SFT_parser___parser_nodes[827])
+#define ATTR_parser___parser_nodes___ACrangeExpr____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[828] + 0))
+#define ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[828] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr (SFT_parser___parser_nodes[829] + 0)
+#define CALL_parser___parser_nodes___ACrangeExpr___n_obra(recv) ((parser___parser_nodes___ACrangeExpr___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[829] + 1)))
+#define CALL_parser___parser_nodes___ACrangeExpr___n_obra__eq(recv) ((parser___parser_nodes___ACrangeExpr___n_obra__eq_t)CALL((recv), (SFT_parser___parser_nodes[829] + 2)))
+#define CALL_parser___parser_nodes___ACrangeExpr___n_cbra(recv) ((parser___parser_nodes___ACrangeExpr___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[829] + 3)))
+#define CALL_parser___parser_nodes___ACrangeExpr___n_cbra__eq(recv) ((parser___parser_nodes___ACrangeExpr___n_cbra__eq_t)CALL((recv), (SFT_parser___parser_nodes[829] + 4)))
+#define ID_parser___parser_nodes___AOrangeExpr (SFT_parser___parser_nodes[830])
+#define COLOR_parser___parser_nodes___AOrangeExpr (SFT_parser___parser_nodes[831])
+#define ATTR_parser___parser_nodes___AOrangeExpr____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[832] + 0))
+#define ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[832] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr (SFT_parser___parser_nodes[833] + 0)
+#define CALL_parser___parser_nodes___AOrangeExpr___n_obra(recv) ((parser___parser_nodes___AOrangeExpr___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[833] + 1)))
+#define CALL_parser___parser_nodes___AOrangeExpr___n_obra__eq(recv) ((parser___parser_nodes___AOrangeExpr___n_obra__eq_t)CALL((recv), (SFT_parser___parser_nodes[833] + 2)))
+#define CALL_parser___parser_nodes___AOrangeExpr___n_cbra(recv) ((parser___parser_nodes___AOrangeExpr___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[833] + 3)))
+#define CALL_parser___parser_nodes___AOrangeExpr___n_cbra__eq(recv) ((parser___parser_nodes___AOrangeExpr___n_cbra__eq_t)CALL((recv), (SFT_parser___parser_nodes[833] + 4)))
+#define ID_parser___parser_nodes___AArrayExpr (SFT_parser___parser_nodes[834])
+#define COLOR_parser___parser_nodes___AArrayExpr (SFT_parser___parser_nodes[835])
+#define ATTR_parser___parser_nodes___AArrayExpr____n_exprs(recv) ATTR(recv, (SFT_parser___parser_nodes[836] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AArrayExpr (SFT_parser___parser_nodes[837] + 0)
+#define CALL_parser___parser_nodes___AArrayExpr___n_exprs(recv) ((parser___parser_nodes___AArrayExpr___n_exprs_t)CALL((recv), (SFT_parser___parser_nodes[837] + 1)))
+#define CALL_parser___parser_nodes___AArrayExpr___n_exprs__eq(recv) ((parser___parser_nodes___AArrayExpr___n_exprs__eq_t)CALL((recv), (SFT_parser___parser_nodes[837] + 2)))
+#define ID_parser___parser_nodes___ASelfExpr (SFT_parser___parser_nodes[838])
+#define COLOR_parser___parser_nodes___ASelfExpr (SFT_parser___parser_nodes[839])
+#define ATTR_parser___parser_nodes___ASelfExpr____n_kwself(recv) ATTR(recv, (SFT_parser___parser_nodes[840] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ASelfExpr (SFT_parser___parser_nodes[841] + 0)
+#define CALL_parser___parser_nodes___ASelfExpr___n_kwself(recv) ((parser___parser_nodes___ASelfExpr___n_kwself_t)CALL((recv), (SFT_parser___parser_nodes[841] + 1)))
+#define CALL_parser___parser_nodes___ASelfExpr___n_kwself__eq(recv) ((parser___parser_nodes___ASelfExpr___n_kwself__eq_t)CALL((recv), (SFT_parser___parser_nodes[841] + 2)))
+#define ID_parser___parser_nodes___AImplicitSelfExpr (SFT_parser___parser_nodes[842])
+#define COLOR_parser___parser_nodes___AImplicitSelfExpr (SFT_parser___parser_nodes[843])
+#define INIT_TABLE_POS_parser___parser_nodes___AImplicitSelfExpr (SFT_parser___parser_nodes[844] + 0)
+#define ID_parser___parser_nodes___ATrueExpr (SFT_parser___parser_nodes[845])
+#define COLOR_parser___parser_nodes___ATrueExpr (SFT_parser___parser_nodes[846])
+#define ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(recv) ATTR(recv, (SFT_parser___parser_nodes[847] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ATrueExpr (SFT_parser___parser_nodes[848] + 0)
+#define CALL_parser___parser_nodes___ATrueExpr___n_kwtrue(recv) ((parser___parser_nodes___ATrueExpr___n_kwtrue_t)CALL((recv), (SFT_parser___parser_nodes[848] + 1)))
+#define CALL_parser___parser_nodes___ATrueExpr___n_kwtrue__eq(recv) ((parser___parser_nodes___ATrueExpr___n_kwtrue__eq_t)CALL((recv), (SFT_parser___parser_nodes[848] + 2)))
+#define ID_parser___parser_nodes___AFalseExpr (SFT_parser___parser_nodes[849])
+#define COLOR_parser___parser_nodes___AFalseExpr (SFT_parser___parser_nodes[850])
+#define ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(recv) ATTR(recv, (SFT_parser___parser_nodes[851] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AFalseExpr (SFT_parser___parser_nodes[852] + 0)
+#define CALL_parser___parser_nodes___AFalseExpr___n_kwfalse(recv) ((parser___parser_nodes___AFalseExpr___n_kwfalse_t)CALL((recv), (SFT_parser___parser_nodes[852] + 1)))
+#define CALL_parser___parser_nodes___AFalseExpr___n_kwfalse__eq(recv) ((parser___parser_nodes___AFalseExpr___n_kwfalse__eq_t)CALL((recv), (SFT_parser___parser_nodes[852] + 2)))
+#define ID_parser___parser_nodes___ANullExpr (SFT_parser___parser_nodes[853])
+#define COLOR_parser___parser_nodes___ANullExpr (SFT_parser___parser_nodes[854])
+#define ATTR_parser___parser_nodes___ANullExpr____n_kwnull(recv) ATTR(recv, (SFT_parser___parser_nodes[855] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ANullExpr (SFT_parser___parser_nodes[856] + 0)
+#define CALL_parser___parser_nodes___ANullExpr___n_kwnull(recv) ((parser___parser_nodes___ANullExpr___n_kwnull_t)CALL((recv), (SFT_parser___parser_nodes[856] + 1)))
+#define CALL_parser___parser_nodes___ANullExpr___n_kwnull__eq(recv) ((parser___parser_nodes___ANullExpr___n_kwnull__eq_t)CALL((recv), (SFT_parser___parser_nodes[856] + 2)))
+#define ID_parser___parser_nodes___AIntExpr (SFT_parser___parser_nodes[857])
+#define COLOR_parser___parser_nodes___AIntExpr (SFT_parser___parser_nodes[858])
+#define ATTR_parser___parser_nodes___AIntExpr____n_number(recv) ATTR(recv, (SFT_parser___parser_nodes[859] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AIntExpr (SFT_parser___parser_nodes[860] + 0)
+#define CALL_parser___parser_nodes___AIntExpr___n_number(recv) ((parser___parser_nodes___AIntExpr___n_number_t)CALL((recv), (SFT_parser___parser_nodes[860] + 1)))
+#define CALL_parser___parser_nodes___AIntExpr___n_number__eq(recv) ((parser___parser_nodes___AIntExpr___n_number__eq_t)CALL((recv), (SFT_parser___parser_nodes[860] + 2)))
+#define ID_parser___parser_nodes___AFloatExpr (SFT_parser___parser_nodes[861])
+#define COLOR_parser___parser_nodes___AFloatExpr (SFT_parser___parser_nodes[862])
+#define ATTR_parser___parser_nodes___AFloatExpr____n_float(recv) ATTR(recv, (SFT_parser___parser_nodes[863] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AFloatExpr (SFT_parser___parser_nodes[864] + 0)
+#define CALL_parser___parser_nodes___AFloatExpr___n_float(recv) ((parser___parser_nodes___AFloatExpr___n_float_t)CALL((recv), (SFT_parser___parser_nodes[864] + 1)))
+#define CALL_parser___parser_nodes___AFloatExpr___n_float__eq(recv) ((parser___parser_nodes___AFloatExpr___n_float__eq_t)CALL((recv), (SFT_parser___parser_nodes[864] + 2)))
+#define ID_parser___parser_nodes___ACharExpr (SFT_parser___parser_nodes[865])
+#define COLOR_parser___parser_nodes___ACharExpr (SFT_parser___parser_nodes[866])
+#define ATTR_parser___parser_nodes___ACharExpr____n_char(recv) ATTR(recv, (SFT_parser___parser_nodes[867] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ACharExpr (SFT_parser___parser_nodes[868] + 0)
+#define CALL_parser___parser_nodes___ACharExpr___n_char(recv) ((parser___parser_nodes___ACharExpr___n_char_t)CALL((recv), (SFT_parser___parser_nodes[868] + 1)))
+#define CALL_parser___parser_nodes___ACharExpr___n_char__eq(recv) ((parser___parser_nodes___ACharExpr___n_char__eq_t)CALL((recv), (SFT_parser___parser_nodes[868] + 2)))
+#define ID_parser___parser_nodes___AStringFormExpr (SFT_parser___parser_nodes[869])
+#define COLOR_parser___parser_nodes___AStringFormExpr (SFT_parser___parser_nodes[870])
+#define ATTR_parser___parser_nodes___AStringFormExpr____n_string(recv) ATTR(recv, (SFT_parser___parser_nodes[871] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AStringFormExpr (SFT_parser___parser_nodes[872] + 0)
+#define CALL_parser___parser_nodes___AStringFormExpr___n_string(recv) ((parser___parser_nodes___AStringFormExpr___n_string_t)CALL((recv), (SFT_parser___parser_nodes[872] + 1)))
+#define CALL_parser___parser_nodes___AStringFormExpr___n_string__eq(recv) ((parser___parser_nodes___AStringFormExpr___n_string__eq_t)CALL((recv), (SFT_parser___parser_nodes[872] + 2)))
+#define ID_parser___parser_nodes___AStringExpr (SFT_parser___parser_nodes[873])
+#define COLOR_parser___parser_nodes___AStringExpr (SFT_parser___parser_nodes[874])
+#define INIT_TABLE_POS_parser___parser_nodes___AStringExpr (SFT_parser___parser_nodes[875] + 0)
+#define ID_parser___parser_nodes___AStartStringExpr (SFT_parser___parser_nodes[876])
+#define COLOR_parser___parser_nodes___AStartStringExpr (SFT_parser___parser_nodes[877])
+#define INIT_TABLE_POS_parser___parser_nodes___AStartStringExpr (SFT_parser___parser_nodes[878] + 0)
+#define ID_parser___parser_nodes___AMidStringExpr (SFT_parser___parser_nodes[879])
+#define COLOR_parser___parser_nodes___AMidStringExpr (SFT_parser___parser_nodes[880])
+#define INIT_TABLE_POS_parser___parser_nodes___AMidStringExpr (SFT_parser___parser_nodes[881] + 0)
+#define ID_parser___parser_nodes___AEndStringExpr (SFT_parser___parser_nodes[882])
+#define COLOR_parser___parser_nodes___AEndStringExpr (SFT_parser___parser_nodes[883])
+#define INIT_TABLE_POS_parser___parser_nodes___AEndStringExpr (SFT_parser___parser_nodes[884] + 0)
+#define ID_parser___parser_nodes___ASuperstringExpr (SFT_parser___parser_nodes[885])
+#define COLOR_parser___parser_nodes___ASuperstringExpr (SFT_parser___parser_nodes[886])
+#define ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(recv) ATTR(recv, (SFT_parser___parser_nodes[887] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ASuperstringExpr (SFT_parser___parser_nodes[888] + 0)
+#define CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(recv) ((parser___parser_nodes___ASuperstringExpr___n_exprs_t)CALL((recv), (SFT_parser___parser_nodes[888] + 1)))
+#define ID_parser___parser_nodes___AParExpr (SFT_parser___parser_nodes[889])
+#define COLOR_parser___parser_nodes___AParExpr (SFT_parser___parser_nodes[890])
+#define ATTR_parser___parser_nodes___AParExpr____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 0))
+#define ATTR_parser___parser_nodes___AParExpr____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[891] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AParExpr (SFT_parser___parser_nodes[892] + 0)
+#define CALL_parser___parser_nodes___AParExpr___n_opar(recv) ((parser___parser_nodes___AParExpr___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[892] + 1)))
+#define CALL_parser___parser_nodes___AParExpr___n_opar__eq(recv) ((parser___parser_nodes___AParExpr___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[892] + 2)))
+#define CALL_parser___parser_nodes___AParExpr___n_cpar(recv) ((parser___parser_nodes___AParExpr___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[892] + 3)))
+#define CALL_parser___parser_nodes___AParExpr___n_cpar__eq(recv) ((parser___parser_nodes___AParExpr___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[892] + 4)))
+#define ID_parser___parser_nodes___AProxyExpr (SFT_parser___parser_nodes[893])
+#define COLOR_parser___parser_nodes___AProxyExpr (SFT_parser___parser_nodes[894])
+#define ATTR_parser___parser_nodes___AProxyExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[895] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AProxyExpr (SFT_parser___parser_nodes[896] + 0)
+#define CALL_parser___parser_nodes___AProxyExpr___n_expr(recv) ((parser___parser_nodes___AProxyExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[896] + 1)))
+#define CALL_parser___parser_nodes___AProxyExpr___n_expr__eq(recv) ((parser___parser_nodes___AProxyExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[896] + 2)))
+#define ID_parser___parser_nodes___AAsCastExpr (SFT_parser___parser_nodes[897])
+#define COLOR_parser___parser_nodes___AAsCastExpr (SFT_parser___parser_nodes[898])
+#define ATTR_parser___parser_nodes___AAsCastExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[899] + 0))
+#define ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[899] + 1))
+#define ATTR_parser___parser_nodes___AAsCastExpr____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[899] + 2))
+#define ATTR_parser___parser_nodes___AAsCastExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[899] + 3))
+#define ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[899] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr (SFT_parser___parser_nodes[900] + 0)
+#define CALL_parser___parser_nodes___AAsCastExpr___n_expr(recv) ((parser___parser_nodes___AAsCastExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[900] + 1)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_expr__eq(recv) ((parser___parser_nodes___AAsCastExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[900] + 2)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_kwas(recv) ((parser___parser_nodes___AAsCastExpr___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[900] + 3)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_kwas__eq(recv) ((parser___parser_nodes___AAsCastExpr___n_kwas__eq_t)CALL((recv), (SFT_parser___parser_nodes[900] + 4)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_opar(recv) ((parser___parser_nodes___AAsCastExpr___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[900] + 5)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_opar__eq(recv) ((parser___parser_nodes___AAsCastExpr___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[900] + 6)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_type(recv) ((parser___parser_nodes___AAsCastExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[900] + 7)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_type__eq(recv) ((parser___parser_nodes___AAsCastExpr___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[900] + 8)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_cpar(recv) ((parser___parser_nodes___AAsCastExpr___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[900] + 9)))
+#define CALL_parser___parser_nodes___AAsCastExpr___n_cpar__eq(recv) ((parser___parser_nodes___AAsCastExpr___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[900] + 10)))
+#define ID_parser___parser_nodes___AAsNotnullExpr (SFT_parser___parser_nodes[901])
+#define COLOR_parser___parser_nodes___AAsNotnullExpr (SFT_parser___parser_nodes[902])
+#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 0))
+#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 1))
+#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 2))
+#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 3))
+#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 4))
+#define ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[903] + 5))
+#define INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr (SFT_parser___parser_nodes[904] + 0)
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(recv) ((parser___parser_nodes___AAsNotnullExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[904] + 1)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_expr__eq(recv) ((parser___parser_nodes___AAsNotnullExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[904] + 2)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwas(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwas_t)CALL((recv), (SFT_parser___parser_nodes[904] + 3)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwas__eq(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwas__eq_t)CALL((recv), (SFT_parser___parser_nodes[904] + 4)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_opar(recv) ((parser___parser_nodes___AAsNotnullExpr___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[904] + 5)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_opar__eq(recv) ((parser___parser_nodes___AAsNotnullExpr___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[904] + 6)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwnot(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwnot_t)CALL((recv), (SFT_parser___parser_nodes[904] + 7)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq_t)CALL((recv), (SFT_parser___parser_nodes[904] + 8)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwnull(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwnull_t)CALL((recv), (SFT_parser___parser_nodes[904] + 9)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq(recv) ((parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq_t)CALL((recv), (SFT_parser___parser_nodes[904] + 10)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_cpar(recv) ((parser___parser_nodes___AAsNotnullExpr___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[904] + 11)))
+#define CALL_parser___parser_nodes___AAsNotnullExpr___n_cpar__eq(recv) ((parser___parser_nodes___AAsNotnullExpr___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[904] + 12)))
+#define ID_parser___parser_nodes___AIssetAttrExpr (SFT_parser___parser_nodes[905])
+#define COLOR_parser___parser_nodes___AIssetAttrExpr (SFT_parser___parser_nodes[906])
+#define ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(recv) ATTR(recv, (SFT_parser___parser_nodes[907] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AIssetAttrExpr (SFT_parser___parser_nodes[908] + 0)
+#define CALL_parser___parser_nodes___AIssetAttrExpr___n_kwisset(recv) ((parser___parser_nodes___AIssetAttrExpr___n_kwisset_t)CALL((recv), (SFT_parser___parser_nodes[908] + 1)))
+#define CALL_parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq(recv) ((parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq_t)CALL((recv), (SFT_parser___parser_nodes[908] + 2)))
+#define ID_parser___parser_nodes___AExprs (SFT_parser___parser_nodes[909])
+#define COLOR_parser___parser_nodes___AExprs (SFT_parser___parser_nodes[910])
+#define ATTR_parser___parser_nodes___AExprs____n_exprs(recv) ATTR(recv, (SFT_parser___parser_nodes[911] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AExprs (SFT_parser___parser_nodes[912] + 0)
+#define CALL_parser___parser_nodes___AExprs___n_exprs(recv) ((parser___parser_nodes___AExprs___n_exprs_t)CALL((recv), (SFT_parser___parser_nodes[912] + 1)))
+#define ID_parser___parser_nodes___ADebugTypeExpr (SFT_parser___parser_nodes[913])
+#define COLOR_parser___parser_nodes___ADebugTypeExpr (SFT_parser___parser_nodes[914])
+#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(recv) ATTR(recv, (SFT_parser___parser_nodes[915] + 0))
+#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(recv) ATTR(recv, (SFT_parser___parser_nodes[915] + 1))
+#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[915] + 2))
+#define ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[915] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___ADebugTypeExpr (SFT_parser___parser_nodes[916] + 0)
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_kwdebug(recv) ((parser___parser_nodes___ADebugTypeExpr___n_kwdebug_t)CALL((recv), (SFT_parser___parser_nodes[916] + 1)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq(recv) ((parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq_t)CALL((recv), (SFT_parser___parser_nodes[916] + 2)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_kwtype(recv) ((parser___parser_nodes___ADebugTypeExpr___n_kwtype_t)CALL((recv), (SFT_parser___parser_nodes[916] + 3)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq(recv) ((parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq_t)CALL((recv), (SFT_parser___parser_nodes[916] + 4)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(recv) ((parser___parser_nodes___ADebugTypeExpr___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[916] + 5)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_expr__eq(recv) ((parser___parser_nodes___ADebugTypeExpr___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[916] + 6)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_type(recv) ((parser___parser_nodes___ADebugTypeExpr___n_type_t)CALL((recv), (SFT_parser___parser_nodes[916] + 7)))
+#define CALL_parser___parser_nodes___ADebugTypeExpr___n_type__eq(recv) ((parser___parser_nodes___ADebugTypeExpr___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[916] + 8)))
+#define ID_parser___parser_nodes___AListExprs (SFT_parser___parser_nodes[917])
+#define COLOR_parser___parser_nodes___AListExprs (SFT_parser___parser_nodes[918])
+#define INIT_TABLE_POS_parser___parser_nodes___AListExprs (SFT_parser___parser_nodes[919] + 0)
+#define ID_parser___parser_nodes___AParExprs (SFT_parser___parser_nodes[920])
+#define COLOR_parser___parser_nodes___AParExprs (SFT_parser___parser_nodes[921])
+#define ATTR_parser___parser_nodes___AParExprs____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[922] + 0))
+#define ATTR_parser___parser_nodes___AParExprs____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[922] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AParExprs (SFT_parser___parser_nodes[923] + 0)
+#define CALL_parser___parser_nodes___AParExprs___n_opar(recv) ((parser___parser_nodes___AParExprs___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[923] + 1)))
+#define CALL_parser___parser_nodes___AParExprs___n_opar__eq(recv) ((parser___parser_nodes___AParExprs___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[923] + 2)))
+#define CALL_parser___parser_nodes___AParExprs___n_cpar(recv) ((parser___parser_nodes___AParExprs___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[923] + 3)))
+#define CALL_parser___parser_nodes___AParExprs___n_cpar__eq(recv) ((parser___parser_nodes___AParExprs___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[923] + 4)))
+#define ID_parser___parser_nodes___ABraExprs (SFT_parser___parser_nodes[924])
+#define COLOR_parser___parser_nodes___ABraExprs (SFT_parser___parser_nodes[925])
+#define ATTR_parser___parser_nodes___ABraExprs____n_obra(recv) ATTR(recv, (SFT_parser___parser_nodes[926] + 0))
+#define ATTR_parser___parser_nodes___ABraExprs____n_cbra(recv) ATTR(recv, (SFT_parser___parser_nodes[926] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___ABraExprs (SFT_parser___parser_nodes[927] + 0)
+#define CALL_parser___parser_nodes___ABraExprs___n_obra(recv) ((parser___parser_nodes___ABraExprs___n_obra_t)CALL((recv), (SFT_parser___parser_nodes[927] + 1)))
+#define CALL_parser___parser_nodes___ABraExprs___n_obra__eq(recv) ((parser___parser_nodes___ABraExprs___n_obra__eq_t)CALL((recv), (SFT_parser___parser_nodes[927] + 2)))
+#define CALL_parser___parser_nodes___ABraExprs___n_cbra(recv) ((parser___parser_nodes___ABraExprs___n_cbra_t)CALL((recv), (SFT_parser___parser_nodes[927] + 3)))
+#define CALL_parser___parser_nodes___ABraExprs___n_cbra__eq(recv) ((parser___parser_nodes___ABraExprs___n_cbra__eq_t)CALL((recv), (SFT_parser___parser_nodes[927] + 4)))
+#define ID_parser___parser_nodes___AAssignOp (SFT_parser___parser_nodes[928])
+#define COLOR_parser___parser_nodes___AAssignOp (SFT_parser___parser_nodes[929])
+#define INIT_TABLE_POS_parser___parser_nodes___AAssignOp (SFT_parser___parser_nodes[930] + 0)
+#define ID_parser___parser_nodes___APlusAssignOp (SFT_parser___parser_nodes[931])
+#define COLOR_parser___parser_nodes___APlusAssignOp (SFT_parser___parser_nodes[932])
+#define ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(recv) ATTR(recv, (SFT_parser___parser_nodes[933] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp (SFT_parser___parser_nodes[934] + 0)
+#define CALL_parser___parser_nodes___APlusAssignOp___n_pluseq(recv) ((parser___parser_nodes___APlusAssignOp___n_pluseq_t)CALL((recv), (SFT_parser___parser_nodes[934] + 1)))
+#define CALL_parser___parser_nodes___APlusAssignOp___n_pluseq__eq(recv) ((parser___parser_nodes___APlusAssignOp___n_pluseq__eq_t)CALL((recv), (SFT_parser___parser_nodes[934] + 2)))
+#define ID_parser___parser_nodes___AMinusAssignOp (SFT_parser___parser_nodes[935])
+#define COLOR_parser___parser_nodes___AMinusAssignOp (SFT_parser___parser_nodes[936])
+#define ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(recv) ATTR(recv, (SFT_parser___parser_nodes[937] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp (SFT_parser___parser_nodes[938] + 0)
+#define CALL_parser___parser_nodes___AMinusAssignOp___n_minuseq(recv) ((parser___parser_nodes___AMinusAssignOp___n_minuseq_t)CALL((recv), (SFT_parser___parser_nodes[938] + 1)))
+#define CALL_parser___parser_nodes___AMinusAssignOp___n_minuseq__eq(recv) ((parser___parser_nodes___AMinusAssignOp___n_minuseq__eq_t)CALL((recv), (SFT_parser___parser_nodes[938] + 2)))
+#define ID_parser___parser_nodes___AClosureDef (SFT_parser___parser_nodes[939])
+#define COLOR_parser___parser_nodes___AClosureDef (SFT_parser___parser_nodes[940])
+#define ATTR_parser___parser_nodes___AClosureDef____n_bang(recv) ATTR(recv, (SFT_parser___parser_nodes[941] + 0))
+#define ATTR_parser___parser_nodes___AClosureDef____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[941] + 1))
+#define ATTR_parser___parser_nodes___AClosureDef____n_ids(recv) ATTR(recv, (SFT_parser___parser_nodes[941] + 2))
+#define ATTR_parser___parser_nodes___AClosureDef____n_kwdo(recv) ATTR(recv, (SFT_parser___parser_nodes[941] + 3))
+#define ATTR_parser___parser_nodes___AClosureDef____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[941] + 4))
+#define INIT_TABLE_POS_parser___parser_nodes___AClosureDef (SFT_parser___parser_nodes[942] + 0)
+#define CALL_parser___parser_nodes___AClosureDef___n_bang(recv) ((parser___parser_nodes___AClosureDef___n_bang_t)CALL((recv), (SFT_parser___parser_nodes[942] + 1)))
+#define CALL_parser___parser_nodes___AClosureDef___n_bang__eq(recv) ((parser___parser_nodes___AClosureDef___n_bang__eq_t)CALL((recv), (SFT_parser___parser_nodes[942] + 2)))
+#define CALL_parser___parser_nodes___AClosureDef___n_id(recv) ((parser___parser_nodes___AClosureDef___n_id_t)CALL((recv), (SFT_parser___parser_nodes[942] + 3)))
+#define CALL_parser___parser_nodes___AClosureDef___n_id__eq(recv) ((parser___parser_nodes___AClosureDef___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[942] + 4)))
+#define CALL_parser___parser_nodes___AClosureDef___n_ids(recv) ((parser___parser_nodes___AClosureDef___n_ids_t)CALL((recv), (SFT_parser___parser_nodes[942] + 5)))
+#define CALL_parser___parser_nodes___AClosureDef___n_kwdo(recv) ((parser___parser_nodes___AClosureDef___n_kwdo_t)CALL((recv), (SFT_parser___parser_nodes[942] + 6)))
+#define CALL_parser___parser_nodes___AClosureDef___n_kwdo__eq(recv) ((parser___parser_nodes___AClosureDef___n_kwdo__eq_t)CALL((recv), (SFT_parser___parser_nodes[942] + 7)))
+#define CALL_parser___parser_nodes___AClosureDef___n_expr(recv) ((parser___parser_nodes___AClosureDef___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[942] + 8)))
+#define CALL_parser___parser_nodes___AClosureDef___n_expr__eq(recv) ((parser___parser_nodes___AClosureDef___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[942] + 9)))
+#define ID_parser___parser_nodes___AClosureId (SFT_parser___parser_nodes[943])
+#define COLOR_parser___parser_nodes___AClosureId (SFT_parser___parser_nodes[944])
+#define INIT_TABLE_POS_parser___parser_nodes___AClosureId (SFT_parser___parser_nodes[945] + 0)
+#define ID_parser___parser_nodes___ASimpleClosureId (SFT_parser___parser_nodes[946])
+#define COLOR_parser___parser_nodes___ASimpleClosureId (SFT_parser___parser_nodes[947])
+#define ATTR_parser___parser_nodes___ASimpleClosureId____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[948] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId (SFT_parser___parser_nodes[949] + 0)
+#define CALL_parser___parser_nodes___ASimpleClosureId___n_id(recv) ((parser___parser_nodes___ASimpleClosureId___n_id_t)CALL((recv), (SFT_parser___parser_nodes[949] + 1)))
+#define CALL_parser___parser_nodes___ASimpleClosureId___n_id__eq(recv) ((parser___parser_nodes___ASimpleClosureId___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[949] + 2)))
+#define ID_parser___parser_nodes___ABreakClosureId (SFT_parser___parser_nodes[950])
+#define COLOR_parser___parser_nodes___ABreakClosureId (SFT_parser___parser_nodes[951])
+#define ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(recv) ATTR(recv, (SFT_parser___parser_nodes[952] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId (SFT_parser___parser_nodes[953] + 0)
+#define CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(recv) ((parser___parser_nodes___ABreakClosureId___n_kwbreak_t)CALL((recv), (SFT_parser___parser_nodes[953] + 1)))
+#define CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak__eq(recv) ((parser___parser_nodes___ABreakClosureId___n_kwbreak__eq_t)CALL((recv), (SFT_parser___parser_nodes[953] + 2)))
+#define ID_parser___parser_nodes___AModuleName (SFT_parser___parser_nodes[954])
+#define COLOR_parser___parser_nodes___AModuleName (SFT_parser___parser_nodes[955])
+#define ATTR_parser___parser_nodes___AModuleName____n_quad(recv) ATTR(recv, (SFT_parser___parser_nodes[956] + 0))
+#define ATTR_parser___parser_nodes___AModuleName____n_path(recv) ATTR(recv, (SFT_parser___parser_nodes[956] + 1))
+#define ATTR_parser___parser_nodes___AModuleName____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[956] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AModuleName (SFT_parser___parser_nodes[957] + 0)
+#define CALL_parser___parser_nodes___AModuleName___n_quad(recv) ((parser___parser_nodes___AModuleName___n_quad_t)CALL((recv), (SFT_parser___parser_nodes[957] + 1)))
+#define CALL_parser___parser_nodes___AModuleName___n_quad__eq(recv) ((parser___parser_nodes___AModuleName___n_quad__eq_t)CALL((recv), (SFT_parser___parser_nodes[957] + 2)))
+#define CALL_parser___parser_nodes___AModuleName___n_path(recv) ((parser___parser_nodes___AModuleName___n_path_t)CALL((recv), (SFT_parser___parser_nodes[957] + 3)))
+#define CALL_parser___parser_nodes___AModuleName___n_id(recv) ((parser___parser_nodes___AModuleName___n_id_t)CALL((recv), (SFT_parser___parser_nodes[957] + 4)))
+#define CALL_parser___parser_nodes___AModuleName___n_id__eq(recv) ((parser___parser_nodes___AModuleName___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[957] + 5)))
+#define ID_parser___parser_nodes___AInLanguage (SFT_parser___parser_nodes[958])
+#define COLOR_parser___parser_nodes___AInLanguage (SFT_parser___parser_nodes[959])
+#define ATTR_parser___parser_nodes___AInLanguage____n_kwin(recv) ATTR(recv, (SFT_parser___parser_nodes[960] + 0))
+#define ATTR_parser___parser_nodes___AInLanguage____n_string(recv) ATTR(recv, (SFT_parser___parser_nodes[960] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AInLanguage (SFT_parser___parser_nodes[961] + 0)
+#define CALL_parser___parser_nodes___AInLanguage___n_kwin(recv) ((parser___parser_nodes___AInLanguage___n_kwin_t)CALL((recv), (SFT_parser___parser_nodes[961] + 1)))
+#define CALL_parser___parser_nodes___AInLanguage___n_kwin__eq(recv) ((parser___parser_nodes___AInLanguage___n_kwin__eq_t)CALL((recv), (SFT_parser___parser_nodes[961] + 2)))
+#define CALL_parser___parser_nodes___AInLanguage___n_string(recv) ((parser___parser_nodes___AInLanguage___n_string_t)CALL((recv), (SFT_parser___parser_nodes[961] + 3)))
+#define CALL_parser___parser_nodes___AInLanguage___n_string__eq(recv) ((parser___parser_nodes___AInLanguage___n_string__eq_t)CALL((recv), (SFT_parser___parser_nodes[961] + 4)))
+#define ID_parser___parser_nodes___AExternCodeBlock (SFT_parser___parser_nodes[962])
+#define COLOR_parser___parser_nodes___AExternCodeBlock (SFT_parser___parser_nodes[963])
+#define ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(recv) ATTR(recv, (SFT_parser___parser_nodes[964] + 0))
+#define ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(recv) ATTR(recv, (SFT_parser___parser_nodes[964] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___AExternCodeBlock (SFT_parser___parser_nodes[965] + 0)
+#define CALL_parser___parser_nodes___AExternCodeBlock___n_in_language(recv) ((parser___parser_nodes___AExternCodeBlock___n_in_language_t)CALL((recv), (SFT_parser___parser_nodes[965] + 1)))
+#define CALL_parser___parser_nodes___AExternCodeBlock___n_in_language__eq(recv) ((parser___parser_nodes___AExternCodeBlock___n_in_language__eq_t)CALL((recv), (SFT_parser___parser_nodes[965] + 2)))
+#define CALL_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment(recv) ((parser___parser_nodes___AExternCodeBlock___n_extern_code_segment_t)CALL((recv), (SFT_parser___parser_nodes[965] + 3)))
+#define CALL_parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq(recv) ((parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq_t)CALL((recv), (SFT_parser___parser_nodes[965] + 4)))
+#define ID_parser___parser_nodes___AQualified (SFT_parser___parser_nodes[966])
+#define COLOR_parser___parser_nodes___AQualified (SFT_parser___parser_nodes[967])
+#define ATTR_parser___parser_nodes___AQualified____n_quad(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 0))
+#define ATTR_parser___parser_nodes___AQualified____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 1))
+#define ATTR_parser___parser_nodes___AQualified____n_classid(recv) ATTR(recv, (SFT_parser___parser_nodes[968] + 2))
+#define INIT_TABLE_POS_parser___parser_nodes___AQualified (SFT_parser___parser_nodes[969] + 0)
+#define CALL_parser___parser_nodes___AQualified___n_quad(recv) ((parser___parser_nodes___AQualified___n_quad_t)CALL((recv), (SFT_parser___parser_nodes[969] + 1)))
+#define CALL_parser___parser_nodes___AQualified___n_quad__eq(recv) ((parser___parser_nodes___AQualified___n_quad__eq_t)CALL((recv), (SFT_parser___parser_nodes[969] + 2)))
+#define CALL_parser___parser_nodes___AQualified___n_id(recv) ((parser___parser_nodes___AQualified___n_id_t)CALL((recv), (SFT_parser___parser_nodes[969] + 3)))
+#define CALL_parser___parser_nodes___AQualified___n_classid(recv) ((parser___parser_nodes___AQualified___n_classid_t)CALL((recv), (SFT_parser___parser_nodes[969] + 4)))
+#define CALL_parser___parser_nodes___AQualified___n_classid__eq(recv) ((parser___parser_nodes___AQualified___n_classid__eq_t)CALL((recv), (SFT_parser___parser_nodes[969] + 5)))
+#define ID_parser___parser_nodes___ADoc (SFT_parser___parser_nodes[970])
+#define COLOR_parser___parser_nodes___ADoc (SFT_parser___parser_nodes[971])
+#define ATTR_parser___parser_nodes___ADoc____n_comment(recv) ATTR(recv, (SFT_parser___parser_nodes[972] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ADoc (SFT_parser___parser_nodes[973] + 0)
+#define CALL_parser___parser_nodes___ADoc___n_comment(recv) ((parser___parser_nodes___ADoc___n_comment_t)CALL((recv), (SFT_parser___parser_nodes[973] + 1)))
+#define ID_parser___parser_nodes___AAnnotations (SFT_parser___parser_nodes[974])
+#define COLOR_parser___parser_nodes___AAnnotations (SFT_parser___parser_nodes[975])
+#define ATTR_parser___parser_nodes___AAnnotations____n_at(recv) ATTR(recv, (SFT_parser___parser_nodes[976] + 0))
+#define ATTR_parser___parser_nodes___AAnnotations____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[976] + 1))
+#define ATTR_parser___parser_nodes___AAnnotations____n_items(recv) ATTR(recv, (SFT_parser___parser_nodes[976] + 2))
+#define ATTR_parser___parser_nodes___AAnnotations____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[976] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AAnnotations (SFT_parser___parser_nodes[977] + 0)
+#define CALL_parser___parser_nodes___AAnnotations___n_at(recv) ((parser___parser_nodes___AAnnotations___n_at_t)CALL((recv), (SFT_parser___parser_nodes[977] + 1)))
+#define CALL_parser___parser_nodes___AAnnotations___n_at__eq(recv) ((parser___parser_nodes___AAnnotations___n_at__eq_t)CALL((recv), (SFT_parser___parser_nodes[977] + 2)))
+#define CALL_parser___parser_nodes___AAnnotations___n_opar(recv) ((parser___parser_nodes___AAnnotations___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[977] + 3)))
+#define CALL_parser___parser_nodes___AAnnotations___n_opar__eq(recv) ((parser___parser_nodes___AAnnotations___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[977] + 4)))
+#define CALL_parser___parser_nodes___AAnnotations___n_items(recv) ((parser___parser_nodes___AAnnotations___n_items_t)CALL((recv), (SFT_parser___parser_nodes[977] + 5)))
+#define CALL_parser___parser_nodes___AAnnotations___n_cpar(recv) ((parser___parser_nodes___AAnnotations___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[977] + 6)))
+#define CALL_parser___parser_nodes___AAnnotations___n_cpar__eq(recv) ((parser___parser_nodes___AAnnotations___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[977] + 7)))
+#define ID_parser___parser_nodes___AAnnotation (SFT_parser___parser_nodes[978])
+#define COLOR_parser___parser_nodes___AAnnotation (SFT_parser___parser_nodes[979])
+#define ATTR_parser___parser_nodes___AAnnotation____n_atid(recv) ATTR(recv, (SFT_parser___parser_nodes[980] + 0))
+#define ATTR_parser___parser_nodes___AAnnotation____n_opar(recv) ATTR(recv, (SFT_parser___parser_nodes[980] + 1))
+#define ATTR_parser___parser_nodes___AAnnotation____n_args(recv) ATTR(recv, (SFT_parser___parser_nodes[980] + 2))
+#define ATTR_parser___parser_nodes___AAnnotation____n_cpar(recv) ATTR(recv, (SFT_parser___parser_nodes[980] + 3))
+#define INIT_TABLE_POS_parser___parser_nodes___AAnnotation (SFT_parser___parser_nodes[981] + 0)
+#define CALL_parser___parser_nodes___AAnnotation___n_atid(recv) ((parser___parser_nodes___AAnnotation___n_atid_t)CALL((recv), (SFT_parser___parser_nodes[981] + 1)))
+#define CALL_parser___parser_nodes___AAnnotation___n_atid__eq(recv) ((parser___parser_nodes___AAnnotation___n_atid__eq_t)CALL((recv), (SFT_parser___parser_nodes[981] + 2)))
+#define CALL_parser___parser_nodes___AAnnotation___n_opar(recv) ((parser___parser_nodes___AAnnotation___n_opar_t)CALL((recv), (SFT_parser___parser_nodes[981] + 3)))
+#define CALL_parser___parser_nodes___AAnnotation___n_opar__eq(recv) ((parser___parser_nodes___AAnnotation___n_opar__eq_t)CALL((recv), (SFT_parser___parser_nodes[981] + 4)))
+#define CALL_parser___parser_nodes___AAnnotation___n_args(recv) ((parser___parser_nodes___AAnnotation___n_args_t)CALL((recv), (SFT_parser___parser_nodes[981] + 5)))
+#define CALL_parser___parser_nodes___AAnnotation___n_cpar(recv) ((parser___parser_nodes___AAnnotation___n_cpar_t)CALL((recv), (SFT_parser___parser_nodes[981] + 6)))
+#define CALL_parser___parser_nodes___AAnnotation___n_cpar__eq(recv) ((parser___parser_nodes___AAnnotation___n_cpar__eq_t)CALL((recv), (SFT_parser___parser_nodes[981] + 7)))
+#define ID_parser___parser_nodes___AAtArg (SFT_parser___parser_nodes[982])
+#define COLOR_parser___parser_nodes___AAtArg (SFT_parser___parser_nodes[983])
+#define INIT_TABLE_POS_parser___parser_nodes___AAtArg (SFT_parser___parser_nodes[984] + 0)
+#define ID_parser___parser_nodes___ATypeAtArg (SFT_parser___parser_nodes[985])
+#define COLOR_parser___parser_nodes___ATypeAtArg (SFT_parser___parser_nodes[986])
+#define ATTR_parser___parser_nodes___ATypeAtArg____n_type(recv) ATTR(recv, (SFT_parser___parser_nodes[987] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___ATypeAtArg (SFT_parser___parser_nodes[988] + 0)
+#define CALL_parser___parser_nodes___ATypeAtArg___n_type(recv) ((parser___parser_nodes___ATypeAtArg___n_type_t)CALL((recv), (SFT_parser___parser_nodes[988] + 1)))
+#define CALL_parser___parser_nodes___ATypeAtArg___n_type__eq(recv) ((parser___parser_nodes___ATypeAtArg___n_type__eq_t)CALL((recv), (SFT_parser___parser_nodes[988] + 2)))
+#define ID_parser___parser_nodes___AExprAtArg (SFT_parser___parser_nodes[989])
+#define COLOR_parser___parser_nodes___AExprAtArg (SFT_parser___parser_nodes[990])
+#define ATTR_parser___parser_nodes___AExprAtArg____n_expr(recv) ATTR(recv, (SFT_parser___parser_nodes[991] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AExprAtArg (SFT_parser___parser_nodes[992] + 0)
+#define CALL_parser___parser_nodes___AExprAtArg___n_expr(recv) ((parser___parser_nodes___AExprAtArg___n_expr_t)CALL((recv), (SFT_parser___parser_nodes[992] + 1)))
+#define CALL_parser___parser_nodes___AExprAtArg___n_expr__eq(recv) ((parser___parser_nodes___AExprAtArg___n_expr__eq_t)CALL((recv), (SFT_parser___parser_nodes[992] + 2)))
+#define ID_parser___parser_nodes___AAtAtArg (SFT_parser___parser_nodes[993])
+#define COLOR_parser___parser_nodes___AAtAtArg (SFT_parser___parser_nodes[994])
+#define INIT_TABLE_POS_parser___parser_nodes___AAtAtArg (SFT_parser___parser_nodes[995] + 0)
+#define ID_parser___parser_nodes___AAtid (SFT_parser___parser_nodes[996])
+#define COLOR_parser___parser_nodes___AAtid (SFT_parser___parser_nodes[997])
+#define ATTR_parser___parser_nodes___AAtid____n_id(recv) ATTR(recv, (SFT_parser___parser_nodes[998] + 0))
+#define INIT_TABLE_POS_parser___parser_nodes___AAtid (SFT_parser___parser_nodes[999] + 0)
+#define CALL_parser___parser_nodes___AAtid___n_id(recv) ((parser___parser_nodes___AAtid___n_id_t)CALL((recv), (SFT_parser___parser_nodes[999] + 1)))
+#define CALL_parser___parser_nodes___AAtid___n_id__eq(recv) ((parser___parser_nodes___AAtid___n_id__eq_t)CALL((recv), (SFT_parser___parser_nodes[999] + 2)))
+#define ID_parser___parser_nodes___AIdAtid (SFT_parser___parser_nodes[1000])
+#define COLOR_parser___parser_nodes___AIdAtid (SFT_parser___parser_nodes[1001])
+#define INIT_TABLE_POS_parser___parser_nodes___AIdAtid (SFT_parser___parser_nodes[1002] + 0)
+#define ID_parser___parser_nodes___AKwexternAtid (SFT_parser___parser_nodes[1003])
+#define COLOR_parser___parser_nodes___AKwexternAtid (SFT_parser___parser_nodes[1004])
+#define INIT_TABLE_POS_parser___parser_nodes___AKwexternAtid (SFT_parser___parser_nodes[1005] + 0)
+#define ID_parser___parser_nodes___AKwinternAtid (SFT_parser___parser_nodes[1006])
+#define COLOR_parser___parser_nodes___AKwinternAtid (SFT_parser___parser_nodes[1007])
+#define INIT_TABLE_POS_parser___parser_nodes___AKwinternAtid (SFT_parser___parser_nodes[1008] + 0)
+#define ID_parser___parser_nodes___AKwreadableAtid (SFT_parser___parser_nodes[1009])
+#define COLOR_parser___parser_nodes___AKwreadableAtid (SFT_parser___parser_nodes[1010])
+#define INIT_TABLE_POS_parser___parser_nodes___AKwreadableAtid (SFT_parser___parser_nodes[1011] + 0)
+#define ID_parser___parser_nodes___AKwwritableAtid (SFT_parser___parser_nodes[1012])
+#define COLOR_parser___parser_nodes___AKwwritableAtid (SFT_parser___parser_nodes[1013])
+#define INIT_TABLE_POS_parser___parser_nodes___AKwwritableAtid (SFT_parser___parser_nodes[1014] + 0)
+#define ID_parser___parser_nodes___AKwimportAtid (SFT_parser___parser_nodes[1015])
+#define COLOR_parser___parser_nodes___AKwimportAtid (SFT_parser___parser_nodes[1016])
+#define INIT_TABLE_POS_parser___parser_nodes___AKwimportAtid (SFT_parser___parser_nodes[1017] + 0)
+#define ID_parser___parser_nodes___Start (SFT_parser___parser_nodes[1018])
+#define COLOR_parser___parser_nodes___Start (SFT_parser___parser_nodes[1019])
+#define ATTR_parser___parser_nodes___Start____n_base(recv) ATTR(recv, (SFT_parser___parser_nodes[1020] + 0))
+#define ATTR_parser___parser_nodes___Start____n_eof(recv) ATTR(recv, (SFT_parser___parser_nodes[1020] + 1))
+#define INIT_TABLE_POS_parser___parser_nodes___Start (SFT_parser___parser_nodes[1021] + 0)
+#define CALL_parser___parser_nodes___Start___n_base(recv) ((parser___parser_nodes___Start___n_base_t)CALL((recv), (SFT_parser___parser_nodes[1021] + 1)))
+#define CALL_parser___parser_nodes___Start___n_base__eq(recv) ((parser___parser_nodes___Start___n_base__eq_t)CALL((recv), (SFT_parser___parser_nodes[1021] + 2)))
+#define CALL_parser___parser_nodes___Start___n_eof(recv) ((parser___parser_nodes___Start___n_eof_t)CALL((recv), (SFT_parser___parser_nodes[1021] + 3)))
+#define CALL_parser___parser_nodes___Start___n_eof__eq(recv) ((parser___parser_nodes___Start___n_eof__eq_t)CALL((recv), (SFT_parser___parser_nodes[1021] + 4)))
+#define CALL_parser___parser_nodes___Start___init(recv) ((parser___parser_nodes___Start___init_t)CALL((recv), (SFT_parser___parser_nodes[1021] + 5)))
 val_t parser___parser_nodes___ANode___location(val_t p0);
 typedef val_t (*parser___parser_nodes___ANode___location_t)(val_t p0);
 val_t parser___parser_nodes___ANode___hot_location(val_t p0);
 typedef val_t (*parser___parser_nodes___ANode___hot_location_t)(val_t p0);
+void parser___parser_nodes___ANode___debug(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANode___debug_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANode___parent(val_t p0);
+typedef val_t (*parser___parser_nodes___ANode___parent_t)(val_t p0);
+void parser___parser_nodes___ANode___parent__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANode___parent__eq_t)(val_t p0, val_t p1);
 void parser___parser_nodes___ANode___init(val_t p0, int* init_table);
 typedef void (*parser___parser_nodes___ANode___init_t)(val_t p0, int* init_table);
 val_t NEW_ANode_parser___parser_nodes___ANode___init();
-void parser___parser_nodes___ANode___debug(val_t p0, val_t p1);
-typedef void (*parser___parser_nodes___ANode___debug_t)(val_t p0, val_t p1);
+void parser___parser_nodes___ANode___replace_child(val_t p0, val_t p1, val_t p2);
+typedef void (*parser___parser_nodes___ANode___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_nodes___ANode___detach(val_t p0);
+typedef void (*parser___parser_nodes___ANode___detach_t)(val_t p0);
+void parser___parser_nodes___ANode___replace_with(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANode___replace_with_t)(val_t p0, val_t p1);
+void parser___parser_nodes___ANode___visit_all(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANode___visit_all_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANodes___parent(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___parent_t)(val_t p0);
+void parser___parser_nodes___ANodes___parent__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___parent__eq_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANodes___items(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___items_t)(val_t p0);
+void parser___parser_nodes___ANodes___items__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___items__eq_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANodes___iterator(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___iterator_t)(val_t p0);
+val_t parser___parser_nodes___ANodes___length(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___length_t)(val_t p0);
+val_t parser___parser_nodes___ANodes___is_empty(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___is_empty_t)(val_t p0);
+void parser___parser_nodes___ANodes___push(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___push_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANodes___pop(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___pop_t)(val_t p0);
+void parser___parser_nodes___ANodes___unshift(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___unshift_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANodes___shift(val_t p0);
+typedef val_t (*parser___parser_nodes___ANodes___shift_t)(val_t p0);
+val_t parser___parser_nodes___ANodes___has(val_t p0, val_t p1);
+typedef val_t (*parser___parser_nodes___ANodes___has_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___ANodes_____bra(val_t p0, val_t p1);
+typedef val_t (*parser___parser_nodes___ANodes_____bra_t)(val_t p0, val_t p1);
+void parser___parser_nodes___ANodes_____braeq(val_t p0, val_t p1, val_t p2);
+typedef void (*parser___parser_nodes___ANodes_____braeq_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_nodes___ANodes___remove_at(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___remove_at_t)(val_t p0, val_t p1);
+void parser___parser_nodes___ANodes___hook_add(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___hook_add_t)(val_t p0, val_t p1);
+void parser___parser_nodes___ANodes___hook_remove(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANodes___hook_remove_t)(val_t p0, val_t p1);
+void parser___parser_nodes___ANodes___init(val_t p0, val_t p1, int* init_table);
+typedef void (*parser___parser_nodes___ANodes___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_ANodes_parser___parser_nodes___ANodes___init(val_t p0);
 val_t parser___parser_nodes___Token___text(val_t p0);
 typedef val_t (*parser___parser_nodes___Token___text_t)(val_t p0);
 void parser___parser_nodes___Token___text__eq(val_t p0, val_t p1);
 typedef void (*parser___parser_nodes___Token___text__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___Token___to_s(val_t p0);
 typedef val_t (*parser___parser_nodes___Token___to_s_t)(val_t p0);
+void parser___parser_nodes___Token___visit_all(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Token___visit_all_t)(val_t p0, val_t p1);
+void parser___parser_nodes___Token___replace_child(val_t p0, val_t p1, val_t p2);
+typedef void (*parser___parser_nodes___Token___replace_child_t)(val_t p0, val_t p1, val_t p2);
 val_t NEW_Token_parser___parser_nodes___ANode___init();
 void parser___parser_nodes___Prod___location__eq(val_t p0, val_t p1);
 typedef void (*parser___parser_nodes___Prod___location__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___Prod___n_annotations(val_t p0);
 typedef val_t (*parser___parser_nodes___Prod___n_annotations_t)(val_t p0);
+void parser___parser_nodes___Prod___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Prod___n_annotations__eq_t)(val_t p0, val_t p1);
+void parser___parser_nodes___Prod___replace_with(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Prod___replace_with_t)(val_t p0, val_t p1);
 val_t NEW_Prod_parser___parser_nodes___ANode___init();
+void parser___parser_nodes___Visitor___visit(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Visitor___visit_t)(val_t p0, val_t p1);
+void parser___parser_nodes___Visitor___enter_visit(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Visitor___enter_visit_t)(val_t p0, val_t p1);
+val_t parser___parser_nodes___Visitor___current_node(val_t p0);
+typedef val_t (*parser___parser_nodes___Visitor___current_node_t)(val_t p0);
+void parser___parser_nodes___Visitor___current_node__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Visitor___current_node__eq_t)(val_t p0, val_t p1);
+void parser___parser_nodes___Visitor___init(val_t p0, int* init_table);
+typedef void (*parser___parser_nodes___Visitor___init_t)(val_t p0, int* init_table);
+val_t NEW_Visitor_parser___parser_nodes___Visitor___init();
 val_t parser___parser_nodes___TEol___to_s(val_t p0);
 typedef val_t (*parser___parser_nodes___TEol___to_s_t)(val_t p0);
 val_t NEW_TEol_parser___parser_nodes___ANode___init();
@@ -2190,6 +2550,8 @@ val_t NEW_ALexerError_parser___parser_nodes___ANode___init();
 val_t NEW_AParserError_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AModule___n_moduledecl(val_t p0);
 typedef val_t (*parser___parser_nodes___AModule___n_moduledecl_t)(val_t p0);
+void parser___parser_nodes___AModule___n_moduledecl__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AModule___n_moduledecl__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AModule___n_imports(val_t p0);
 typedef val_t (*parser___parser_nodes___AModule___n_imports_t)(val_t p0);
 val_t parser___parser_nodes___AModule___n_extern_code_blocks(val_t p0);
@@ -2199,58 +2561,96 @@ typedef val_t (*parser___parser_nodes___AModule___n_classdefs_t)(val_t p0);
 val_t NEW_AModule_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AModuledecl___n_doc(val_t p0);
 typedef val_t (*parser___parser_nodes___AModuledecl___n_doc_t)(val_t p0);
+void parser___parser_nodes___AModuledecl___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AModuledecl___n_doc__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AModuledecl___n_kwmodule(val_t p0);
 typedef val_t (*parser___parser_nodes___AModuledecl___n_kwmodule_t)(val_t p0);
+void parser___parser_nodes___AModuledecl___n_kwmodule__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AModuledecl___n_kwmodule__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AModuledecl___n_name(val_t p0);
 typedef val_t (*parser___parser_nodes___AModuledecl___n_name_t)(val_t p0);
+void parser___parser_nodes___AModuledecl___n_name__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AModuledecl___n_name__eq_t)(val_t p0, val_t p1);
 val_t NEW_AModuledecl_parser___parser_nodes___ANode___init();
 val_t NEW_AImport_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AStdImport___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdImport___n_visibility_t)(val_t p0);
+void parser___parser_nodes___AStdImport___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdImport___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdImport___n_kwimport(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdImport___n_kwimport_t)(val_t p0);
+void parser___parser_nodes___AStdImport___n_kwimport__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdImport___n_kwimport__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdImport___n_name(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdImport___n_name_t)(val_t p0);
+void parser___parser_nodes___AStdImport___n_name__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdImport___n_name__eq_t)(val_t p0, val_t p1);
 val_t NEW_AStdImport_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ANoImport___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___ANoImport___n_visibility_t)(val_t p0);
+void parser___parser_nodes___ANoImport___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANoImport___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ANoImport___n_kwimport(val_t p0);
 typedef val_t (*parser___parser_nodes___ANoImport___n_kwimport_t)(val_t p0);
+void parser___parser_nodes___ANoImport___n_kwimport__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANoImport___n_kwimport__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ANoImport___n_kwend(val_t p0);
 typedef val_t (*parser___parser_nodes___ANoImport___n_kwend_t)(val_t p0);
+void parser___parser_nodes___ANoImport___n_kwend__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANoImport___n_kwend__eq_t)(val_t p0, val_t p1);
 val_t NEW_ANoImport_parser___parser_nodes___ANode___init();
 val_t NEW_AVisibility_parser___parser_nodes___ANode___init();
 val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___APrivateVisibility___n_kwprivate(val_t p0);
 typedef val_t (*parser___parser_nodes___APrivateVisibility___n_kwprivate_t)(val_t p0);
+void parser___parser_nodes___APrivateVisibility___n_kwprivate__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___APrivateVisibility___n_kwprivate__eq_t)(val_t p0, val_t p1);
 val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AProtectedVisibility___n_kwprotected(val_t p0);
 typedef val_t (*parser___parser_nodes___AProtectedVisibility___n_kwprotected_t)(val_t p0);
+void parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AProtectedVisibility___n_kwprotected__eq_t)(val_t p0, val_t p1);
 val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIntrudeVisibility___n_kwintrude(val_t p0);
 typedef val_t (*parser___parser_nodes___AIntrudeVisibility___n_kwintrude_t)(val_t p0);
+void parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIntrudeVisibility___n_kwintrude__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AClassdef___n_propdefs(val_t p0);
 typedef val_t (*parser___parser_nodes___AClassdef___n_propdefs_t)(val_t p0);
 val_t NEW_AClassdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AStdClassdef___n_doc(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_doc_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_doc__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___n_kwredef(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_kwredef_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_kwredef__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_visibility_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___n_classkind(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_classkind_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_classkind__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_classkind__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_id_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___n_formaldefs(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_formaldefs_t)(val_t p0);
 val_t parser___parser_nodes___AStdClassdef___n_extern_code_block(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_extern_code_block_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_extern_code_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_extern_code_block__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___n_superclasses(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_superclasses_t)(val_t p0);
 val_t parser___parser_nodes___AStdClassdef___n_kwend(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___n_kwend_t)(val_t p0);
+void parser___parser_nodes___AStdClassdef___n_kwend__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStdClassdef___n_kwend__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AStdClassdef___hot_location(val_t p0);
 typedef val_t (*parser___parser_nodes___AStdClassdef___hot_location_t)(val_t p0);
 val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init();
@@ -2259,101 +2659,173 @@ val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init();
 val_t NEW_AClasskind_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AConcreteClasskind___n_kwclass(val_t p0);
 typedef val_t (*parser___parser_nodes___AConcreteClasskind___n_kwclass_t)(val_t p0);
+void parser___parser_nodes___AConcreteClasskind___n_kwclass__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AConcreteClasskind___n_kwclass__eq_t)(val_t p0, val_t p1);
 val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAbstractClasskind___n_kwabstract(val_t p0);
 typedef val_t (*parser___parser_nodes___AAbstractClasskind___n_kwabstract_t)(val_t p0);
+void parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAbstractClasskind___n_kwabstract__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAbstractClasskind___n_kwclass(val_t p0);
 typedef val_t (*parser___parser_nodes___AAbstractClasskind___n_kwclass_t)(val_t p0);
+void parser___parser_nodes___AAbstractClasskind___n_kwclass__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAbstractClasskind___n_kwclass__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AInterfaceClasskind___n_kwinterface(val_t p0);
 typedef val_t (*parser___parser_nodes___AInterfaceClasskind___n_kwinterface_t)(val_t p0);
+void parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInterfaceClasskind___n_kwinterface__eq_t)(val_t p0, val_t p1);
 val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AEnumClasskind___n_kwenum(val_t p0);
 typedef val_t (*parser___parser_nodes___AEnumClasskind___n_kwenum_t)(val_t p0);
+void parser___parser_nodes___AEnumClasskind___n_kwenum__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AEnumClasskind___n_kwenum__eq_t)(val_t p0, val_t p1);
 val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExternClasskind___n_kwextern(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternClasskind___n_kwextern_t)(val_t p0);
+void parser___parser_nodes___AExternClasskind___n_kwextern__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternClasskind___n_kwextern__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AExternClasskind___n_kwclass(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternClasskind___n_kwclass_t)(val_t p0);
+void parser___parser_nodes___AExternClasskind___n_kwclass__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternClasskind___n_kwclass__eq_t)(val_t p0, val_t p1);
 val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AFormaldef___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AFormaldef___n_id_t)(val_t p0);
+void parser___parser_nodes___AFormaldef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFormaldef___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AFormaldef___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AFormaldef___n_type_t)(val_t p0);
+void parser___parser_nodes___AFormaldef___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFormaldef___n_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_AFormaldef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASuperclass___n_kwsuper(val_t p0);
 typedef val_t (*parser___parser_nodes___ASuperclass___n_kwsuper_t)(val_t p0);
+void parser___parser_nodes___ASuperclass___n_kwsuper__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASuperclass___n_kwsuper__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASuperclass___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ASuperclass___n_type_t)(val_t p0);
+void parser___parser_nodes___ASuperclass___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASuperclass___n_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_ASuperclass_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___APropdef___n_doc(val_t p0);
 typedef val_t (*parser___parser_nodes___APropdef___n_doc_t)(val_t p0);
+void parser___parser_nodes___APropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___APropdef___n_doc__eq_t)(val_t p0, val_t p1);
 val_t NEW_APropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAttrPropdef___n_kwredef(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_kwredef_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_visibility_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_kwvar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_kwvar_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_kwvar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_kwvar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_id_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_id2(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_id2_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_id2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_id2__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_type_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_readable(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_readable_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_readable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_readable__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_writable(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_writable_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_writable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_writable__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___n_expr_t)(val_t p0);
+void parser___parser_nodes___AAttrPropdef___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrPropdef___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrPropdef___hot_location(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrPropdef___hot_location_t)(val_t p0);
 val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AMethPropdef___n_kwredef(val_t p0);
 typedef val_t (*parser___parser_nodes___AMethPropdef___n_kwredef_t)(val_t p0);
+void parser___parser_nodes___AMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AMethPropdef___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___AMethPropdef___n_visibility_t)(val_t p0);
+void parser___parser_nodes___AMethPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AMethPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AMethPropdef___n_methid(val_t p0);
 typedef val_t (*parser___parser_nodes___AMethPropdef___n_methid_t)(val_t p0);
+void parser___parser_nodes___AMethPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AMethPropdef___n_methid__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AMethPropdef___n_signature(val_t p0);
 typedef val_t (*parser___parser_nodes___AMethPropdef___n_signature_t)(val_t p0);
+void parser___parser_nodes___AMethPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AMethPropdef___n_signature__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AMethPropdef___hot_location(val_t p0);
 typedef val_t (*parser___parser_nodes___AMethPropdef___hot_location_t)(val_t p0);
 val_t NEW_AMethPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ADeferredMethPropdef___n_kwmeth(val_t p0);
 typedef val_t (*parser___parser_nodes___ADeferredMethPropdef___n_kwmeth_t)(val_t p0);
+void parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADeferredMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
 val_t NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AInternMethPropdef___n_kwmeth(val_t p0);
 typedef val_t (*parser___parser_nodes___AInternMethPropdef___n_kwmeth_t)(val_t p0);
+void parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInternMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
 val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExternPropdef___n_extern(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternPropdef___n_extern_t)(val_t p0);
+void parser___parser_nodes___AExternPropdef___n_extern__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternPropdef___n_extern__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AExternPropdef___n_extern_calls(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternPropdef___n_extern_calls_t)(val_t p0);
+void parser___parser_nodes___AExternPropdef___n_extern_calls__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternPropdef___n_extern_calls__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AExternPropdef___n_extern_code_block(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternPropdef___n_extern_code_block_t)(val_t p0);
+void parser___parser_nodes___AExternPropdef___n_extern_code_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternPropdef___n_extern_code_block__eq_t)(val_t p0, val_t p1);
 val_t NEW_AExternPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExternMethPropdef___n_kwmeth(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternMethPropdef___n_kwmeth_t)(val_t p0);
+void parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
 val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AConcreteMethPropdef___n_kwmeth(val_t p0);
 typedef val_t (*parser___parser_nodes___AConcreteMethPropdef___n_kwmeth_t)(val_t p0);
+void parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AConcreteMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AConcreteMethPropdef___n_block(val_t p0);
 typedef val_t (*parser___parser_nodes___AConcreteMethPropdef___n_block_t)(val_t p0);
+void parser___parser_nodes___AConcreteMethPropdef___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AConcreteMethPropdef___n_block__eq_t)(val_t p0, val_t p1);
 val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init();
 val_t NEW_AInitPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AConcreteInitPropdef___n_kwinit(val_t p0);
 typedef val_t (*parser___parser_nodes___AConcreteInitPropdef___n_kwinit_t)(val_t p0);
+void parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AConcreteInitPropdef___n_kwinit__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AConcreteInitPropdef___hot_location(val_t p0);
 typedef val_t (*parser___parser_nodes___AConcreteInitPropdef___hot_location_t)(val_t p0);
 val_t NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExternInitPropdef___n_kwnew(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternInitPropdef___n_kwnew_t)(val_t p0);
+void parser___parser_nodes___AExternInitPropdef___n_kwnew__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternInitPropdef___n_kwnew__eq_t)(val_t p0, val_t p1);
 val_t NEW_AExternInitPropdef_parser___parser_nodes___ANode___init();
 val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExternCalls___n_kwimport(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternCalls___n_kwimport_t)(val_t p0);
+void parser___parser_nodes___AExternCalls___n_kwimport__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternCalls___n_kwimport__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AExternCalls___n_extern_calls(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternCalls___n_extern_calls_t)(val_t p0);
 val_t NEW_AExternCalls_parser___parser_nodes___ANode___init();
@@ -2361,102 +2833,176 @@ val_t NEW_AExternCall_parser___parser_nodes___ANode___init();
 val_t NEW_APropExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALocalPropExternCall___n_methid(val_t p0);
 typedef val_t (*parser___parser_nodes___ALocalPropExternCall___n_methid_t)(val_t p0);
+void parser___parser_nodes___ALocalPropExternCall___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALocalPropExternCall___n_methid__eq_t)(val_t p0, val_t p1);
 val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AFullPropExternCall___n_classid(val_t p0);
 typedef val_t (*parser___parser_nodes___AFullPropExternCall___n_classid_t)(val_t p0);
+void parser___parser_nodes___AFullPropExternCall___n_classid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFullPropExternCall___n_classid__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AFullPropExternCall___n_quad(val_t p0);
 typedef val_t (*parser___parser_nodes___AFullPropExternCall___n_quad_t)(val_t p0);
+void parser___parser_nodes___AFullPropExternCall___n_quad__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFullPropExternCall___n_quad__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AFullPropExternCall___n_methid(val_t p0);
 typedef val_t (*parser___parser_nodes___AFullPropExternCall___n_methid_t)(val_t p0);
+void parser___parser_nodes___AFullPropExternCall___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFullPropExternCall___n_methid__eq_t)(val_t p0, val_t p1);
 val_t NEW_AFullPropExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AInitPropExternCall___n_classid(val_t p0);
 typedef val_t (*parser___parser_nodes___AInitPropExternCall___n_classid_t)(val_t p0);
+void parser___parser_nodes___AInitPropExternCall___n_classid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInitPropExternCall___n_classid__eq_t)(val_t p0, val_t p1);
 val_t NEW_AInitPropExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASuperExternCall___n_kwsuper(val_t p0);
 typedef val_t (*parser___parser_nodes___ASuperExternCall___n_kwsuper_t)(val_t p0);
+void parser___parser_nodes___ASuperExternCall___n_kwsuper__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASuperExternCall___n_kwsuper__eq_t)(val_t p0, val_t p1);
 val_t NEW_ASuperExternCall_parser___parser_nodes___ANode___init();
 val_t NEW_ACastExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ACastAsExternCall___n_from_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ACastAsExternCall___n_from_type_t)(val_t p0);
+void parser___parser_nodes___ACastAsExternCall___n_from_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACastAsExternCall___n_from_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ACastAsExternCall___n_kwas(val_t p0);
 typedef val_t (*parser___parser_nodes___ACastAsExternCall___n_kwas_t)(val_t p0);
+void parser___parser_nodes___ACastAsExternCall___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACastAsExternCall___n_kwas__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ACastAsExternCall___n_to_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ACastAsExternCall___n_to_type_t)(val_t p0);
+void parser___parser_nodes___ACastAsExternCall___n_to_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACastAsExternCall___n_to_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAsNullableExternCall___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNullableExternCall___n_type_t)(val_t p0);
+void parser___parser_nodes___AAsNullableExternCall___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNullableExternCall___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNullableExternCall___n_kwas(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNullableExternCall___n_kwas_t)(val_t p0);
+void parser___parser_nodes___AAsNullableExternCall___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNullableExternCall___n_kwas__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNullableExternCall___n_kwnullable(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNullableExternCall___n_kwnullable_t)(val_t p0);
+void parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNullableExternCall___n_kwnullable__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotNullableExternCall___n_type_t)(val_t p0);
+void parser___parser_nodes___AAsNotNullableExternCall___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotNullableExternCall___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwas(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotNullableExternCall___n_kwas_t)(val_t p0);
+void parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotNullableExternCall___n_kwas__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwnot(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotNullableExternCall___n_kwnot_t)(val_t p0);
+void parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotNullableExternCall___n_kwnot__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable_t)(val_t p0);
+void parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ATypePropdef___n_kwredef(val_t p0);
 typedef val_t (*parser___parser_nodes___ATypePropdef___n_kwredef_t)(val_t p0);
+void parser___parser_nodes___ATypePropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATypePropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ATypePropdef___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___ATypePropdef___n_visibility_t)(val_t p0);
+void parser___parser_nodes___ATypePropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATypePropdef___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ATypePropdef___n_kwtype(val_t p0);
 typedef val_t (*parser___parser_nodes___ATypePropdef___n_kwtype_t)(val_t p0);
+void parser___parser_nodes___ATypePropdef___n_kwtype__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATypePropdef___n_kwtype__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ATypePropdef___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___ATypePropdef___n_id_t)(val_t p0);
+void parser___parser_nodes___ATypePropdef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATypePropdef___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ATypePropdef___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ATypePropdef___n_type_t)(val_t p0);
+void parser___parser_nodes___ATypePropdef___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATypePropdef___n_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAble___n_visibility(val_t p0);
 typedef val_t (*parser___parser_nodes___AAble___n_visibility_t)(val_t p0);
+void parser___parser_nodes___AAble___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAble___n_visibility__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAble___n_kwredef(val_t p0);
 typedef val_t (*parser___parser_nodes___AAble___n_kwredef_t)(val_t p0);
+void parser___parser_nodes___AAble___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAble___n_kwredef__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAble_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AReadAble___n_kwreadable(val_t p0);
 typedef val_t (*parser___parser_nodes___AReadAble___n_kwreadable_t)(val_t p0);
+void parser___parser_nodes___AReadAble___n_kwreadable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AReadAble___n_kwreadable__eq_t)(val_t p0, val_t p1);
 val_t NEW_AReadAble_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AWriteAble___n_kwwritable(val_t p0);
 typedef val_t (*parser___parser_nodes___AWriteAble___n_kwwritable_t)(val_t p0);
+void parser___parser_nodes___AWriteAble___n_kwwritable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AWriteAble___n_kwwritable__eq_t)(val_t p0, val_t p1);
 val_t NEW_AWriteAble_parser___parser_nodes___ANode___init();
 val_t NEW_AMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIdMethid___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AIdMethid___n_id_t)(val_t p0);
+void parser___parser_nodes___AIdMethid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIdMethid___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIdMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___APlusMethid___n_plus(val_t p0);
 typedef val_t (*parser___parser_nodes___APlusMethid___n_plus_t)(val_t p0);
+void parser___parser_nodes___APlusMethid___n_plus__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___APlusMethid___n_plus__eq_t)(val_t p0, val_t p1);
 val_t NEW_APlusMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AMinusMethid___n_minus(val_t p0);
 typedef val_t (*parser___parser_nodes___AMinusMethid___n_minus_t)(val_t p0);
+void parser___parser_nodes___AMinusMethid___n_minus__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AMinusMethid___n_minus__eq_t)(val_t p0, val_t p1);
 val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AStarMethid___n_star(val_t p0);
 typedef val_t (*parser___parser_nodes___AStarMethid___n_star_t)(val_t p0);
+void parser___parser_nodes___AStarMethid___n_star__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStarMethid___n_star__eq_t)(val_t p0, val_t p1);
 val_t NEW_AStarMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASlashMethid___n_slash(val_t p0);
 typedef val_t (*parser___parser_nodes___ASlashMethid___n_slash_t)(val_t p0);
+void parser___parser_nodes___ASlashMethid___n_slash__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASlashMethid___n_slash__eq_t)(val_t p0, val_t p1);
 val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___APercentMethid___n_percent(val_t p0);
 typedef val_t (*parser___parser_nodes___APercentMethid___n_percent_t)(val_t p0);
+void parser___parser_nodes___APercentMethid___n_percent__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___APercentMethid___n_percent__eq_t)(val_t p0, val_t p1);
 val_t NEW_APercentMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AEqMethid___n_eq(val_t p0);
 typedef val_t (*parser___parser_nodes___AEqMethid___n_eq_t)(val_t p0);
+void parser___parser_nodes___AEqMethid___n_eq__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AEqMethid___n_eq__eq_t)(val_t p0, val_t p1);
 val_t NEW_AEqMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ANeMethid___n_ne(val_t p0);
 typedef val_t (*parser___parser_nodes___ANeMethid___n_ne_t)(val_t p0);
+void parser___parser_nodes___ANeMethid___n_ne__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANeMethid___n_ne__eq_t)(val_t p0, val_t p1);
 val_t NEW_ANeMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALeMethid___n_le(val_t p0);
 typedef val_t (*parser___parser_nodes___ALeMethid___n_le_t)(val_t p0);
+void parser___parser_nodes___ALeMethid___n_le__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALeMethid___n_le__eq_t)(val_t p0, val_t p1);
 val_t NEW_ALeMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AGeMethid___n_ge(val_t p0);
 typedef val_t (*parser___parser_nodes___AGeMethid___n_ge_t)(val_t p0);
+void parser___parser_nodes___AGeMethid___n_ge__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AGeMethid___n_ge__eq_t)(val_t p0, val_t p1);
 val_t NEW_AGeMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALtMethid___n_lt(val_t p0);
 typedef val_t (*parser___parser_nodes___ALtMethid___n_lt_t)(val_t p0);
+void parser___parser_nodes___ALtMethid___n_lt__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALtMethid___n_lt__eq_t)(val_t p0, val_t p1);
 val_t NEW_ALtMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AGtMethid___n_gt(val_t p0);
 typedef val_t (*parser___parser_nodes___AGtMethid___n_gt_t)(val_t p0);
+void parser___parser_nodes___AGtMethid___n_gt__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AGtMethid___n_gt__eq_t)(val_t p0, val_t p1);
 val_t NEW_AGtMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALlMethid___n_ll(val_t p0);
 typedef val_t (*parser___parser_nodes___ALlMethid___n_ll_t)(val_t p0);
@@ -2470,211 +3016,371 @@ typedef void (*parser___parser_nodes___AGgMethid___n_gg__eq_t)(val_t p0, val_t p
 val_t NEW_AGgMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABraMethid___n_obra(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraMethid___n_obra_t)(val_t p0);
+void parser___parser_nodes___ABraMethid___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraMethid___n_obra__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ABraMethid___n_cbra(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraMethid___n_cbra_t)(val_t p0);
+void parser___parser_nodes___ABraMethid___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraMethid___n_cbra__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABraMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AStarshipMethid___n_starship(val_t p0);
 typedef val_t (*parser___parser_nodes___AStarshipMethid___n_starship_t)(val_t p0);
+void parser___parser_nodes___AStarshipMethid___n_starship__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStarshipMethid___n_starship__eq_t)(val_t p0, val_t p1);
 val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAssignMethid___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssignMethid___n_id_t)(val_t p0);
+void parser___parser_nodes___AAssignMethid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssignMethid___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAssignMethid___n_assign(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssignMethid___n_assign_t)(val_t p0);
+void parser___parser_nodes___AAssignMethid___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssignMethid___n_assign__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABraassignMethid___n_obra(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraassignMethid___n_obra_t)(val_t p0);
+void parser___parser_nodes___ABraassignMethid___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraassignMethid___n_obra__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ABraassignMethid___n_cbra(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraassignMethid___n_cbra_t)(val_t p0);
+void parser___parser_nodes___ABraassignMethid___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraassignMethid___n_cbra__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ABraassignMethid___n_assign(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraassignMethid___n_assign_t)(val_t p0);
+void parser___parser_nodes___ABraassignMethid___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraassignMethid___n_assign__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASignature___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___ASignature___n_opar_t)(val_t p0);
+void parser___parser_nodes___ASignature___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASignature___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASignature___n_params(val_t p0);
 typedef val_t (*parser___parser_nodes___ASignature___n_params_t)(val_t p0);
 val_t parser___parser_nodes___ASignature___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___ASignature___n_cpar_t)(val_t p0);
+void parser___parser_nodes___ASignature___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASignature___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASignature___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ASignature___n_type_t)(val_t p0);
+void parser___parser_nodes___ASignature___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASignature___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASignature___n_closure_decls(val_t p0);
 typedef val_t (*parser___parser_nodes___ASignature___n_closure_decls_t)(val_t p0);
 val_t NEW_ASignature_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AParam___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AParam___n_id_t)(val_t p0);
+void parser___parser_nodes___AParam___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParam___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AParam___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AParam___n_type_t)(val_t p0);
+void parser___parser_nodes___AParam___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParam___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AParam___n_dotdotdot(val_t p0);
 typedef val_t (*parser___parser_nodes___AParam___n_dotdotdot_t)(val_t p0);
+void parser___parser_nodes___AParam___n_dotdotdot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParam___n_dotdotdot__eq_t)(val_t p0, val_t p1);
 val_t NEW_AParam_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AClosureDecl___n_kwbreak(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDecl___n_kwbreak_t)(val_t p0);
+void parser___parser_nodes___AClosureDecl___n_kwbreak__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDecl___n_kwbreak__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDecl___n_bang(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDecl___n_bang_t)(val_t p0);
+void parser___parser_nodes___AClosureDecl___n_bang__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDecl___n_bang__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDecl___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDecl___n_id_t)(val_t p0);
+void parser___parser_nodes___AClosureDecl___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDecl___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDecl___n_signature(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDecl___n_signature_t)(val_t p0);
+void parser___parser_nodes___AClosureDecl___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDecl___n_signature__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDecl___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDecl___n_expr_t)(val_t p0);
+void parser___parser_nodes___AClosureDecl___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDecl___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AType___n_kwnullable(val_t p0);
 typedef val_t (*parser___parser_nodes___AType___n_kwnullable_t)(val_t p0);
+void parser___parser_nodes___AType___n_kwnullable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AType___n_kwnullable__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AType___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AType___n_id_t)(val_t p0);
+void parser___parser_nodes___AType___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AType___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AType___n_types(val_t p0);
 typedef val_t (*parser___parser_nodes___AType___n_types_t)(val_t p0);
 val_t NEW_AType_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALabel___n_kwlabel(val_t p0);
 typedef val_t (*parser___parser_nodes___ALabel___n_kwlabel_t)(val_t p0);
+void parser___parser_nodes___ALabel___n_kwlabel__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALabel___n_kwlabel__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ALabel___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___ALabel___n_id_t)(val_t p0);
+void parser___parser_nodes___ALabel___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALabel___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_ALabel_parser___parser_nodes___ANode___init();
 val_t NEW_AExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABlockExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___ABlockExpr___n_expr_t)(val_t p0);
 val_t parser___parser_nodes___ABlockExpr___n_kwend(val_t p0);
 typedef val_t (*parser___parser_nodes___ABlockExpr___n_kwend_t)(val_t p0);
+void parser___parser_nodes___ABlockExpr___n_kwend__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABlockExpr___n_kwend__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABlockExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AVardeclExpr___n_kwvar(val_t p0);
 typedef val_t (*parser___parser_nodes___AVardeclExpr___n_kwvar_t)(val_t p0);
+void parser___parser_nodes___AVardeclExpr___n_kwvar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AVardeclExpr___n_kwvar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AVardeclExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AVardeclExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___AVardeclExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AVardeclExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AVardeclExpr___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AVardeclExpr___n_type_t)(val_t p0);
+void parser___parser_nodes___AVardeclExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AVardeclExpr___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AVardeclExpr___n_assign(val_t p0);
 typedef val_t (*parser___parser_nodes___AVardeclExpr___n_assign_t)(val_t p0);
+void parser___parser_nodes___AVardeclExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AVardeclExpr___n_assign__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AVardeclExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AVardeclExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AVardeclExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AVardeclExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AReturnExpr___n_kwreturn(val_t p0);
 typedef val_t (*parser___parser_nodes___AReturnExpr___n_kwreturn_t)(val_t p0);
+void parser___parser_nodes___AReturnExpr___n_kwreturn__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AReturnExpr___n_kwreturn__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AReturnExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AReturnExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AReturnExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AReturnExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALabelable___n_label(val_t p0);
 typedef val_t (*parser___parser_nodes___ALabelable___n_label_t)(val_t p0);
+void parser___parser_nodes___ALabelable___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALabelable___n_label__eq_t)(val_t p0, val_t p1);
 val_t NEW_ALabelable_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABreakExpr___n_kwbreak(val_t p0);
 typedef val_t (*parser___parser_nodes___ABreakExpr___n_kwbreak_t)(val_t p0);
+void parser___parser_nodes___ABreakExpr___n_kwbreak__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABreakExpr___n_kwbreak__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ABreakExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___ABreakExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___ABreakExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABreakExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAbortExpr___n_kwabort(val_t p0);
 typedef val_t (*parser___parser_nodes___AAbortExpr___n_kwabort_t)(val_t p0);
+void parser___parser_nodes___AAbortExpr___n_kwabort__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAbortExpr___n_kwabort__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AContinueExpr___n_kwcontinue(val_t p0);
 typedef val_t (*parser___parser_nodes___AContinueExpr___n_kwcontinue_t)(val_t p0);
+void parser___parser_nodes___AContinueExpr___n_kwcontinue__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AContinueExpr___n_kwcontinue__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AContinueExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AContinueExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AContinueExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AContinueExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ADoExpr___n_kwdo(val_t p0);
 typedef val_t (*parser___parser_nodes___ADoExpr___n_kwdo_t)(val_t p0);
+void parser___parser_nodes___ADoExpr___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADoExpr___n_kwdo__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ADoExpr___n_block(val_t p0);
 typedef val_t (*parser___parser_nodes___ADoExpr___n_block_t)(val_t p0);
+void parser___parser_nodes___ADoExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADoExpr___n_block__eq_t)(val_t p0, val_t p1);
 val_t NEW_ADoExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIfExpr___n_kwif(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfExpr___n_kwif_t)(val_t p0);
+void parser___parser_nodes___AIfExpr___n_kwif__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfExpr___n_kwif__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AIfExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfExpr___n_then(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfExpr___n_then_t)(val_t p0);
+void parser___parser_nodes___AIfExpr___n_then__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfExpr___n_then__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfExpr___n_else(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfExpr___n_else_t)(val_t p0);
+void parser___parser_nodes___AIfExpr___n_else__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfExpr___n_else__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIfExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIfexprExpr___n_kwif(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfexprExpr___n_kwif_t)(val_t p0);
+void parser___parser_nodes___AIfexprExpr___n_kwif__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfexprExpr___n_kwif__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfexprExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfexprExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AIfexprExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfexprExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfexprExpr___n_kwthen(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfexprExpr___n_kwthen_t)(val_t p0);
+void parser___parser_nodes___AIfexprExpr___n_kwthen__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfexprExpr___n_kwthen__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfexprExpr___n_then(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfexprExpr___n_then_t)(val_t p0);
+void parser___parser_nodes___AIfexprExpr___n_then__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfexprExpr___n_then__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfexprExpr___n_kwelse(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfexprExpr___n_kwelse_t)(val_t p0);
+void parser___parser_nodes___AIfexprExpr___n_kwelse__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfexprExpr___n_kwelse__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIfexprExpr___n_else(val_t p0);
 typedef val_t (*parser___parser_nodes___AIfexprExpr___n_else_t)(val_t p0);
+void parser___parser_nodes___AIfexprExpr___n_else__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIfexprExpr___n_else__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AWhileExpr___n_kwwhile(val_t p0);
 typedef val_t (*parser___parser_nodes___AWhileExpr___n_kwwhile_t)(val_t p0);
+void parser___parser_nodes___AWhileExpr___n_kwwhile__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AWhileExpr___n_kwwhile__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AWhileExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AWhileExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AWhileExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AWhileExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AWhileExpr___n_kwdo(val_t p0);
 typedef val_t (*parser___parser_nodes___AWhileExpr___n_kwdo_t)(val_t p0);
+void parser___parser_nodes___AWhileExpr___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AWhileExpr___n_kwdo__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AWhileExpr___n_block(val_t p0);
 typedef val_t (*parser___parser_nodes___AWhileExpr___n_block_t)(val_t p0);
+void parser___parser_nodes___AWhileExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AWhileExpr___n_block__eq_t)(val_t p0, val_t p1);
 val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ALoopExpr___n_kwloop(val_t p0);
 typedef val_t (*parser___parser_nodes___ALoopExpr___n_kwloop_t)(val_t p0);
+void parser___parser_nodes___ALoopExpr___n_kwloop__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALoopExpr___n_kwloop__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ALoopExpr___n_block(val_t p0);
 typedef val_t (*parser___parser_nodes___ALoopExpr___n_block_t)(val_t p0);
+void parser___parser_nodes___ALoopExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ALoopExpr___n_block__eq_t)(val_t p0, val_t p1);
 val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AForExpr___n_kwfor(val_t p0);
 typedef val_t (*parser___parser_nodes___AForExpr___n_kwfor_t)(val_t p0);
+void parser___parser_nodes___AForExpr___n_kwfor__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AForExpr___n_kwfor__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AForExpr___n_ids(val_t p0);
 typedef val_t (*parser___parser_nodes___AForExpr___n_ids_t)(val_t p0);
 val_t parser___parser_nodes___AForExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AForExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AForExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AForExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AForExpr___n_kwdo(val_t p0);
 typedef val_t (*parser___parser_nodes___AForExpr___n_kwdo_t)(val_t p0);
+void parser___parser_nodes___AForExpr___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AForExpr___n_kwdo__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AForExpr___n_block(val_t p0);
 typedef val_t (*parser___parser_nodes___AForExpr___n_block_t)(val_t p0);
+void parser___parser_nodes___AForExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AForExpr___n_block__eq_t)(val_t p0, val_t p1);
 val_t NEW_AForExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAssertExpr___n_kwassert(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssertExpr___n_kwassert_t)(val_t p0);
+void parser___parser_nodes___AAssertExpr___n_kwassert__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssertExpr___n_kwassert__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAssertExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssertExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___AAssertExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssertExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAssertExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssertExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AAssertExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssertExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAssertExpr___n_else(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssertExpr___n_else_t)(val_t p0);
+void parser___parser_nodes___AAssertExpr___n_else__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssertExpr___n_else__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAssignFormExpr___n_assign(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssignFormExpr___n_assign_t)(val_t p0);
+void parser___parser_nodes___AAssignFormExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssignFormExpr___n_assign__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAssignFormExpr___n_value(val_t p0);
 typedef val_t (*parser___parser_nodes___AAssignFormExpr___n_value_t)(val_t p0);
+void parser___parser_nodes___AAssignFormExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAssignFormExpr___n_value__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAssignFormExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AReassignFormExpr___n_assign_op(val_t p0);
 typedef val_t (*parser___parser_nodes___AReassignFormExpr___n_assign_op_t)(val_t p0);
+void parser___parser_nodes___AReassignFormExpr___n_assign_op__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AReassignFormExpr___n_assign_op__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AReassignFormExpr___n_value(val_t p0);
 typedef val_t (*parser___parser_nodes___AReassignFormExpr___n_value_t)(val_t p0);
+void parser___parser_nodes___AReassignFormExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AReassignFormExpr___n_value__eq_t)(val_t p0, val_t p1);
 val_t NEW_AReassignFormExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AOnceExpr___n_kwonce(val_t p0);
 typedef val_t (*parser___parser_nodes___AOnceExpr___n_kwonce_t)(val_t p0);
+void parser___parser_nodes___AOnceExpr___n_kwonce__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOnceExpr___n_kwonce__eq_t)(val_t p0, val_t p1);
 val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASendExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___ASendExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___ASendExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASendExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASendExpr___n_closure_defs(val_t p0);
 typedef val_t (*parser___parser_nodes___ASendExpr___n_closure_defs_t)(val_t p0);
 val_t NEW_ASendExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABinopExpr___n_expr2(val_t p0);
 typedef val_t (*parser___parser_nodes___ABinopExpr___n_expr2_t)(val_t p0);
+void parser___parser_nodes___ABinopExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABinopExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABinopExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ABoolExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AOrExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AOrExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AOrExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOrExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AOrExpr___n_expr2(val_t p0);
 typedef val_t (*parser___parser_nodes___AOrExpr___n_expr2_t)(val_t p0);
+void parser___parser_nodes___AOrExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOrExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 val_t NEW_AOrExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAndExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AAndExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AAndExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAndExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAndExpr___n_expr2(val_t p0);
 typedef val_t (*parser___parser_nodes___AAndExpr___n_expr2_t)(val_t p0);
+void parser___parser_nodes___AAndExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAndExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAndExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AOrElseExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AOrElseExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AOrElseExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOrElseExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AOrElseExpr___n_expr2(val_t p0);
 typedef val_t (*parser___parser_nodes___AOrElseExpr___n_expr2_t)(val_t p0);
+void parser___parser_nodes___AOrElseExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOrElseExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ANotExpr___n_kwnot(val_t p0);
 typedef val_t (*parser___parser_nodes___ANotExpr___n_kwnot_t)(val_t p0);
+void parser___parser_nodes___ANotExpr___n_kwnot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANotExpr___n_kwnot__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ANotExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___ANotExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___ANotExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANotExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_ANotExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AEqExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AEeExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AEeExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AEeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AEeExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AEeExpr___n_expr2(val_t p0);
 typedef val_t (*parser___parser_nodes___AEeExpr___n_expr2_t)(val_t p0);
+void parser___parser_nodes___AEeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AEeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 val_t NEW_AEeExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ANeExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ALtExpr_parser___parser_nodes___ANode___init();
@@ -2685,8 +3391,12 @@ val_t NEW_AGeExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AGgExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIsaExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AIsaExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AIsaExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIsaExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AIsaExpr___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AIsaExpr___n_type_t)(val_t p0);
+void parser___parser_nodes___AIsaExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIsaExpr___n_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init();
 val_t NEW_APlusExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AMinusExpr_parser___parser_nodes___ANode___init();
@@ -2696,27 +3406,45 @@ val_t NEW_ASlashExpr_parser___parser_nodes___ANode___init();
 val_t NEW_APercentExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AUminusExpr___n_minus(val_t p0);
 typedef val_t (*parser___parser_nodes___AUminusExpr___n_minus_t)(val_t p0);
+void parser___parser_nodes___AUminusExpr___n_minus__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AUminusExpr___n_minus__eq_t)(val_t p0, val_t p1);
 val_t NEW_AUminusExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ANewExpr___n_kwnew(val_t p0);
 typedef val_t (*parser___parser_nodes___ANewExpr___n_kwnew_t)(val_t p0);
+void parser___parser_nodes___ANewExpr___n_kwnew__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANewExpr___n_kwnew__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ANewExpr___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ANewExpr___n_type_t)(val_t p0);
+void parser___parser_nodes___ANewExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANewExpr___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ANewExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___ANewExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___ANewExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANewExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ANewExpr___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___ANewExpr___n_args_t)(val_t p0);
+void parser___parser_nodes___ANewExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANewExpr___n_args__eq_t)(val_t p0, val_t p1);
 val_t NEW_ANewExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAttrFormExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrFormExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AAttrFormExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrFormExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAttrFormExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AAttrFormExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___AAttrFormExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAttrFormExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAttrFormExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ACallFormExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___ACallFormExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___ACallFormExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACallFormExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ACallFormExpr___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___ACallFormExpr___n_args_t)(val_t p0);
+void parser___parser_nodes___ACallFormExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACallFormExpr___n_args__eq_t)(val_t p0, val_t p1);
 val_t NEW_ACallFormExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ASendReassignFormExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init();
@@ -2725,29 +3453,47 @@ val_t NEW_ACallAssignExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ACallReassignExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASuperExpr___n_qualified(val_t p0);
 typedef val_t (*parser___parser_nodes___ASuperExpr___n_qualified_t)(val_t p0);
+void parser___parser_nodes___ASuperExpr___n_qualified__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASuperExpr___n_qualified__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASuperExpr___n_kwsuper(val_t p0);
 typedef val_t (*parser___parser_nodes___ASuperExpr___n_kwsuper_t)(val_t p0);
+void parser___parser_nodes___ASuperExpr___n_kwsuper__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASuperExpr___n_kwsuper__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ASuperExpr___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___ASuperExpr___n_args_t)(val_t p0);
+void parser___parser_nodes___ASuperExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASuperExpr___n_args__eq_t)(val_t p0, val_t p1);
 val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AInitExpr___n_kwinit(val_t p0);
 typedef val_t (*parser___parser_nodes___AInitExpr___n_kwinit_t)(val_t p0);
+void parser___parser_nodes___AInitExpr___n_kwinit__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInitExpr___n_kwinit__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AInitExpr___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___AInitExpr___n_args_t)(val_t p0);
+void parser___parser_nodes___AInitExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInitExpr___n_args__eq_t)(val_t p0, val_t p1);
 val_t NEW_AInitExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABraFormExpr___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraFormExpr___n_args_t)(val_t p0);
+void parser___parser_nodes___ABraFormExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraFormExpr___n_args__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABraFormExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ABraExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ABraAssignExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AVarFormExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AVarFormExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___AVarFormExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AVarFormExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_AVarFormExpr_parser___parser_nodes___ANode___init();
 val_t NEW_ABraReassignExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AClosureCallExpr___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureCallExpr___n_id_t)(val_t p0);
+void parser___parser_nodes___AClosureCallExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureCallExpr___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureCallExpr___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureCallExpr___n_args_t)(val_t p0);
+void parser___parser_nodes___AClosureCallExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureCallExpr___n_args__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureCallExpr___n_closure_defs(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureCallExpr___n_closure_defs_t)(val_t p0);
 val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init();
@@ -2756,46 +3502,76 @@ val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ARangeExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___ARangeExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___ARangeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ARangeExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ARangeExpr___n_expr2(val_t p0);
 typedef val_t (*parser___parser_nodes___ARangeExpr___n_expr2_t)(val_t p0);
+void parser___parser_nodes___ARangeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ARangeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 val_t NEW_ARangeExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ACrangeExpr___n_obra(val_t p0);
 typedef val_t (*parser___parser_nodes___ACrangeExpr___n_obra_t)(val_t p0);
+void parser___parser_nodes___ACrangeExpr___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACrangeExpr___n_obra__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ACrangeExpr___n_cbra(val_t p0);
 typedef val_t (*parser___parser_nodes___ACrangeExpr___n_cbra_t)(val_t p0);
+void parser___parser_nodes___ACrangeExpr___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACrangeExpr___n_cbra__eq_t)(val_t p0, val_t p1);
 val_t NEW_ACrangeExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AOrangeExpr___n_obra(val_t p0);
 typedef val_t (*parser___parser_nodes___AOrangeExpr___n_obra_t)(val_t p0);
+void parser___parser_nodes___AOrangeExpr___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOrangeExpr___n_obra__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AOrangeExpr___n_cbra(val_t p0);
 typedef val_t (*parser___parser_nodes___AOrangeExpr___n_cbra_t)(val_t p0);
+void parser___parser_nodes___AOrangeExpr___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AOrangeExpr___n_cbra__eq_t)(val_t p0, val_t p1);
 val_t NEW_AOrangeExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AArrayExpr___n_exprs(val_t p0);
 typedef val_t (*parser___parser_nodes___AArrayExpr___n_exprs_t)(val_t p0);
+void parser___parser_nodes___AArrayExpr___n_exprs__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AArrayExpr___n_exprs__eq_t)(val_t p0, val_t p1);
 val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASelfExpr___n_kwself(val_t p0);
 typedef val_t (*parser___parser_nodes___ASelfExpr___n_kwself_t)(val_t p0);
+void parser___parser_nodes___ASelfExpr___n_kwself__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASelfExpr___n_kwself__eq_t)(val_t p0, val_t p1);
 val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ATrueExpr___n_kwtrue(val_t p0);
 typedef val_t (*parser___parser_nodes___ATrueExpr___n_kwtrue_t)(val_t p0);
+void parser___parser_nodes___ATrueExpr___n_kwtrue__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATrueExpr___n_kwtrue__eq_t)(val_t p0, val_t p1);
 val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AFalseExpr___n_kwfalse(val_t p0);
 typedef val_t (*parser___parser_nodes___AFalseExpr___n_kwfalse_t)(val_t p0);
+void parser___parser_nodes___AFalseExpr___n_kwfalse__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFalseExpr___n_kwfalse__eq_t)(val_t p0, val_t p1);
 val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ANullExpr___n_kwnull(val_t p0);
 typedef val_t (*parser___parser_nodes___ANullExpr___n_kwnull_t)(val_t p0);
+void parser___parser_nodes___ANullExpr___n_kwnull__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ANullExpr___n_kwnull__eq_t)(val_t p0, val_t p1);
 val_t NEW_ANullExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIntExpr___n_number(val_t p0);
 typedef val_t (*parser___parser_nodes___AIntExpr___n_number_t)(val_t p0);
+void parser___parser_nodes___AIntExpr___n_number__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIntExpr___n_number__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIntExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AFloatExpr___n_float(val_t p0);
 typedef val_t (*parser___parser_nodes___AFloatExpr___n_float_t)(val_t p0);
+void parser___parser_nodes___AFloatExpr___n_float__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AFloatExpr___n_float__eq_t)(val_t p0, val_t p1);
 val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ACharExpr___n_char(val_t p0);
 typedef val_t (*parser___parser_nodes___ACharExpr___n_char_t)(val_t p0);
+void parser___parser_nodes___ACharExpr___n_char__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ACharExpr___n_char__eq_t)(val_t p0, val_t p1);
 val_t NEW_ACharExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AStringFormExpr___n_string(val_t p0);
 typedef val_t (*parser___parser_nodes___AStringFormExpr___n_string_t)(val_t p0);
+void parser___parser_nodes___AStringFormExpr___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AStringFormExpr___n_string__eq_t)(val_t p0, val_t p1);
 val_t NEW_AStringFormExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AStringExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init();
@@ -2806,144 +3582,240 @@ typedef val_t (*parser___parser_nodes___ASuperstringExpr___n_exprs_t)(val_t p0);
 val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AParExpr___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___AParExpr___n_opar_t)(val_t p0);
+void parser___parser_nodes___AParExpr___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParExpr___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AParExpr___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___AParExpr___n_cpar_t)(val_t p0);
+void parser___parser_nodes___AParExpr___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParExpr___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t NEW_AParExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AProxyExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AProxyExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AProxyExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AProxyExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_AProxyExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAsCastExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsCastExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AAsCastExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsCastExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsCastExpr___n_kwas(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsCastExpr___n_kwas_t)(val_t p0);
+void parser___parser_nodes___AAsCastExpr___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsCastExpr___n_kwas__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsCastExpr___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsCastExpr___n_opar_t)(val_t p0);
+void parser___parser_nodes___AAsCastExpr___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsCastExpr___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsCastExpr___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsCastExpr___n_type_t)(val_t p0);
+void parser___parser_nodes___AAsCastExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsCastExpr___n_type__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsCastExpr___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsCastExpr___n_cpar_t)(val_t p0);
+void parser___parser_nodes___AAsCastExpr___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsCastExpr___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAsNotnullExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotnullExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___AAsNotnullExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotnullExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotnullExpr___n_kwas(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotnullExpr___n_kwas_t)(val_t p0);
+void parser___parser_nodes___AAsNotnullExpr___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotnullExpr___n_kwas__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotnullExpr___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotnullExpr___n_opar_t)(val_t p0);
+void parser___parser_nodes___AAsNotnullExpr___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotnullExpr___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotnullExpr___n_kwnot(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotnullExpr___n_kwnot_t)(val_t p0);
+void parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotnullExpr___n_kwnot__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotnullExpr___n_kwnull(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotnullExpr___n_kwnull_t)(val_t p0);
+void parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotnullExpr___n_kwnull__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAsNotnullExpr___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAsNotnullExpr___n_cpar_t)(val_t p0);
+void parser___parser_nodes___AAsNotnullExpr___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAsNotnullExpr___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AIssetAttrExpr___n_kwisset(val_t p0);
 typedef val_t (*parser___parser_nodes___AIssetAttrExpr___n_kwisset_t)(val_t p0);
+void parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AIssetAttrExpr___n_kwisset__eq_t)(val_t p0, val_t p1);
 val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExprs___n_exprs(val_t p0);
 typedef val_t (*parser___parser_nodes___AExprs___n_exprs_t)(val_t p0);
 val_t NEW_AExprs_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ADebugTypeExpr___n_kwdebug(val_t p0);
 typedef val_t (*parser___parser_nodes___ADebugTypeExpr___n_kwdebug_t)(val_t p0);
+void parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADebugTypeExpr___n_kwdebug__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ADebugTypeExpr___n_kwtype(val_t p0);
 typedef val_t (*parser___parser_nodes___ADebugTypeExpr___n_kwtype_t)(val_t p0);
+void parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADebugTypeExpr___n_kwtype__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ADebugTypeExpr___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___ADebugTypeExpr___n_expr_t)(val_t p0);
+void parser___parser_nodes___ADebugTypeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADebugTypeExpr___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ADebugTypeExpr___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ADebugTypeExpr___n_type_t)(val_t p0);
+void parser___parser_nodes___ADebugTypeExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ADebugTypeExpr___n_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init();
 val_t NEW_AListExprs_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AParExprs___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___AParExprs___n_opar_t)(val_t p0);
+void parser___parser_nodes___AParExprs___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParExprs___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AParExprs___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___AParExprs___n_cpar_t)(val_t p0);
+void parser___parser_nodes___AParExprs___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AParExprs___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t NEW_AParExprs_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABraExprs___n_obra(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraExprs___n_obra_t)(val_t p0);
+void parser___parser_nodes___ABraExprs___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraExprs___n_obra__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___ABraExprs___n_cbra(val_t p0);
 typedef val_t (*parser___parser_nodes___ABraExprs___n_cbra_t)(val_t p0);
+void parser___parser_nodes___ABraExprs___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABraExprs___n_cbra__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABraExprs_parser___parser_nodes___ANode___init();
 val_t NEW_AAssignOp_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___APlusAssignOp___n_pluseq(val_t p0);
 typedef val_t (*parser___parser_nodes___APlusAssignOp___n_pluseq_t)(val_t p0);
+void parser___parser_nodes___APlusAssignOp___n_pluseq__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___APlusAssignOp___n_pluseq__eq_t)(val_t p0, val_t p1);
 val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AMinusAssignOp___n_minuseq(val_t p0);
 typedef val_t (*parser___parser_nodes___AMinusAssignOp___n_minuseq_t)(val_t p0);
+void parser___parser_nodes___AMinusAssignOp___n_minuseq__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AMinusAssignOp___n_minuseq__eq_t)(val_t p0, val_t p1);
 val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AClosureDef___n_bang(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDef___n_bang_t)(val_t p0);
+void parser___parser_nodes___AClosureDef___n_bang__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDef___n_bang__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDef___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDef___n_id_t)(val_t p0);
+void parser___parser_nodes___AClosureDef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDef___n_id__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDef___n_ids(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDef___n_ids_t)(val_t p0);
 val_t parser___parser_nodes___AClosureDef___n_kwdo(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDef___n_kwdo_t)(val_t p0);
+void parser___parser_nodes___AClosureDef___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDef___n_kwdo__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDef___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDef___n_expr_t)(val_t p0);
+void parser___parser_nodes___AClosureDef___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AClosureDef___n_expr__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AClosureDef___hot_location(val_t p0);
 typedef val_t (*parser___parser_nodes___AClosureDef___hot_location_t)(val_t p0);
 val_t NEW_AClosureDef_parser___parser_nodes___ANode___init();
 val_t NEW_AClosureId_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ASimpleClosureId___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___ASimpleClosureId___n_id_t)(val_t p0);
+void parser___parser_nodes___ASimpleClosureId___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ASimpleClosureId___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ABreakClosureId___n_kwbreak(val_t p0);
 typedef val_t (*parser___parser_nodes___ABreakClosureId___n_kwbreak_t)(val_t p0);
+void parser___parser_nodes___ABreakClosureId___n_kwbreak__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ABreakClosureId___n_kwbreak__eq_t)(val_t p0, val_t p1);
 val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AModuleName___n_quad(val_t p0);
 typedef val_t (*parser___parser_nodes___AModuleName___n_quad_t)(val_t p0);
+void parser___parser_nodes___AModuleName___n_quad__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AModuleName___n_quad__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AModuleName___n_path(val_t p0);
 typedef val_t (*parser___parser_nodes___AModuleName___n_path_t)(val_t p0);
 val_t parser___parser_nodes___AModuleName___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AModuleName___n_id_t)(val_t p0);
+void parser___parser_nodes___AModuleName___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AModuleName___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_AModuleName_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AInLanguage___n_kwin(val_t p0);
 typedef val_t (*parser___parser_nodes___AInLanguage___n_kwin_t)(val_t p0);
+void parser___parser_nodes___AInLanguage___n_kwin__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInLanguage___n_kwin__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AInLanguage___n_string(val_t p0);
 typedef val_t (*parser___parser_nodes___AInLanguage___n_string_t)(val_t p0);
+void parser___parser_nodes___AInLanguage___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AInLanguage___n_string__eq_t)(val_t p0, val_t p1);
 val_t NEW_AInLanguage_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExternCodeBlock___n_in_language(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternCodeBlock___n_in_language_t)(val_t p0);
+void parser___parser_nodes___AExternCodeBlock___n_in_language__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternCodeBlock___n_in_language__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AExternCodeBlock___n_extern_code_segment(val_t p0);
 typedef val_t (*parser___parser_nodes___AExternCodeBlock___n_extern_code_segment_t)(val_t p0);
+void parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExternCodeBlock___n_extern_code_segment__eq_t)(val_t p0, val_t p1);
 val_t NEW_AExternCodeBlock_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AQualified___n_quad(val_t p0);
 typedef val_t (*parser___parser_nodes___AQualified___n_quad_t)(val_t p0);
+void parser___parser_nodes___AQualified___n_quad__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AQualified___n_quad__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AQualified___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AQualified___n_id_t)(val_t p0);
 val_t parser___parser_nodes___AQualified___n_classid(val_t p0);
 typedef val_t (*parser___parser_nodes___AQualified___n_classid_t)(val_t p0);
+void parser___parser_nodes___AQualified___n_classid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AQualified___n_classid__eq_t)(val_t p0, val_t p1);
 val_t NEW_AQualified_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ADoc___n_comment(val_t p0);
 typedef val_t (*parser___parser_nodes___ADoc___n_comment_t)(val_t p0);
 val_t NEW_ADoc_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAnnotations___n_at(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotations___n_at_t)(val_t p0);
+void parser___parser_nodes___AAnnotations___n_at__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAnnotations___n_at__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAnnotations___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotations___n_opar_t)(val_t p0);
+void parser___parser_nodes___AAnnotations___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAnnotations___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAnnotations___n_items(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotations___n_items_t)(val_t p0);
 val_t parser___parser_nodes___AAnnotations___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotations___n_cpar_t)(val_t p0);
+void parser___parser_nodes___AAnnotations___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAnnotations___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAnnotations_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAnnotation___n_atid(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotation___n_atid_t)(val_t p0);
+void parser___parser_nodes___AAnnotation___n_atid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAnnotation___n_atid__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAnnotation___n_opar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotation___n_opar_t)(val_t p0);
+void parser___parser_nodes___AAnnotation___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAnnotation___n_opar__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___AAnnotation___n_args(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotation___n_args_t)(val_t p0);
 val_t parser___parser_nodes___AAnnotation___n_cpar(val_t p0);
 typedef val_t (*parser___parser_nodes___AAnnotation___n_cpar_t)(val_t p0);
+void parser___parser_nodes___AAnnotation___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAnnotation___n_cpar__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAnnotation_parser___parser_nodes___ANode___init();
 val_t NEW_AAtArg_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___ATypeAtArg___n_type(val_t p0);
 typedef val_t (*parser___parser_nodes___ATypeAtArg___n_type_t)(val_t p0);
+void parser___parser_nodes___ATypeAtArg___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___ATypeAtArg___n_type__eq_t)(val_t p0, val_t p1);
 val_t NEW_ATypeAtArg_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AExprAtArg___n_expr(val_t p0);
 typedef val_t (*parser___parser_nodes___AExprAtArg___n_expr_t)(val_t p0);
+void parser___parser_nodes___AExprAtArg___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AExprAtArg___n_expr__eq_t)(val_t p0, val_t p1);
 val_t NEW_AExprAtArg_parser___parser_nodes___ANode___init();
 val_t NEW_AAtAtArg_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___AAtid___n_id(val_t p0);
 typedef val_t (*parser___parser_nodes___AAtid___n_id_t)(val_t p0);
+void parser___parser_nodes___AAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___AAtid___n_id__eq_t)(val_t p0, val_t p1);
 val_t NEW_AAtid_parser___parser_nodes___ANode___init();
 val_t NEW_AIdAtid_parser___parser_nodes___ANode___init();
 val_t NEW_AKwexternAtid_parser___parser_nodes___ANode___init();
@@ -2953,8 +3825,12 @@ val_t NEW_AKwwritableAtid_parser___parser_nodes___ANode___init();
 val_t NEW_AKwimportAtid_parser___parser_nodes___ANode___init();
 val_t parser___parser_nodes___Start___n_base(val_t p0);
 typedef val_t (*parser___parser_nodes___Start___n_base_t)(val_t p0);
+void parser___parser_nodes___Start___n_base__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Start___n_base__eq_t)(val_t p0, val_t p1);
 val_t parser___parser_nodes___Start___n_eof(val_t p0);
 typedef val_t (*parser___parser_nodes___Start___n_eof_t)(val_t p0);
+void parser___parser_nodes___Start___n_eof__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_nodes___Start___n_eof__eq_t)(val_t p0, val_t p1);
 void parser___parser_nodes___Start___init(val_t p0, val_t p1, val_t p2, int* init_table);
 typedef void (*parser___parser_nodes___Start___init_t)(val_t p0, val_t p1, val_t p2, int* init_table);
 val_t NEW_Start_parser___parser_nodes___Start___init(val_t p0, val_t p1);
index bc6df2d..e009596 100644 (file)
 /* This C file is generated by NIT to compile module parser___parser_prod. */
 #include "parser___parser_prod._sep.h"
-static const char LOCATE_parser___parser_prod___ANode___parent[] = "parser_prod::ANode::parent";
-val_t parser___parser_prod___ANode___parent(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 10;
-  fra.me.meth = LOCATE_parser___parser_prod___ANode___parent;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:10 */
-  fra.me.REG[0] = ATTR_parser___parser_prod___ANode____parent(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_parser___parser_prod___ANode___parent__eq[] = "parser_prod::ANode::parent=";
-void parser___parser_prod___ANode___parent__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 10;
-  fra.me.meth = LOCATE_parser___parser_prod___ANode___parent__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:10 */
-  ATTR_parser___parser_prod___ANode____parent(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ANode___remove_child[] = "parser_prod::ANode::remove_child";
-void parser___parser_prod___ANode___remove_child(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 13;
-  fra.me.meth = LOCATE_parser___parser_prod___ANode___remove_child;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:16 */
-  CALL_parser___parser_prod___ANode___replace_child(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], NIT_NULL);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ANode___replace_child[] = "parser_prod::ANode::replace_child";
-void parser___parser_prod___ANode___replace_child(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 19;
-  fra.me.meth = LOCATE_parser___parser_prod___ANode___replace_child;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  /* parser/parser_prod.nit:19 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_prod, 19);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ANode___replace_with[] = "parser_prod::ANode::replace_with";
-void parser___parser_prod___ANode___replace_with(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 22;
-  fra.me.meth = LOCATE_parser___parser_prod___ANode___replace_with;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:25 */
-  fra.me.REG[2] = ATTR_parser___parser_prod___ANode____parent(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:26 */
-    fra.me.REG[2] = ATTR_parser___parser_prod___ANode____parent(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 26);
-    }
-    CALL_parser___parser_prod___ANode___replace_child(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ANode___visit_all[] = "parser_prod::ANode::visit_all";
-void parser___parser_prod___ANode___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 30;
-  fra.me.meth = LOCATE_parser___parser_prod___ANode___visit_all;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  /* parser/parser_prod.nit:30 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_prod, 30);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___Token___visit_all[] = "parser_prod::Token::(parser_prod::ANode::visit_all)";
-void parser___parser_prod___Token___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 36;
-  fra.me.meth = LOCATE_parser___parser_prod___Token___visit_all;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___Token___replace_child[] = "parser_prod::Token::(parser_prod::ANode::replace_child)";
-void parser___parser_prod___Token___replace_child(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 37;
-  fra.me.meth = LOCATE_parser___parser_prod___Token___replace_child;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___Prod___replace_with[] = "parser_prod::Prod::(parser_prod::ANode::replace_with)";
-void parser___parser_prod___Prod___replace_with(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 41;
-  fra.me.meth = LOCATE_parser___parser_prod___Prod___replace_with;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:41 */
-  fra.me.REG[2] = fra.me.REG[0];
-  fra.me.REG[3] = fra.me.REG[1];
-  /* parser/parser_prod.nit:43 */
-  CALL_SUPER_parser___parser_prod___Prod___replace_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* parser/parser_prod.nit:44 */
-  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___Prod, ID_parser___parser_nodes___Prod)) /*cast Prod*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 44);
-  }
-  /* parser/parser_prod.nit:45 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___Visitor___visit[] = "parser_prod::Visitor::visit";
-void parser___parser_prod___Visitor___visit(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 51;
-  fra.me.meth = LOCATE_parser___parser_prod___Visitor___visit;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  /* parser/parser_prod.nit:51 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser___parser_prod, 51);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___Visitor___enter_visit[] = "parser_prod::Visitor::enter_visit";
-void parser___parser_prod___Visitor___enter_visit(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 55;
-  fra.me.meth = LOCATE_parser___parser_prod___Visitor___enter_visit;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:60 */
-  fra.me.REG[2] = ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]);
-  /* parser/parser_prod.nit:61 */
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:62 */
-  CALL_parser___parser_prod___Visitor___visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* parser/parser_prod.nit:63 */
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[2];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___Visitor___current_node[] = "parser_prod::Visitor::current_node";
-val_t parser___parser_prod___Visitor___current_node(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 66;
-  fra.me.meth = LOCATE_parser___parser_prod___Visitor___current_node;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:66 */
-  fra.me.REG[0] = ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_parser___parser_prod___Visitor___init[] = "parser_prod::Visitor::init";
-void parser___parser_prod___Visitor___init(val_t p0, int* init_table){
-  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_prod___Visitor].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos0]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_parser___parser_prod___Visitor___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos0] = 1;
-  return;
-}
 static const char LOCATE_parser___parser_prod___AModule___empty_init[] = "parser_prod::AModule::empty_init";
 void parser___parser_prod___AModule___empty_init(val_t p0, int* init_table){
-  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModule].i;
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModule].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos1]) return;
+  if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 71;
+  fra.me.line = 10;
   fra.me.meth = LOCATE_parser___parser_prod___AModule___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -302,20 +16,20 @@ void parser___parser_prod___AModule___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos1] = 1;
+  init_table[itpos0] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AModule___init_amodule[] = "parser_prod::AModule::init_amodule";
 void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModule].i;
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModule].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos2]) return;
+  if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 73;
+  fra.me.line = 12;
   fra.me.meth = LOCATE_parser___parser_prod___AModule___init_amodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -330,11 +44,11 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:80 */
+  /* parser/parser_prod.nit:19 */
   CALL_parser___parser_prod___AModule___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* parser/parser_prod.nit:81 */
+  /* parser/parser_prod.nit:20 */
   ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:82 */
+  /* parser/parser_prod.nit:21 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -349,18 +63,18 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:83 */
+    /* parser/parser_prod.nit:22 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 83);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 22);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModule___init_amodule_1));
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModule___init_amodule_2));
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModule___init_amodule_3));
   stack_frame_head = fra.me.prev;
-  init_table[itpos2] = 1;
+  init_table[itpos1] = 1;
   return;
 }
   void OC_parser___parser_prod___AModule___init_amodule_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -368,7 +82,7 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:85 */
+    /* parser/parser_prod.nit:24 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -382,22 +96,22 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:86 */
+    /* parser/parser_prod.nit:25 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AImport, ID_parser___parser_nodes___AImport)) /*cast AImport*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 86);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 25);
     }
-    /* parser/parser_prod.nit:87 */
+    /* parser/parser_prod.nit:26 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 87);
+      nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 26);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AModule____n_imports(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:88 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:27 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -406,7 +120,7 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:90 */
+    /* parser/parser_prod.nit:29 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -420,22 +134,22 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:91 */
+    /* parser/parser_prod.nit:30 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 91);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 30);
     }
-    /* parser/parser_prod.nit:92 */
+    /* parser/parser_prod.nit:31 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 92);
+      nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 31);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:93 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:32 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -444,7 +158,7 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:95 */
+    /* parser/parser_prod.nit:34 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -458,26 +172,26 @@ void parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:96 */
+    /* parser/parser_prod.nit:35 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast AClassdef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 96);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 35);
     }
-    /* parser/parser_prod.nit:97 */
+    /* parser/parser_prod.nit:36 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 97);
+      nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 36);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AModule____n_classdefs(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:98 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:37 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AModule___replace_child[] = "parser_prod::AModule::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AModule___replace_child[] = "parser_prod::AModule::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AModule___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;
@@ -488,7 +202,7 @@ void parser___parser_prod___AModule___replace_child(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___parser_prod;
-  fra.me.line = 102;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_parser___parser_prod___AModule___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -500,7 +214,7 @@ void parser___parser_prod___AModule___replace_child(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_prod.nit:104 */
+  /* parser/parser_prod.nit:43 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -515,7 +229,7 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:105 */
+    /* parser/parser_prod.nit:44 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -530,71 +244,65 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:106 */
+      /* parser/parser_prod.nit:45 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 106);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 45);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:107 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:46 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast AModuledecl*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 107);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 46);
       }
-      /* parser/parser_prod.nit:108 */
+      /* parser/parser_prod.nit:47 */
       ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:110 */
+      /* parser/parser_prod.nit:49 */
       ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:112 */
+    /* parser/parser_prod.nit:51 */
     goto label1;
   }
-  /* parser/parser_prod.nit:114 */
+  /* parser/parser_prod.nit:53 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 114);
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 53);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:114 */
+      /* parser/parser_prod.nit:53 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:115 */
+      /* parser/parser_prod.nit:54 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 115);
+        nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 54);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:116 */
+        /* parser/parser_prod.nit:55 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -609,95 +317,89 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:117 */
+          /* parser/parser_prod.nit:56 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AImport, ID_parser___parser_nodes___AImport)) /*cast AImport*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 117);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 56);
           }
-          /* parser/parser_prod.nit:118 */
+          /* parser/parser_prod.nit:57 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 118);
+            nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 57);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:119 */
+          /* parser/parser_prod.nit:58 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 119);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 58);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:121 */
+          /* parser/parser_prod.nit:60 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 121);
+            nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 60);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:123 */
+        /* parser/parser_prod.nit:62 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:126 */
+  /* parser/parser_prod.nit:65 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 126);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 65);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:126 */
+      /* parser/parser_prod.nit:65 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:127 */
+      /* parser/parser_prod.nit:66 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 127);
+        nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 66);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:128 */
+        /* parser/parser_prod.nit:67 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -712,95 +414,89 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:129 */
+          /* parser/parser_prod.nit:68 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 129);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 68);
           }
-          /* parser/parser_prod.nit:130 */
+          /* parser/parser_prod.nit:69 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 130);
+            nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 69);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:131 */
+          /* parser/parser_prod.nit:70 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 131);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 70);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:133 */
+          /* parser/parser_prod.nit:72 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 133);
+            nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 72);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:135 */
+        /* parser/parser_prod.nit:74 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label3;
     }
   }
   label3: while(0);
-  /* parser/parser_prod.nit:138 */
+  /* parser/parser_prod.nit:77 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 138);
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 77);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:138 */
+      /* parser/parser_prod.nit:77 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:139 */
+      /* parser/parser_prod.nit:78 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 139);
+        nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 78);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:140 */
+        /* parser/parser_prod.nit:79 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -815,47 +511,47 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:141 */
+          /* parser/parser_prod.nit:80 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast AClassdef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 141);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 80);
           }
-          /* parser/parser_prod.nit:142 */
+          /* parser/parser_prod.nit:81 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 142);
+            nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 81);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:143 */
+          /* parser/parser_prod.nit:82 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 143);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 82);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:145 */
+          /* parser/parser_prod.nit:84 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 145);
+            nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 84);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:147 */
+        /* parser/parser_prod.nit:86 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
@@ -864,7 +560,51 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AModule___visit_all[] = "parser_prod::AModule::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AModule___n_moduledecl__eq[] = "parser_prod::AModule::(parser_nodes::AModule::n_moduledecl=)";
+void parser___parser_prod___AModule___n_moduledecl__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 91;
+  fra.me.meth = LOCATE_parser___parser_prod___AModule___n_moduledecl__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:93 */
+  ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:94 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:95 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 95);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModule___visit_all[] = "parser_prod::AModule::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -872,7 +612,7 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 152;
+  fra.me.line = 100;
   fra.me.meth = LOCATE_parser___parser_prod___AModule___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -883,9 +623,9 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:152 */
+  /* parser/parser_prod.nit:100 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:154 */
+  /* parser/parser_prod.nit:102 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -901,36 +641,36 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:155 */
+    /* parser/parser_prod.nit:103 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast AModuledecl*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 155);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 103);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:157 */
+  /* parser/parser_prod.nit:105 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 157);
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 105);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModule___visit_all_1));
-  /* parser/parser_prod.nit:160 */
+  /* parser/parser_prod.nit:108 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 160);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_parser___parser_prod, 108);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModule___visit_all_2));
-  /* parser/parser_prod.nit:163 */
+  /* parser/parser_prod.nit:111 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 163);
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 111);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModule___visit_all_3));
@@ -953,8 +693,8 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:158 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:106 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -974,8 +714,8 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:161 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:109 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -995,20 +735,20 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:164 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:112 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AModuledecl___empty_init[] = "parser_prod::AModuledecl::empty_init";
 void parser___parser_prod___AModuledecl___empty_init(val_t p0, int* init_table){
-  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuledecl].i;
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuledecl].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos3]) return;
+  if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 169;
+  fra.me.line = 117;
   fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1016,20 +756,20 @@ void parser___parser_prod___AModuledecl___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos3] = 1;
+  init_table[itpos2] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AModuledecl___init_amoduledecl[] = "parser_prod::AModuledecl::init_amoduledecl";
 void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuledecl].i;
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuledecl].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos4]) return;
+  if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 171;
+  fra.me.line = 119;
   fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___init_amoduledecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1045,13 +785,13 @@ void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, v
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:171 */
+  /* parser/parser_prod.nit:119 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:178 */
+  /* parser/parser_prod.nit:126 */
   CALL_parser___parser_prod___AModuledecl___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:179 */
+  /* parser/parser_prod.nit:127 */
   ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:180 */
+  /* parser/parser_prod.nit:128 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1066,42 +806,42 @@ void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:181 */
+    /* parser/parser_prod.nit:129 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 181);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 129);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:183 */
+  /* parser/parser_prod.nit:131 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 183);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 131);
   }
   ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:184 */
+  /* parser/parser_prod.nit:132 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 184);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 132);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:185 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:133 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 185);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 133);
   }
   ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:186 */
+  /* parser/parser_prod.nit:134 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 186);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 134);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:187 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:135 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:188 */
+  /* parser/parser_prod.nit:136 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1116,18 +856,18 @@ void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:189 */
+    /* parser/parser_prod.nit:137 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 189);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 137);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos4] = 1;
+  init_table[itpos3] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AModuledecl___replace_child[] = "parser_prod::AModuledecl::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AModuledecl___replace_child[] = "parser_prod::AModuledecl::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AModuledecl___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;
@@ -1135,7 +875,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 193;
+  fra.me.line = 141;
   fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1147,7 +887,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:195 */
+  /* parser/parser_prod.nit:143 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -1162,7 +902,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:196 */
+    /* parser/parser_prod.nit:144 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1177,32 +917,32 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:197 */
+      /* parser/parser_prod.nit:145 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 197);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 145);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:198 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:146 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 198);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 146);
       }
-      /* parser/parser_prod.nit:199 */
+      /* parser/parser_prod.nit:147 */
       ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:201 */
+      /* parser/parser_prod.nit:149 */
       ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:203 */
+    /* parser/parser_prod.nit:151 */
     goto label1;
   }
-  /* parser/parser_prod.nit:205 */
+  /* parser/parser_prod.nit:153 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser___parser_prod, 205);
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser___parser_prod, 153);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -1212,7 +952,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:206 */
+    /* parser/parser_prod.nit:154 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1227,32 +967,32 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:207 */
+      /* parser/parser_prod.nit:155 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 207);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 155);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:208 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:156 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwmodule, ID_parser___parser_nodes___TKwmodule)) /*cast TKwmodule*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 208);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 156);
       }
-      /* parser/parser_prod.nit:209 */
+      /* parser/parser_prod.nit:157 */
       ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:211 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 211);
+      /* parser/parser_prod.nit:159 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 159);
     }
-    /* parser/parser_prod.nit:213 */
+    /* parser/parser_prod.nit:161 */
     goto label1;
   }
-  /* parser/parser_prod.nit:215 */
+  /* parser/parser_prod.nit:163 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 215);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 163);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -1262,7 +1002,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:216 */
+    /* parser/parser_prod.nit:164 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1277,28 +1017,28 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:217 */
+      /* parser/parser_prod.nit:165 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 217);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 165);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:218 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:166 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast AModuleName*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 218);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 166);
       }
-      /* parser/parser_prod.nit:219 */
+      /* parser/parser_prod.nit:167 */
       ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:221 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 221);
+      /* parser/parser_prod.nit:169 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 169);
     }
-    /* parser/parser_prod.nit:223 */
+    /* parser/parser_prod.nit:171 */
     goto label1;
   }
-  /* parser/parser_prod.nit:225 */
+  /* parser/parser_prod.nit:173 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -1313,7 +1053,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:226 */
+    /* parser/parser_prod.nit:174 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1328,32 +1068,164 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:227 */
+      /* parser/parser_prod.nit:175 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 227);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 175);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:228 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:176 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 228);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 176);
       }
-      /* parser/parser_prod.nit:229 */
+      /* parser/parser_prod.nit:177 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:231 */
+      /* parser/parser_prod.nit:179 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:233 */
+    /* parser/parser_prod.nit:181 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AModuledecl___visit_all[] = "parser_prod::AModuledecl::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AModuledecl___n_doc__eq[] = "parser_prod::AModuledecl::(parser_nodes::AModuledecl::n_doc=)";
+void parser___parser_prod___AModuledecl___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 185;
+  fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:187 */
+  ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:188 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:189 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 189);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModuledecl___n_kwmodule__eq[] = "parser_prod::AModuledecl::(parser_nodes::AModuledecl::n_kwmodule=)";
+void parser___parser_prod___AModuledecl___n_kwmodule__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 192;
+  fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___n_kwmodule__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:194 */
+  ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:195 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModuledecl___n_name__eq[] = "parser_prod::AModuledecl::(parser_nodes::AModuledecl::n_name=)";
+void parser___parser_prod___AModuledecl___n_name__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 197;
+  fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___n_name__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:199 */
+  ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:200 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModuledecl___n_annotations__eq[] = "parser_prod::AModuledecl::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AModuledecl___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 202;
+  fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:204 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:205 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:206 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 206);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModuledecl___visit_all[] = "parser_prod::AModuledecl::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1361,7 +1233,7 @@ void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 237;
+  fra.me.line = 211;
   fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1372,9 +1244,9 @@ void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:237 */
+  /* parser/parser_prod.nit:211 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:239 */
+  /* parser/parser_prod.nit:213 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1390,32 +1262,32 @@ void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:240 */
+    /* parser/parser_prod.nit:214 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 240);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 214);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:242 */
+  /* parser/parser_prod.nit:216 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser___parser_prod, 242);
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_parser___parser_prod, 216);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:243 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:217 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 243);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 217);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:244 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:218 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1431,27 +1303,27 @@ void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:245 */
+    /* parser/parser_prod.nit:219 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 245);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 219);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStdImport___empty_init[] = "parser_prod::AStdImport::empty_init";
 void parser___parser_prod___AStdImport___empty_init(val_t p0, int* init_table){
-  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdImport].i;
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdImport].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos5]) return;
+  if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 250;
+  fra.me.line = 224;
   fra.me.meth = LOCATE_parser___parser_prod___AStdImport___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1459,20 +1331,20 @@ void parser___parser_prod___AStdImport___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos5] = 1;
+  init_table[itpos4] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStdImport___init_astdimport[] = "parser_prod::AStdImport::init_astdimport";
 void parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdImport].i;
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdImport].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos6]) return;
+  if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 252;
+  fra.me.line = 226;
   fra.me.meth = LOCATE_parser___parser_prod___AStdImport___init_astdimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1488,52 +1360,52 @@ void parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:252 */
+  /* parser/parser_prod.nit:226 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:259 */
+  /* parser/parser_prod.nit:233 */
   CALL_parser___parser_prod___AStdImport___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:260 */
+  /* parser/parser_prod.nit:234 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 260);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 234);
   }
   ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:261 */
+  /* parser/parser_prod.nit:235 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 261);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 235);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:262 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:236 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 262);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 236);
   }
   ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:263 */
+  /* parser/parser_prod.nit:237 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 263);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 237);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:264 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:238 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 264);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 238);
   }
   ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:265 */
+  /* parser/parser_prod.nit:239 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 265);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 239);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:266 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:240 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:267 */
+  /* parser/parser_prod.nit:241 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1548,18 +1420,18 @@ void parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:268 */
+    /* parser/parser_prod.nit:242 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 268);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 242);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos6] = 1;
+  init_table[itpos5] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStdImport___replace_child[] = "parser_prod::AStdImport::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStdImport___replace_child[] = "parser_prod::AStdImport::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStdImport___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;
@@ -1567,7 +1439,7 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 272;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_parser___parser_prod___AStdImport___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1579,11 +1451,11 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:274 */
+  /* parser/parser_prod.nit:248 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 274);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 248);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -1593,7 +1465,7 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:275 */
+    /* parser/parser_prod.nit:249 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1608,32 +1480,32 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:276 */
+      /* parser/parser_prod.nit:250 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 276);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 250);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:277 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:251 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 277);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 251);
       }
-      /* parser/parser_prod.nit:278 */
+      /* parser/parser_prod.nit:252 */
       ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:280 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 280);
+      /* parser/parser_prod.nit:254 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 254);
     }
-    /* parser/parser_prod.nit:282 */
+    /* parser/parser_prod.nit:256 */
     goto label1;
   }
-  /* parser/parser_prod.nit:284 */
+  /* parser/parser_prod.nit:258 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 284);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 258);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -1643,7 +1515,7 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:285 */
+    /* parser/parser_prod.nit:259 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1658,32 +1530,32 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:286 */
+      /* parser/parser_prod.nit:260 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 286);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 260);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:287 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:261 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast TKwimport*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 287);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 261);
       }
-      /* parser/parser_prod.nit:288 */
+      /* parser/parser_prod.nit:262 */
       ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:290 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 290);
+      /* parser/parser_prod.nit:264 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 264);
     }
-    /* parser/parser_prod.nit:292 */
+    /* parser/parser_prod.nit:266 */
     goto label1;
   }
-  /* parser/parser_prod.nit:294 */
+  /* parser/parser_prod.nit:268 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 294);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 268);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -1693,7 +1565,7 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:295 */
+    /* parser/parser_prod.nit:269 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1708,28 +1580,28 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:296 */
+      /* parser/parser_prod.nit:270 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 296);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 270);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:297 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:271 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast AModuleName*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 297);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 271);
       }
-      /* parser/parser_prod.nit:298 */
+      /* parser/parser_prod.nit:272 */
       ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:300 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 300);
+      /* parser/parser_prod.nit:274 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 274);
     }
-    /* parser/parser_prod.nit:302 */
+    /* parser/parser_prod.nit:276 */
     goto label1;
   }
-  /* parser/parser_prod.nit:304 */
+  /* parser/parser_prod.nit:278 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -1744,7 +1616,7 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:305 */
+    /* parser/parser_prod.nit:279 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1759,32 +1631,142 @@ void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:306 */
+      /* parser/parser_prod.nit:280 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 306);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 280);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:307 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:281 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 307);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 281);
       }
-      /* parser/parser_prod.nit:308 */
+      /* parser/parser_prod.nit:282 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:310 */
+      /* parser/parser_prod.nit:284 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:312 */
+    /* parser/parser_prod.nit:286 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStdImport___visit_all[] = "parser_prod::AStdImport::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStdImport___n_visibility__eq[] = "parser_prod::AStdImport::(parser_nodes::AStdImport::n_visibility=)";
+void parser___parser_prod___AStdImport___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 290;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdImport___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:292 */
+  ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:293 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdImport___n_kwimport__eq[] = "parser_prod::AStdImport::(parser_nodes::AStdImport::n_kwimport=)";
+void parser___parser_prod___AStdImport___n_kwimport__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 295;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdImport___n_kwimport__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:297 */
+  ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:298 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdImport___n_name__eq[] = "parser_prod::AStdImport::(parser_nodes::AStdImport::n_name=)";
+void parser___parser_prod___AStdImport___n_name__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 300;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdImport___n_name__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:302 */
+  ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:303 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdImport___n_annotations__eq[] = "parser_prod::AStdImport::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AStdImport___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 305;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdImport___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:307 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:308 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:309 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 309);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdImport___visit_all[] = "parser_prod::AStdImport::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStdImport___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1792,7 +1774,7 @@ void parser___parser_prod___AStdImport___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 316;
+  fra.me.line = 314;
   fra.me.meth = LOCATE_parser___parser_prod___AStdImport___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1803,33 +1785,33 @@ void parser___parser_prod___AStdImport___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:316 */
+  /* parser/parser_prod.nit:314 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:318 */
+  /* parser/parser_prod.nit:316 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 318);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 316);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:319 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:317 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 319);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 317);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:320 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:318 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 320);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_parser___parser_prod, 318);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:321 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:319 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1845,27 +1827,27 @@ void parser___parser_prod___AStdImport___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:322 */
+    /* parser/parser_prod.nit:320 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 322);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 320);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANoImport___empty_init[] = "parser_prod::ANoImport::empty_init";
 void parser___parser_prod___ANoImport___empty_init(val_t p0, int* init_table){
-  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANoImport].i;
+  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANoImport].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos7]) return;
+  if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 327;
+  fra.me.line = 325;
   fra.me.meth = LOCATE_parser___parser_prod___ANoImport___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1873,19 +1855,19 @@ void parser___parser_prod___ANoImport___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos7] = 1;
+  init_table[itpos6] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANoImport___init_anoimport[] = "parser_prod::ANoImport::init_anoimport";
 void parser___parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANoImport].i;
+  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANoImport].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos8]) return;
+  if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 329;
+  fra.me.line = 327;
   fra.me.meth = LOCATE_parser___parser_prod___ANoImport___init_anoimport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1899,54 +1881,54 @@ void parser___parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:329 */
+  /* parser/parser_prod.nit:327 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:335 */
+  /* parser/parser_prod.nit:333 */
   CALL_parser___parser_prod___ANoImport___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:336 */
+  /* parser/parser_prod.nit:334 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 336);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 334);
   }
   ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:337 */
+  /* parser/parser_prod.nit:335 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 337);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 335);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:338 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:336 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 338);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 336);
   }
   ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:339 */
+  /* parser/parser_prod.nit:337 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 339);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 337);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:340 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:338 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 340);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 338);
   }
   ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:341 */
+  /* parser/parser_prod.nit:339 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 341);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 339);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos8] = 1;
+  init_table[itpos7] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANoImport___replace_child[] = "parser_prod::ANoImport::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ANoImport___replace_child[] = "parser_prod::ANoImport::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ANoImport___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;
@@ -1954,7 +1936,7 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 344;
+  fra.me.line = 342;
   fra.me.meth = LOCATE_parser___parser_prod___ANoImport___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1966,11 +1948,11 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:346 */
+  /* parser/parser_prod.nit:344 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 346);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 344);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -1980,7 +1962,7 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:347 */
+    /* parser/parser_prod.nit:345 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1995,32 +1977,32 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:348 */
+      /* parser/parser_prod.nit:346 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 348);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 346);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:349 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:347 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 349);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 347);
       }
-      /* parser/parser_prod.nit:350 */
+      /* parser/parser_prod.nit:348 */
       ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:352 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 352);
+      /* parser/parser_prod.nit:350 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 350);
     }
-    /* parser/parser_prod.nit:354 */
+    /* parser/parser_prod.nit:352 */
     goto label1;
   }
-  /* parser/parser_prod.nit:356 */
+  /* parser/parser_prod.nit:354 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 356);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 354);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -2030,7 +2012,7 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:357 */
+    /* parser/parser_prod.nit:355 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2045,32 +2027,32 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:358 */
+      /* parser/parser_prod.nit:356 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 358);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 356);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:359 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:357 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast TKwimport*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 359);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 357);
       }
-      /* parser/parser_prod.nit:360 */
+      /* parser/parser_prod.nit:358 */
       ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:362 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 362);
+      /* parser/parser_prod.nit:360 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 360);
     }
-    /* parser/parser_prod.nit:364 */
+    /* parser/parser_prod.nit:362 */
     goto label1;
   }
-  /* parser/parser_prod.nit:366 */
+  /* parser/parser_prod.nit:364 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 366);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 364);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -2080,7 +2062,7 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:367 */
+    /* parser/parser_prod.nit:365 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2095,39 +2077,105 @@ void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:368 */
+      /* parser/parser_prod.nit:366 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 368);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 366);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:369 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:367 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast TKwend*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 369);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 367);
       }
-      /* parser/parser_prod.nit:370 */
+      /* parser/parser_prod.nit:368 */
       ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:372 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 372);
+      /* parser/parser_prod.nit:370 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 370);
     }
-    /* parser/parser_prod.nit:374 */
+    /* parser/parser_prod.nit:372 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANoImport___visit_all[] = "parser_prod::ANoImport::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ANoImport___n_visibility__eq[] = "parser_prod::ANoImport::(parser_nodes::ANoImport::n_visibility=)";
+void parser___parser_prod___ANoImport___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 376;
+  fra.me.meth = LOCATE_parser___parser_prod___ANoImport___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:378 */
+  ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:379 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANoImport___n_kwimport__eq[] = "parser_prod::ANoImport::(parser_nodes::ANoImport::n_kwimport=)";
+void parser___parser_prod___ANoImport___n_kwimport__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 381;
+  fra.me.meth = LOCATE_parser___parser_prod___ANoImport___n_kwimport__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:383 */
+  ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:384 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANoImport___n_kwend__eq[] = "parser_prod::ANoImport::(parser_nodes::ANoImport::n_kwend=)";
+void parser___parser_prod___ANoImport___n_kwend__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 386;
+  fra.me.meth = LOCATE_parser___parser_prod___ANoImport___n_kwend__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:388 */
+  ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:389 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANoImport___visit_all[] = "parser_prod::ANoImport::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ANoImport___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 378;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_parser___parser_prod___ANoImport___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2137,42 +2185,42 @@ void parser___parser_prod___ANoImport___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:380 */
+  /* parser/parser_prod.nit:395 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 380);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 395);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:381 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:396 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 381);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 396);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:382 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:397 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 382);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 397);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___APublicVisibility___empty_init[] = "parser_prod::APublicVisibility::empty_init";
 void parser___parser_prod___APublicVisibility___empty_init(val_t p0, int* init_table){
-  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APublicVisibility].i;
+  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APublicVisibility].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos9]) return;
+  if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 386;
+  fra.me.line = 401;
   fra.me.meth = LOCATE_parser___parser_prod___APublicVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2180,37 +2228,37 @@ void parser___parser_prod___APublicVisibility___empty_init(val_t p0, int* init_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos9] = 1;
+  init_table[itpos8] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APublicVisibility___init_apublicvisibility[] = "parser_prod::APublicVisibility::init_apublicvisibility";
 void parser___parser_prod___APublicVisibility___init_apublicvisibility(val_t p0, int* init_table){
-  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APublicVisibility].i;
+  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APublicVisibility].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos10]) return;
+  if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 388;
+  fra.me.line = 403;
   fra.me.meth = LOCATE_parser___parser_prod___APublicVisibility___init_apublicvisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:390 */
+  /* parser/parser_prod.nit:405 */
   CALL_parser___parser_prod___APublicVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
-  init_table[itpos10] = 1;
+  init_table[itpos9] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APublicVisibility___replace_child[] = "parser_prod::APublicVisibility::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APublicVisibility___replace_child[] = "parser_prod::APublicVisibility::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APublicVisibility___replace_child(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 393;
+  fra.me.line = 408;
   fra.me.meth = LOCATE_parser___parser_prod___APublicVisibility___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2224,13 +2272,13 @@ void parser___parser_prod___APublicVisibility___replace_child(val_t p0, val_t p1
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APublicVisibility___visit_all[] = "parser_prod::APublicVisibility::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APublicVisibility___visit_all[] = "parser_prod::APublicVisibility::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APublicVisibility___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 397;
+  fra.me.line = 414;
   fra.me.meth = LOCATE_parser___parser_prod___APublicVisibility___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2244,13 +2292,13 @@ void parser___parser_prod___APublicVisibility___visit_all(val_t p0, val_t p1){
 }
 static const char LOCATE_parser___parser_prod___APrivateVisibility___empty_init[] = "parser_prod::APrivateVisibility::empty_init";
 void parser___parser_prod___APrivateVisibility___empty_init(val_t p0, int* init_table){
-  int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APrivateVisibility].i;
+  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APrivateVisibility].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos11]) return;
+  if (init_table[itpos10]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 402;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_parser___parser_prod___APrivateVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2258,19 +2306,19 @@ void parser___parser_prod___APrivateVisibility___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos11] = 1;
+  init_table[itpos10] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APrivateVisibility___init_aprivatevisibility[] = "parser_prod::APrivateVisibility::init_aprivatevisibility";
 void parser___parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0, val_t p1, int* init_table){
-  int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APrivateVisibility].i;
+  int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APrivateVisibility].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos12]) return;
+  if (init_table[itpos11]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 404;
+  fra.me.line = 421;
   fra.me.meth = LOCATE_parser___parser_prod___APrivateVisibility___init_aprivatevisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2280,28 +2328,28 @@ void parser___parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:404 */
+  /* parser/parser_prod.nit:421 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:408 */
+  /* parser/parser_prod.nit:425 */
   CALL_parser___parser_prod___APrivateVisibility___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:409 */
+  /* parser/parser_prod.nit:426 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 409);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 426);
   }
   ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:410 */
+  /* parser/parser_prod.nit:427 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 410);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 427);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos12] = 1;
+  init_table[itpos11] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APrivateVisibility___replace_child[] = "parser_prod::APrivateVisibility::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APrivateVisibility___replace_child[] = "parser_prod::APrivateVisibility::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APrivateVisibility___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;
@@ -2309,7 +2357,7 @@ void parser___parser_prod___APrivateVisibility___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 413;
+  fra.me.line = 430;
   fra.me.meth = LOCATE_parser___parser_prod___APrivateVisibility___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2321,11 +2369,11 @@ void parser___parser_prod___APrivateVisibility___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:415 */
+  /* parser/parser_prod.nit:432 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser___parser_prod, 415);
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser___parser_prod, 432);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -2335,7 +2383,7 @@ void parser___parser_prod___APrivateVisibility___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:416 */
+    /* parser/parser_prod.nit:433 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2350,39 +2398,61 @@ void parser___parser_prod___APrivateVisibility___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:417 */
+      /* parser/parser_prod.nit:434 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 417);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 434);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:418 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:435 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwprivate, ID_parser___parser_nodes___TKwprivate)) /*cast TKwprivate*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 418);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 435);
       }
-      /* parser/parser_prod.nit:419 */
+      /* parser/parser_prod.nit:436 */
       ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:421 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 421);
+      /* parser/parser_prod.nit:438 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 438);
     }
-    /* parser/parser_prod.nit:423 */
+    /* parser/parser_prod.nit:440 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APrivateVisibility___visit_all[] = "parser_prod::APrivateVisibility::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APrivateVisibility___n_kwprivate__eq[] = "parser_prod::APrivateVisibility::(parser_nodes::APrivateVisibility::n_kwprivate=)";
+void parser___parser_prod___APrivateVisibility___n_kwprivate__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 444;
+  fra.me.meth = LOCATE_parser___parser_prod___APrivateVisibility___n_kwprivate__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:446 */
+  ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:447 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APrivateVisibility___visit_all[] = "parser_prod::APrivateVisibility::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APrivateVisibility___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___parser_prod;
-  fra.me.line = 427;
+  fra.me.line = 451;
   fra.me.meth = LOCATE_parser___parser_prod___APrivateVisibility___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2391,26 +2461,26 @@ void parser___parser_prod___APrivateVisibility___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:429 */
+  /* parser/parser_prod.nit:453 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser___parser_prod, 429);
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_parser___parser_prod, 453);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AProtectedVisibility___empty_init[] = "parser_prod::AProtectedVisibility::empty_init";
 void parser___parser_prod___AProtectedVisibility___empty_init(val_t p0, int* init_table){
-  int itpos13 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AProtectedVisibility].i;
+  int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AProtectedVisibility].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos13]) return;
+  if (init_table[itpos12]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 433;
+  fra.me.line = 457;
   fra.me.meth = LOCATE_parser___parser_prod___AProtectedVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2418,19 +2488,19 @@ void parser___parser_prod___AProtectedVisibility___empty_init(val_t p0, int* ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos13] = 1;
+  init_table[itpos12] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility[] = "parser_prod::AProtectedVisibility::init_aprotectedvisibility";
 void parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0, val_t p1, int* init_table){
-  int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AProtectedVisibility].i;
+  int itpos13 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AProtectedVisibility].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos14]) return;
+  if (init_table[itpos13]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 435;
+  fra.me.line = 459;
   fra.me.meth = LOCATE_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2440,28 +2510,28 @@ void parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:435 */
+  /* parser/parser_prod.nit:459 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:439 */
+  /* parser/parser_prod.nit:463 */
   CALL_parser___parser_prod___AProtectedVisibility___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:440 */
+  /* parser/parser_prod.nit:464 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 440);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 464);
   }
   ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:441 */
+  /* parser/parser_prod.nit:465 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 441);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 465);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos14] = 1;
+  init_table[itpos13] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AProtectedVisibility___replace_child[] = "parser_prod::AProtectedVisibility::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AProtectedVisibility___replace_child[] = "parser_prod::AProtectedVisibility::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AProtectedVisibility___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;
@@ -2469,7 +2539,7 @@ void parser___parser_prod___AProtectedVisibility___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 444;
+  fra.me.line = 468;
   fra.me.meth = LOCATE_parser___parser_prod___AProtectedVisibility___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2481,11 +2551,11 @@ void parser___parser_prod___AProtectedVisibility___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:446 */
+  /* parser/parser_prod.nit:470 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser___parser_prod, 446);
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser___parser_prod, 470);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -2495,7 +2565,7 @@ void parser___parser_prod___AProtectedVisibility___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:447 */
+    /* parser/parser_prod.nit:471 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2510,39 +2580,61 @@ void parser___parser_prod___AProtectedVisibility___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:448 */
+      /* parser/parser_prod.nit:472 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 448);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 472);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:449 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:473 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwprotected, ID_parser___parser_nodes___TKwprotected)) /*cast TKwprotected*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 449);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 473);
       }
-      /* parser/parser_prod.nit:450 */
+      /* parser/parser_prod.nit:474 */
       ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:452 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 452);
+      /* parser/parser_prod.nit:476 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 476);
     }
-    /* parser/parser_prod.nit:454 */
+    /* parser/parser_prod.nit:478 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AProtectedVisibility___visit_all[] = "parser_prod::AProtectedVisibility::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AProtectedVisibility___n_kwprotected__eq[] = "parser_prod::AProtectedVisibility::(parser_nodes::AProtectedVisibility::n_kwprotected=)";
+void parser___parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 482;
+  fra.me.meth = LOCATE_parser___parser_prod___AProtectedVisibility___n_kwprotected__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:484 */
+  ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:485 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AProtectedVisibility___visit_all[] = "parser_prod::AProtectedVisibility::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AProtectedVisibility___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___parser_prod;
-  fra.me.line = 458;
+  fra.me.line = 489;
   fra.me.meth = LOCATE_parser___parser_prod___AProtectedVisibility___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2551,26 +2643,26 @@ void parser___parser_prod___AProtectedVisibility___visit_all(val_t p0, val_t p1)
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:460 */
+  /* parser/parser_prod.nit:491 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser___parser_prod, 460);
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_parser___parser_prod, 491);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIntrudeVisibility___empty_init[] = "parser_prod::AIntrudeVisibility::empty_init";
 void parser___parser_prod___AIntrudeVisibility___empty_init(val_t p0, int* init_table){
-  int itpos15 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntrudeVisibility].i;
+  int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntrudeVisibility].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos15]) return;
+  if (init_table[itpos14]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 464;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_parser___parser_prod___AIntrudeVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2578,19 +2670,19 @@ void parser___parser_prod___AIntrudeVisibility___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos15] = 1;
+  init_table[itpos14] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility[] = "parser_prod::AIntrudeVisibility::init_aintrudevisibility";
 void parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0, val_t p1, int* init_table){
-  int itpos16 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntrudeVisibility].i;
+  int itpos15 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntrudeVisibility].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos16]) return;
+  if (init_table[itpos15]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 466;
+  fra.me.line = 497;
   fra.me.meth = LOCATE_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2600,28 +2692,28 @@ void parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:466 */
+  /* parser/parser_prod.nit:497 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:470 */
+  /* parser/parser_prod.nit:501 */
   CALL_parser___parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:471 */
+  /* parser/parser_prod.nit:502 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 471);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 502);
   }
   ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:472 */
+  /* parser/parser_prod.nit:503 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 472);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 503);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos16] = 1;
+  init_table[itpos15] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIntrudeVisibility___replace_child[] = "parser_prod::AIntrudeVisibility::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIntrudeVisibility___replace_child[] = "parser_prod::AIntrudeVisibility::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIntrudeVisibility___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;
@@ -2629,7 +2721,7 @@ void parser___parser_prod___AIntrudeVisibility___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 475;
+  fra.me.line = 506;
   fra.me.meth = LOCATE_parser___parser_prod___AIntrudeVisibility___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2641,11 +2733,11 @@ void parser___parser_prod___AIntrudeVisibility___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:477 */
+  /* parser/parser_prod.nit:508 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser___parser_prod, 477);
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser___parser_prod, 508);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -2655,7 +2747,7 @@ void parser___parser_prod___AIntrudeVisibility___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:478 */
+    /* parser/parser_prod.nit:509 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2670,39 +2762,61 @@ void parser___parser_prod___AIntrudeVisibility___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:479 */
+      /* parser/parser_prod.nit:510 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 479);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 510);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:480 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:511 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwintrude, ID_parser___parser_nodes___TKwintrude)) /*cast TKwintrude*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 480);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 511);
       }
-      /* parser/parser_prod.nit:481 */
+      /* parser/parser_prod.nit:512 */
       ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:483 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 483);
+      /* parser/parser_prod.nit:514 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 514);
     }
-    /* parser/parser_prod.nit:485 */
+    /* parser/parser_prod.nit:516 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIntrudeVisibility___visit_all[] = "parser_prod::AIntrudeVisibility::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIntrudeVisibility___n_kwintrude__eq[] = "parser_prod::AIntrudeVisibility::(parser_nodes::AIntrudeVisibility::n_kwintrude=)";
+void parser___parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 520;
+  fra.me.meth = LOCATE_parser___parser_prod___AIntrudeVisibility___n_kwintrude__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:522 */
+  ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:523 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIntrudeVisibility___visit_all[] = "parser_prod::AIntrudeVisibility::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIntrudeVisibility___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___parser_prod;
-  fra.me.line = 489;
+  fra.me.line = 527;
   fra.me.meth = LOCATE_parser___parser_prod___AIntrudeVisibility___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2711,26 +2825,26 @@ void parser___parser_prod___AIntrudeVisibility___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:491 */
+  /* parser/parser_prod.nit:529 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser___parser_prod, 491);
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_parser___parser_prod, 529);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStdClassdef___empty_init[] = "parser_prod::AStdClassdef::empty_init";
 void parser___parser_prod___AStdClassdef___empty_init(val_t p0, int* init_table){
-  int itpos17 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdClassdef].i;
+  int itpos16 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdClassdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos17]) return;
+  if (init_table[itpos16]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 495;
+  fra.me.line = 533;
   fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2738,20 +2852,20 @@ void parser___parser_prod___AStdClassdef___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos17] = 1;
+  init_table[itpos16] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStdClassdef___init_astdclassdef[] = "parser_prod::AStdClassdef::init_astdclassdef";
 void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, val_t p10, val_t p11, int* init_table){
-  int itpos18 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdClassdef].i;
+  int itpos17 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdClassdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos18]) return;
+  if (init_table[itpos17]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 497;
+  fra.me.line = 535;
   fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___init_astdclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -2781,13 +2895,13 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   fra.me.REG[9] = p9;
   fra.me.REG[10] = p10;
   fra.me.REG[11] = p11;
-  /* parser/parser_prod.nit:497 */
+  /* parser/parser_prod.nit:535 */
   fra.me.REG[12] = fra.me.REG[0];
-  /* parser/parser_prod.nit:511 */
+  /* parser/parser_prod.nit:549 */
   CALL_parser___parser_prod___AStdClassdef___empty_init(fra.me.REG[12])(fra.me.REG[12], init_table);
-  /* parser/parser_prod.nit:512 */
+  /* parser/parser_prod.nit:550 */
   ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[12]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:513 */
+  /* parser/parser_prod.nit:551 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2802,16 +2916,16 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:514 */
+    /* parser/parser_prod.nit:552 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 514);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 552);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:516 */
+  /* parser/parser_prod.nit:554 */
   ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[12]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:517 */
+  /* parser/parser_prod.nit:555 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2826,42 +2940,42 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:518 */
+    /* parser/parser_prod.nit:556 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 518);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 556);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:520 */
+  /* parser/parser_prod.nit:558 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 520);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 558);
   }
   ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[12]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:521 */
+  /* parser/parser_prod.nit:559 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 521);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 559);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[12]);
-  /* parser/parser_prod.nit:522 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[12]);
+  /* parser/parser_prod.nit:560 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 522);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 560);
   }
   ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[12]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:523 */
+  /* parser/parser_prod.nit:561 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 523);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 561);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[12]);
-  /* parser/parser_prod.nit:524 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[12]);
+  /* parser/parser_prod.nit:562 */
   ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[12]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:525 */
+  /* parser/parser_prod.nit:563 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2876,17 +2990,17 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:526 */
+    /* parser/parser_prod.nit:564 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 526);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 564);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[12]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___init_astdclassdef_1));
-  /* parser/parser_prod.nit:533 */
+  /* parser/parser_prod.nit:571 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[12]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:534 */
+  /* parser/parser_prod.nit:572 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2901,16 +3015,16 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:535 */
+    /* parser/parser_prod.nit:573 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 535);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 573);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:537 */
+  /* parser/parser_prod.nit:575 */
   ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[12]) = fra.me.REG[8];
-  /* parser/parser_prod.nit:538 */
+  /* parser/parser_prod.nit:576 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2925,30 +3039,30 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:539 */
+    /* parser/parser_prod.nit:577 */
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 539);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 577);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[12]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[9])(fra.me.REG[9], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___init_astdclassdef_2));
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[10])(fra.me.REG[10], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___init_astdclassdef_3));
-  /* parser/parser_prod.nit:551 */
+  /* parser/parser_prod.nit:589 */
   REGB0 = TAG_Bool(fra.me.REG[11]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 551);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 589);
   }
   ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[12]) = fra.me.REG[11];
-  /* parser/parser_prod.nit:552 */
+  /* parser/parser_prod.nit:590 */
   REGB0 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 552);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 590);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos18] = 1;
+  init_table[itpos17] = 1;
   return;
 }
   void OC_parser___parser_prod___AStdClassdef___init_astdclassdef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -2956,7 +3070,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:528 */
+    /* parser/parser_prod.nit:566 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -2970,22 +3084,22 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:529 */
+    /* parser/parser_prod.nit:567 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AFormaldef, ID_parser___parser_nodes___AFormaldef)) /*cast AFormaldef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 529);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 567);
     }
-    /* parser/parser_prod.nit:530 */
+    /* parser/parser_prod.nit:568 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[12])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 530);
+      nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 568);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[12]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:531 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[12]);
+    /* parser/parser_prod.nit:569 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[12]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -2994,7 +3108,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:541 */
+    /* parser/parser_prod.nit:579 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -3008,22 +3122,22 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:542 */
+    /* parser/parser_prod.nit:580 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ASuperclass, ID_parser___parser_nodes___ASuperclass)) /*cast ASuperclass*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 542);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 580);
     }
-    /* parser/parser_prod.nit:543 */
+    /* parser/parser_prod.nit:581 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(closctx->REG[12])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 543);
+      nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 581);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(closctx->REG[12]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:544 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[12]);
+    /* parser/parser_prod.nit:582 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[12]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -3032,7 +3146,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:546 */
+    /* parser/parser_prod.nit:584 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -3046,26 +3160,26 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:547 */
+    /* parser/parser_prod.nit:585 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast APropdef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 547);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 585);
     }
-    /* parser/parser_prod.nit:548 */
+    /* parser/parser_prod.nit:586 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(closctx->REG[12])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 548);
+      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 586);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(closctx->REG[12]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:549 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[12]);
+    /* parser/parser_prod.nit:587 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[12]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AStdClassdef___replace_child[] = "parser_prod::AStdClassdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStdClassdef___replace_child[] = "parser_prod::AStdClassdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStdClassdef___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;
@@ -3076,7 +3190,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 555;
+  fra.me.line = 593;
   fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3088,7 +3202,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:557 */
+  /* parser/parser_prod.nit:595 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -3103,7 +3217,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:558 */
+    /* parser/parser_prod.nit:596 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3118,28 +3232,28 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:559 */
+      /* parser/parser_prod.nit:597 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 559);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 597);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:560 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:598 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 560);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 598);
       }
-      /* parser/parser_prod.nit:561 */
+      /* parser/parser_prod.nit:599 */
       ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:563 */
+      /* parser/parser_prod.nit:601 */
       ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:565 */
+    /* parser/parser_prod.nit:603 */
     goto label1;
   }
-  /* parser/parser_prod.nit:567 */
+  /* parser/parser_prod.nit:605 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -3154,7 +3268,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:568 */
+    /* parser/parser_prod.nit:606 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3169,32 +3283,32 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:569 */
+      /* parser/parser_prod.nit:607 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 569);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 607);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:570 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:608 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 570);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 608);
       }
-      /* parser/parser_prod.nit:571 */
+      /* parser/parser_prod.nit:609 */
       ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:573 */
+      /* parser/parser_prod.nit:611 */
       ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:575 */
+    /* parser/parser_prod.nit:613 */
     goto label1;
   }
-  /* parser/parser_prod.nit:577 */
+  /* parser/parser_prod.nit:615 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 577);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 615);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -3204,7 +3318,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:578 */
+    /* parser/parser_prod.nit:616 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3219,32 +3333,32 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:579 */
+      /* parser/parser_prod.nit:617 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 579);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 617);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:580 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:618 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 580);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 618);
       }
-      /* parser/parser_prod.nit:581 */
+      /* parser/parser_prod.nit:619 */
       ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:583 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 583);
+      /* parser/parser_prod.nit:621 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 621);
     }
-    /* parser/parser_prod.nit:585 */
+    /* parser/parser_prod.nit:623 */
     goto label1;
   }
-  /* parser/parser_prod.nit:587 */
+  /* parser/parser_prod.nit:625 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser___parser_prod, 587);
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser___parser_prod, 625);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -3254,7 +3368,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:588 */
+    /* parser/parser_prod.nit:626 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3269,28 +3383,28 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:589 */
+      /* parser/parser_prod.nit:627 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 589);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 627);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:590 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:628 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast AClasskind*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 590);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 628);
       }
-      /* parser/parser_prod.nit:591 */
+      /* parser/parser_prod.nit:629 */
       ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:593 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 593);
+      /* parser/parser_prod.nit:631 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 631);
     }
-    /* parser/parser_prod.nit:595 */
+    /* parser/parser_prod.nit:633 */
     goto label1;
   }
-  /* parser/parser_prod.nit:597 */
+  /* parser/parser_prod.nit:635 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -3305,7 +3419,206 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:598 */
+    /* parser/parser_prod.nit:636 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:637 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 637);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:638 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 638);
+      }
+      /* parser/parser_prod.nit:639 */
+      ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:641 */
+      ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* parser/parser_prod.nit:643 */
+    goto label1;
+  }
+  /* parser/parser_prod.nit:645 */
+  REGB0 = TAG_Int(0);
+  REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 645);
+  }
+  fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+  REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ../lib/standard/kernel.nit:404 */
+  while(1) {
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ../lib/standard/kernel.nit:404 */
+    if (UNTAG_Bool(REGB2)) {
+      /* parser/parser_prod.nit:645 */
+      REGB2 = REGB0;
+      /* parser/parser_prod.nit:646 */
+      REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 646);
+      }
+      fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+      fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
+      }
+      if (UNTAG_Bool(REGB3)) {
+        /* parser/parser_prod.nit:647 */
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(0);
+            REGB3 = REGB4;
+          } else {
+            REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB3 = REGB4;
+          }
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        if (UNTAG_Bool(REGB3)) {
+          /* parser/parser_prod.nit:648 */
+          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AFormaldef, ID_parser___parser_nodes___AFormaldef)) /*cast AFormaldef*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 648);
+          }
+          /* parser/parser_prod.nit:649 */
+          REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 649);
+          }
+          fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          /* parser/parser_prod.nit:650 */
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 650);
+          }
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        } else {
+          /* parser/parser_prod.nit:652 */
+          REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 652);
+          }
+          fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        }
+        /* parser/parser_prod.nit:654 */
+        goto label1;
+      }
+      /* ../lib/standard/kernel.nit:406 */
+      REGB2 = TAG_Int(1);
+      /* ../lib/standard/kernel.nit:245 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ../lib/standard/kernel.nit:406 */
+      REGB0 = REGB2;
+    } else {
+      /* ../lib/standard/kernel.nit:404 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* parser/parser_prod.nit:657 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:658 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:659 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 659);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:660 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 660);
+      }
+      /* parser/parser_prod.nit:661 */
+      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:663 */
+      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* parser/parser_prod.nit:665 */
+    goto label1;
+  }
+  /* parser/parser_prod.nit:667 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:668 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3320,276 +3633,65 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:599 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 599);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:600 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 600);
-      }
-      /* parser/parser_prod.nit:601 */
-      ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:603 */
-      ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = NIT_NULL;
-    }
-    /* parser/parser_prod.nit:605 */
-    goto label1;
-  }
-  /* parser/parser_prod.nit:607 */
-  REGB0 = TAG_Int(0);
-  REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 607);
-  }
-  fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-  REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:235 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
-    if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:607 */
-      REGB2 = REGB0;
-      /* parser/parser_prod.nit:608 */
-      REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 608);
-      }
-      fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
-      }
-      if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:609 */
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-        } else {
-          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-          if (UNTAG_Bool(REGB4)) {
-            REGB4 = TAG_Bool(0);
-            REGB3 = REGB4;
-          } else {
-            REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-            REGB3 = REGB4;
-          }
-        }
-        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
-        if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:610 */
-          REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AFormaldef, ID_parser___parser_nodes___AFormaldef)) /*cast AFormaldef*/;
-          if (UNTAG_Bool(REGB3)) {
-          } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 610);
-          }
-          /* parser/parser_prod.nit:611 */
-          REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB3)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 611);
-          }
-          fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:612 */
-          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-          if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 612);
-          }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-        } else {
-          /* parser/parser_prod.nit:614 */
-          REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
-          if (UNTAG_Bool(REGB3)) {
-          } else {
-            nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 614);
-          }
-          fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
-        }
-        /* parser/parser_prod.nit:616 */
-        goto label1;
-      }
-      /* ../lib/standard/kernel.nit:357 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
-      REGB0 = REGB2;
-    } else {
-      /* ../lib/standard/kernel.nit:355 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* parser/parser_prod.nit:619 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:620 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:621 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 621);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:622 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 622);
-      }
-      /* parser/parser_prod.nit:623 */
-      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:625 */
-      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
-    }
-    /* parser/parser_prod.nit:627 */
-    goto label1;
-  }
-  /* parser/parser_prod.nit:629 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:630 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:631 */
+      /* parser/parser_prod.nit:669 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 631);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 669);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:632 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:670 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 632);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 670);
       }
-      /* parser/parser_prod.nit:633 */
+      /* parser/parser_prod.nit:671 */
       ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:635 */
+      /* parser/parser_prod.nit:673 */
       ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:637 */
+    /* parser/parser_prod.nit:675 */
     goto label1;
   }
-  /* parser/parser_prod.nit:639 */
+  /* parser/parser_prod.nit:677 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 639);
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 677);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:639 */
+      /* parser/parser_prod.nit:677 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:640 */
+      /* parser/parser_prod.nit:678 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 640);
+        nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 678);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:641 */
+        /* parser/parser_prod.nit:679 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -3604,95 +3706,89 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:642 */
+          /* parser/parser_prod.nit:680 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASuperclass, ID_parser___parser_nodes___ASuperclass)) /*cast ASuperclass*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 642);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 680);
           }
-          /* parser/parser_prod.nit:643 */
+          /* parser/parser_prod.nit:681 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 643);
+            nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 681);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:644 */
+          /* parser/parser_prod.nit:682 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 644);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 682);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:646 */
+          /* parser/parser_prod.nit:684 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 646);
+            nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 684);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:648 */
+        /* parser/parser_prod.nit:686 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label3;
     }
   }
   label3: while(0);
-  /* parser/parser_prod.nit:651 */
+  /* parser/parser_prod.nit:689 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 651);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 689);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:651 */
+      /* parser/parser_prod.nit:689 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:652 */
+      /* parser/parser_prod.nit:690 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 652);
+        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 690);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:653 */
+        /* parser/parser_prod.nit:691 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -3707,56 +3803,56 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:654 */
+          /* parser/parser_prod.nit:692 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast APropdef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 654);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 692);
           }
-          /* parser/parser_prod.nit:655 */
+          /* parser/parser_prod.nit:693 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 655);
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 693);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:656 */
+          /* parser/parser_prod.nit:694 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 656);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 694);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:658 */
+          /* parser/parser_prod.nit:696 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 658);
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 696);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:660 */
+        /* parser/parser_prod.nit:698 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
   label4: while(0);
-  /* parser/parser_prod.nit:663 */
+  /* parser/parser_prod.nit:701 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 663);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 701);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -3766,7 +3862,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:664 */
+    /* parser/parser_prod.nit:702 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3781,32 +3877,318 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:665 */
+      /* parser/parser_prod.nit:703 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 665);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 703);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:666 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:704 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast TKwend*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 666);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 704);
       }
-      /* parser/parser_prod.nit:667 */
+      /* parser/parser_prod.nit:705 */
       ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:669 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 669);
+      /* parser/parser_prod.nit:707 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 707);
     }
-    /* parser/parser_prod.nit:671 */
+    /* parser/parser_prod.nit:709 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStdClassdef___visit_all[] = "parser_prod::AStdClassdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_doc__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_doc=)";
+void parser___parser_prod___AStdClassdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 713;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:715 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:716 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:717 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 717);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_kwredef__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_kwredef=)";
+void parser___parser_prod___AStdClassdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 720;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:722 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:723 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:724 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 724);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_visibility__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_visibility=)";
+void parser___parser_prod___AStdClassdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 727;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:729 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:730 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_classkind__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_classkind=)";
+void parser___parser_prod___AStdClassdef___n_classkind__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 732;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_classkind__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:734 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:735 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_id__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_id=)";
+void parser___parser_prod___AStdClassdef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 737;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:739 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:740 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:741 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 741);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_annotations__eq[] = "parser_prod::AStdClassdef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AStdClassdef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 744;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:746 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:747 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:748 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 748);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_extern_code_block__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_extern_code_block=)";
+void parser___parser_prod___AStdClassdef___n_extern_code_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 751;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_extern_code_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:753 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:754 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:755 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 755);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___n_kwend__eq[] = "parser_prod::AStdClassdef::(parser_nodes::AStdClassdef::n_kwend=)";
+void parser___parser_prod___AStdClassdef___n_kwend__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 758;
+  fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___n_kwend__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:760 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:761 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStdClassdef___visit_all[] = "parser_prod::AStdClassdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3814,7 +4196,7 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 675;
+  fra.me.line = 765;
   fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3825,9 +4207,9 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:675 */
+  /* parser/parser_prod.nit:765 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:677 */
+  /* parser/parser_prod.nit:767 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3843,16 +4225,16 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:678 */
+    /* parser/parser_prod.nit:768 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 678);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 768);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:680 */
+  /* parser/parser_prod.nit:770 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3868,32 +4250,32 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:681 */
+    /* parser/parser_prod.nit:771 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 681);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 771);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:683 */
+  /* parser/parser_prod.nit:773 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 683);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 773);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:684 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:774 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser___parser_prod, 684);
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_parser___parser_prod, 774);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:685 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:775 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3909,24 +4291,24 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:686 */
+    /* parser/parser_prod.nit:776 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 686);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 776);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:688 */
+  /* parser/parser_prod.nit:778 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 688);
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 778);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___visit_all_1));
-  /* parser/parser_prod.nit:691 */
+  /* parser/parser_prod.nit:781 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3942,16 +4324,16 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:692 */
+    /* parser/parser_prod.nit:782 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 692);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 782);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:694 */
+  /* parser/parser_prod.nit:784 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3967,39 +4349,39 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:695 */
+    /* parser/parser_prod.nit:785 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 695);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 785);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:697 */
+  /* parser/parser_prod.nit:787 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 697);
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 787);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___visit_all_2));
-  /* parser/parser_prod.nit:700 */
+  /* parser/parser_prod.nit:790 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 700);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 790);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___visit_all_3));
-  /* parser/parser_prod.nit:703 */
+  /* parser/parser_prod.nit:793 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 703);
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_parser___parser_prod, 793);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_kwend(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -4019,8 +4401,8 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:689 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:779 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -4040,8 +4422,8 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:698 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:788 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -4061,20 +4443,20 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:701 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:791 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ATopClassdef___empty_init[] = "parser_prod::ATopClassdef::empty_init";
 void parser___parser_prod___ATopClassdef___empty_init(val_t p0, int* init_table){
-  int itpos19 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATopClassdef].i;
+  int itpos18 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATopClassdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos19]) return;
+  if (init_table[itpos18]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 707;
+  fra.me.line = 797;
   fra.me.meth = LOCATE_parser___parser_prod___ATopClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4082,18 +4464,18 @@ void parser___parser_prod___ATopClassdef___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos19] = 1;
+  init_table[itpos18] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ATopClassdef___init_atopclassdef[] = "parser_prod::ATopClassdef::init_atopclassdef";
 void parser___parser_prod___ATopClassdef___init_atopclassdef(val_t p0, val_t p1, int* init_table){
-  int itpos20 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATopClassdef].i;
+  int itpos19 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATopClassdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos20]) return;
+  if (init_table[itpos19]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 709;
+  fra.me.line = 799;
   fra.me.meth = LOCATE_parser___parser_prod___ATopClassdef___init_atopclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4102,11 +4484,11 @@ void parser___parser_prod___ATopClassdef___init_atopclassdef(val_t p0, val_t p1,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:713 */
+  /* parser/parser_prod.nit:803 */
   CALL_parser___parser_prod___ATopClassdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ATopClassdef___init_atopclassdef_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos20] = 1;
+  init_table[itpos19] = 1;
   return;
 }
   void OC_parser___parser_prod___ATopClassdef___init_atopclassdef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -4114,7 +4496,7 @@ void parser___parser_prod___ATopClassdef___init_atopclassdef(val_t p0, val_t p1,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:714 */
+    /* parser/parser_prod.nit:804 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -4128,26 +4510,26 @@ void parser___parser_prod___ATopClassdef___init_atopclassdef(val_t p0, val_t p1,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:715 */
+    /* parser/parser_prod.nit:805 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast APropdef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 715);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 805);
     }
-    /* parser/parser_prod.nit:716 */
+    /* parser/parser_prod.nit:806 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 716);
+      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 806);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:717 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:807 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ATopClassdef___replace_child[] = "parser_prod::ATopClassdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ATopClassdef___replace_child[] = "parser_prod::ATopClassdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ATopClassdef___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;
@@ -4158,7 +4540,7 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 721;
+  fra.me.line = 811;
   fra.me.meth = LOCATE_parser___parser_prod___ATopClassdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4170,50 +4552,44 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:723 */
+  /* parser/parser_prod.nit:813 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 723);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 813);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:723 */
+      /* parser/parser_prod.nit:813 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:724 */
+      /* parser/parser_prod.nit:814 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 724);
+        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 814);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:725 */
+        /* parser/parser_prod.nit:815 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -4228,47 +4604,47 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:726 */
+          /* parser/parser_prod.nit:816 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast APropdef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 726);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 816);
           }
-          /* parser/parser_prod.nit:727 */
+          /* parser/parser_prod.nit:817 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 727);
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 817);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:728 */
+          /* parser/parser_prod.nit:818 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 728);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 818);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:730 */
+          /* parser/parser_prod.nit:820 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 730);
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 820);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:732 */
+        /* parser/parser_prod.nit:822 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -4277,14 +4653,14 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATopClassdef___visit_all[] = "parser_prod::ATopClassdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ATopClassdef___visit_all[] = "parser_prod::ATopClassdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ATopClassdef___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___parser_prod;
-  fra.me.line = 737;
+  fra.me.line = 829;
   fra.me.meth = LOCATE_parser___parser_prod___ATopClassdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4293,11 +4669,11 @@ void parser___parser_prod___ATopClassdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:739 */
+  /* parser/parser_prod.nit:831 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 739);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 831);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ATopClassdef___visit_all_1));
@@ -4320,20 +4696,20 @@ void parser___parser_prod___ATopClassdef___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:740 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:832 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AMainClassdef___empty_init[] = "parser_prod::AMainClassdef::empty_init";
 void parser___parser_prod___AMainClassdef___empty_init(val_t p0, int* init_table){
-  int itpos21 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainClassdef].i;
+  int itpos20 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainClassdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos21]) return;
+  if (init_table[itpos20]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 745;
+  fra.me.line = 837;
   fra.me.meth = LOCATE_parser___parser_prod___AMainClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4341,18 +4717,18 @@ void parser___parser_prod___AMainClassdef___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos21] = 1;
+  init_table[itpos20] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMainClassdef___init_amainclassdef[] = "parser_prod::AMainClassdef::init_amainclassdef";
 void parser___parser_prod___AMainClassdef___init_amainclassdef(val_t p0, val_t p1, int* init_table){
-  int itpos22 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainClassdef].i;
+  int itpos21 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainClassdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos22]) return;
+  if (init_table[itpos21]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 747;
+  fra.me.line = 839;
   fra.me.meth = LOCATE_parser___parser_prod___AMainClassdef___init_amainclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4361,11 +4737,11 @@ void parser___parser_prod___AMainClassdef___init_amainclassdef(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:751 */
+  /* parser/parser_prod.nit:843 */
   CALL_parser___parser_prod___AMainClassdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AMainClassdef___init_amainclassdef_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos22] = 1;
+  init_table[itpos21] = 1;
   return;
 }
   void OC_parser___parser_prod___AMainClassdef___init_amainclassdef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -4373,7 +4749,7 @@ void parser___parser_prod___AMainClassdef___init_amainclassdef(val_t p0, val_t p
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:752 */
+    /* parser/parser_prod.nit:844 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -4387,26 +4763,26 @@ void parser___parser_prod___AMainClassdef___init_amainclassdef(val_t p0, val_t p
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:753 */
+    /* parser/parser_prod.nit:845 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast APropdef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 753);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 845);
     }
-    /* parser/parser_prod.nit:754 */
+    /* parser/parser_prod.nit:846 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 754);
+      nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 846);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:755 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:847 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AMainClassdef___replace_child[] = "parser_prod::AMainClassdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMainClassdef___replace_child[] = "parser_prod::AMainClassdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMainClassdef___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;
@@ -4417,7 +4793,7 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 759;
+  fra.me.line = 851;
   fra.me.meth = LOCATE_parser___parser_prod___AMainClassdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4429,50 +4805,44 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:761 */
+  /* parser/parser_prod.nit:853 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 761);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 853);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:761 */
+      /* parser/parser_prod.nit:853 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:762 */
+      /* parser/parser_prod.nit:854 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 762);
+        nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 854);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:763 */
+        /* parser/parser_prod.nit:855 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -4487,47 +4857,47 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:764 */
+          /* parser/parser_prod.nit:856 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast APropdef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 764);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 856);
           }
-          /* parser/parser_prod.nit:765 */
+          /* parser/parser_prod.nit:857 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 765);
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 857);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:766 */
+          /* parser/parser_prod.nit:858 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 766);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 858);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:768 */
+          /* parser/parser_prod.nit:860 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 768);
+            nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 860);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:770 */
+        /* parser/parser_prod.nit:862 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -4536,14 +4906,14 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMainClassdef___visit_all[] = "parser_prod::AMainClassdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMainClassdef___visit_all[] = "parser_prod::AMainClassdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMainClassdef___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___parser_prod;
-  fra.me.line = 775;
+  fra.me.line = 869;
   fra.me.meth = LOCATE_parser___parser_prod___AMainClassdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4552,11 +4922,11 @@ void parser___parser_prod___AMainClassdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:777 */
+  /* parser/parser_prod.nit:871 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 777);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 871);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AMainClassdef___visit_all_1));
@@ -4579,20 +4949,20 @@ void parser___parser_prod___AMainClassdef___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:778 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:872 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AConcreteClasskind___empty_init[] = "parser_prod::AConcreteClasskind::empty_init";
 void parser___parser_prod___AConcreteClasskind___empty_init(val_t p0, int* init_table){
-  int itpos23 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteClasskind].i;
+  int itpos22 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteClasskind].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos23]) return;
+  if (init_table[itpos22]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 783;
+  fra.me.line = 877;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4600,19 +4970,19 @@ void parser___parser_prod___AConcreteClasskind___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos23] = 1;
+  init_table[itpos22] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind[] = "parser_prod::AConcreteClasskind::init_aconcreteclasskind";
 void parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0, val_t p1, int* init_table){
-  int itpos24 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteClasskind].i;
+  int itpos23 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteClasskind].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos24]) return;
+  if (init_table[itpos23]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 785;
+  fra.me.line = 879;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4622,28 +4992,28 @@ void parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:785 */
+  /* parser/parser_prod.nit:879 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:789 */
+  /* parser/parser_prod.nit:883 */
   CALL_parser___parser_prod___AConcreteClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:790 */
+  /* parser/parser_prod.nit:884 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 790);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 884);
   }
   ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:791 */
+  /* parser/parser_prod.nit:885 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 791);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 885);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos24] = 1;
+  init_table[itpos23] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AConcreteClasskind___replace_child[] = "parser_prod::AConcreteClasskind::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AConcreteClasskind___replace_child[] = "parser_prod::AConcreteClasskind::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AConcreteClasskind___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;
@@ -4651,7 +5021,7 @@ void parser___parser_prod___AConcreteClasskind___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 794;
+  fra.me.line = 888;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteClasskind___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4663,11 +5033,11 @@ void parser___parser_prod___AConcreteClasskind___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:796 */
+  /* parser/parser_prod.nit:890 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 796);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 890);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -4677,7 +5047,7 @@ void parser___parser_prod___AConcreteClasskind___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:797 */
+    /* parser/parser_prod.nit:891 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -4692,39 +5062,61 @@ void parser___parser_prod___AConcreteClasskind___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:798 */
+      /* parser/parser_prod.nit:892 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 798);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 892);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:799 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:893 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast TKwclass*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 799);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 893);
       }
-      /* parser/parser_prod.nit:800 */
+      /* parser/parser_prod.nit:894 */
       ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:802 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 802);
+      /* parser/parser_prod.nit:896 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 896);
     }
-    /* parser/parser_prod.nit:804 */
+    /* parser/parser_prod.nit:898 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AConcreteClasskind___visit_all[] = "parser_prod::AConcreteClasskind::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AConcreteClasskind___n_kwclass__eq[] = "parser_prod::AConcreteClasskind::(parser_nodes::AConcreteClasskind::n_kwclass=)";
+void parser___parser_prod___AConcreteClasskind___n_kwclass__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 902;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteClasskind___n_kwclass__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:904 */
+  ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:905 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteClasskind___visit_all[] = "parser_prod::AConcreteClasskind::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AConcreteClasskind___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___parser_prod;
-  fra.me.line = 808;
+  fra.me.line = 909;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteClasskind___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4733,26 +5125,26 @@ void parser___parser_prod___AConcreteClasskind___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:810 */
+  /* parser/parser_prod.nit:911 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 810);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 911);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAbstractClasskind___empty_init[] = "parser_prod::AAbstractClasskind::empty_init";
 void parser___parser_prod___AAbstractClasskind___empty_init(val_t p0, int* init_table){
-  int itpos25 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbstractClasskind].i;
+  int itpos24 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbstractClasskind].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos25]) return;
+  if (init_table[itpos24]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 814;
+  fra.me.line = 915;
   fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4760,19 +5152,19 @@ void parser___parser_prod___AAbstractClasskind___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos25] = 1;
+  init_table[itpos24] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind[] = "parser_prod::AAbstractClasskind::init_aabstractclasskind";
 void parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos26 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbstractClasskind].i;
+  int itpos25 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbstractClasskind].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos26]) return;
+  if (init_table[itpos25]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 816;
+  fra.me.line = 917;
   fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4784,41 +5176,41 @@ void parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:816 */
+  /* parser/parser_prod.nit:917 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:821 */
+  /* parser/parser_prod.nit:922 */
   CALL_parser___parser_prod___AAbstractClasskind___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:822 */
+  /* parser/parser_prod.nit:923 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 822);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 923);
   }
   ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:823 */
+  /* parser/parser_prod.nit:924 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 823);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 924);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:824 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:925 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 824);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 925);
   }
   ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:825 */
+  /* parser/parser_prod.nit:926 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 825);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 926);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos26] = 1;
+  init_table[itpos25] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAbstractClasskind___replace_child[] = "parser_prod::AAbstractClasskind::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAbstractClasskind___replace_child[] = "parser_prod::AAbstractClasskind::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAbstractClasskind___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;
@@ -4826,7 +5218,7 @@ void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 828;
+  fra.me.line = 929;
   fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4838,11 +5230,11 @@ void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:830 */
+  /* parser/parser_prod.nit:931 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser___parser_prod, 830);
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser___parser_prod, 931);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -4852,7 +5244,7 @@ void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:831 */
+    /* parser/parser_prod.nit:932 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -4867,32 +5259,32 @@ void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:832 */
+      /* parser/parser_prod.nit:933 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 832);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 933);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:833 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:934 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwabstract, ID_parser___parser_nodes___TKwabstract)) /*cast TKwabstract*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 833);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 934);
       }
-      /* parser/parser_prod.nit:834 */
+      /* parser/parser_prod.nit:935 */
       ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:836 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 836);
+      /* parser/parser_prod.nit:937 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 937);
     }
-    /* parser/parser_prod.nit:838 */
+    /* parser/parser_prod.nit:939 */
     goto label1;
   }
-  /* parser/parser_prod.nit:840 */
+  /* parser/parser_prod.nit:941 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 840);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 941);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -4902,7 +5294,7 @@ void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:841 */
+    /* parser/parser_prod.nit:942 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -4917,39 +5309,83 @@ void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:842 */
+      /* parser/parser_prod.nit:943 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 842);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 943);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:843 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:944 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast TKwclass*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 843);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 944);
       }
-      /* parser/parser_prod.nit:844 */
+      /* parser/parser_prod.nit:945 */
       ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:846 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 846);
+      /* parser/parser_prod.nit:947 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 947);
     }
-    /* parser/parser_prod.nit:848 */
+    /* parser/parser_prod.nit:949 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAbstractClasskind___visit_all[] = "parser_prod::AAbstractClasskind::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAbstractClasskind___n_kwabstract__eq[] = "parser_prod::AAbstractClasskind::(parser_nodes::AAbstractClasskind::n_kwabstract=)";
+void parser___parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 953;
+  fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___n_kwabstract__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:955 */
+  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:956 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAbstractClasskind___n_kwclass__eq[] = "parser_prod::AAbstractClasskind::(parser_nodes::AAbstractClasskind::n_kwclass=)";
+void parser___parser_prod___AAbstractClasskind___n_kwclass__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 958;
+  fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___n_kwclass__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:960 */
+  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:961 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAbstractClasskind___visit_all[] = "parser_prod::AAbstractClasskind::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAbstractClasskind___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 852;
+  fra.me.line = 965;
   fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4959,34 +5395,34 @@ void parser___parser_prod___AAbstractClasskind___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:854 */
+  /* parser/parser_prod.nit:967 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser___parser_prod, 854);
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_parser___parser_prod, 967);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:855 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:968 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 855);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_parser___parser_prod, 968);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInterfaceClasskind___empty_init[] = "parser_prod::AInterfaceClasskind::empty_init";
 void parser___parser_prod___AInterfaceClasskind___empty_init(val_t p0, int* init_table){
-  int itpos27 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInterfaceClasskind].i;
+  int itpos26 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInterfaceClasskind].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos27]) return;
+  if (init_table[itpos26]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 859;
+  fra.me.line = 972;
   fra.me.meth = LOCATE_parser___parser_prod___AInterfaceClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4994,19 +5430,19 @@ void parser___parser_prod___AInterfaceClasskind___empty_init(val_t p0, int* init
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos27] = 1;
+  init_table[itpos26] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind[] = "parser_prod::AInterfaceClasskind::init_ainterfaceclasskind";
 void parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0, val_t p1, int* init_table){
-  int itpos28 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInterfaceClasskind].i;
+  int itpos27 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInterfaceClasskind].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos28]) return;
+  if (init_table[itpos27]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 861;
+  fra.me.line = 974;
   fra.me.meth = LOCATE_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5016,28 +5452,28 @@ void parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:861 */
+  /* parser/parser_prod.nit:974 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:865 */
+  /* parser/parser_prod.nit:978 */
   CALL_parser___parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:866 */
+  /* parser/parser_prod.nit:979 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 866);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 979);
   }
   ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:867 */
+  /* parser/parser_prod.nit:980 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 867);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 980);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos28] = 1;
+  init_table[itpos27] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInterfaceClasskind___replace_child[] = "parser_prod::AInterfaceClasskind::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AInterfaceClasskind___replace_child[] = "parser_prod::AInterfaceClasskind::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AInterfaceClasskind___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;
@@ -5045,7 +5481,7 @@ void parser___parser_prod___AInterfaceClasskind___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 870;
+  fra.me.line = 983;
   fra.me.meth = LOCATE_parser___parser_prod___AInterfaceClasskind___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5057,11 +5493,11 @@ void parser___parser_prod___AInterfaceClasskind___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:872 */
+  /* parser/parser_prod.nit:985 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser___parser_prod, 872);
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser___parser_prod, 985);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -5071,7 +5507,7 @@ void parser___parser_prod___AInterfaceClasskind___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:873 */
+    /* parser/parser_prod.nit:986 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5086,39 +5522,61 @@ void parser___parser_prod___AInterfaceClasskind___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:874 */
+      /* parser/parser_prod.nit:987 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 874);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 987);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:875 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:988 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwinterface, ID_parser___parser_nodes___TKwinterface)) /*cast TKwinterface*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 875);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 988);
       }
-      /* parser/parser_prod.nit:876 */
+      /* parser/parser_prod.nit:989 */
       ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:878 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 878);
+      /* parser/parser_prod.nit:991 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 991);
     }
-    /* parser/parser_prod.nit:880 */
+    /* parser/parser_prod.nit:993 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInterfaceClasskind___visit_all[] = "parser_prod::AInterfaceClasskind::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AInterfaceClasskind___n_kwinterface__eq[] = "parser_prod::AInterfaceClasskind::(parser_nodes::AInterfaceClasskind::n_kwinterface=)";
+void parser___parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 997;
+  fra.me.meth = LOCATE_parser___parser_prod___AInterfaceClasskind___n_kwinterface__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:999 */
+  ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1000 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInterfaceClasskind___visit_all[] = "parser_prod::AInterfaceClasskind::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AInterfaceClasskind___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___parser_prod;
-  fra.me.line = 884;
+  fra.me.line = 1004;
   fra.me.meth = LOCATE_parser___parser_prod___AInterfaceClasskind___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5127,26 +5585,26 @@ void parser___parser_prod___AInterfaceClasskind___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:886 */
+  /* parser/parser_prod.nit:1006 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser___parser_prod, 886);
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_parser___parser_prod, 1006);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEnumClasskind___empty_init[] = "parser_prod::AEnumClasskind::empty_init";
 void parser___parser_prod___AEnumClasskind___empty_init(val_t p0, int* init_table){
-  int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEnumClasskind].i;
+  int itpos28 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEnumClasskind].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos29]) return;
+  if (init_table[itpos28]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 890;
+  fra.me.line = 1010;
   fra.me.meth = LOCATE_parser___parser_prod___AEnumClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5154,19 +5612,19 @@ void parser___parser_prod___AEnumClasskind___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos29] = 1;
+  init_table[itpos28] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEnumClasskind___init_aenumclasskind[] = "parser_prod::AEnumClasskind::init_aenumclasskind";
 void parser___parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0, val_t p1, int* init_table){
-  int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEnumClasskind].i;
+  int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEnumClasskind].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos30]) return;
+  if (init_table[itpos29]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 892;
+  fra.me.line = 1012;
   fra.me.meth = LOCATE_parser___parser_prod___AEnumClasskind___init_aenumclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5176,28 +5634,28 @@ void parser___parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:892 */
+  /* parser/parser_prod.nit:1012 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:896 */
+  /* parser/parser_prod.nit:1016 */
   CALL_parser___parser_prod___AEnumClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:897 */
+  /* parser/parser_prod.nit:1017 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 897);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1017);
   }
   ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:898 */
+  /* parser/parser_prod.nit:1018 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 898);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1018);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos30] = 1;
+  init_table[itpos29] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEnumClasskind___replace_child[] = "parser_prod::AEnumClasskind::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AEnumClasskind___replace_child[] = "parser_prod::AEnumClasskind::(parser_nodes::ANode::replace_child)";
 void parser___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;
@@ -5205,7 +5663,7 @@ void parser___parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 901;
+  fra.me.line = 1021;
   fra.me.meth = LOCATE_parser___parser_prod___AEnumClasskind___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5217,11 +5675,11 @@ void parser___parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:903 */
+  /* parser/parser_prod.nit:1023 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser___parser_prod, 903);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser___parser_prod, 1023);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -5231,7 +5689,7 @@ void parser___parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:904 */
+    /* parser/parser_prod.nit:1024 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5246,39 +5704,61 @@ void parser___parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:905 */
+      /* parser/parser_prod.nit:1025 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 905);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1025);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:906 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1026 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwenum, ID_parser___parser_nodes___TKwenum)) /*cast TKwenum*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 906);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1026);
       }
-      /* parser/parser_prod.nit:907 */
+      /* parser/parser_prod.nit:1027 */
       ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:909 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 909);
+      /* parser/parser_prod.nit:1029 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1029);
     }
-    /* parser/parser_prod.nit:911 */
+    /* parser/parser_prod.nit:1031 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEnumClasskind___visit_all[] = "parser_prod::AEnumClasskind::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AEnumClasskind___n_kwenum__eq[] = "parser_prod::AEnumClasskind::(parser_nodes::AEnumClasskind::n_kwenum=)";
+void parser___parser_prod___AEnumClasskind___n_kwenum__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1035;
+  fra.me.meth = LOCATE_parser___parser_prod___AEnumClasskind___n_kwenum__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1037 */
+  ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1038 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEnumClasskind___visit_all[] = "parser_prod::AEnumClasskind::(parser_nodes::ANode::visit_all)";
 void parser___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___parser_prod;
-  fra.me.line = 915;
+  fra.me.line = 1042;
   fra.me.meth = LOCATE_parser___parser_prod___AEnumClasskind___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5287,26 +5767,26 @@ void parser___parser_prod___AEnumClasskind___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:917 */
+  /* parser/parser_prod.nit:1044 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser___parser_prod, 917);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser___parser_prod, 1044);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternClasskind___empty_init[] = "parser_prod::AExternClasskind::empty_init";
 void parser___parser_prod___AExternClasskind___empty_init(val_t p0, int* init_table){
-  int itpos31 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternClasskind].i;
+  int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternClasskind].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos31]) return;
+  if (init_table[itpos30]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 921;
+  fra.me.line = 1048;
   fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5314,20 +5794,20 @@ void parser___parser_prod___AExternClasskind___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos31] = 1;
+  init_table[itpos30] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternClasskind___init_aexternclasskind[] = "parser_prod::AExternClasskind::init_aexternclasskind";
 void parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos32 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternClasskind].i;
+  int itpos31 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternClasskind].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos32]) return;
+  if (init_table[itpos31]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 923;
+  fra.me.line = 1050;
   fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___init_aexternclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5339,26 +5819,26 @@ void parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:923 */
+  /* parser/parser_prod.nit:1050 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:928 */
+  /* parser/parser_prod.nit:1055 */
   CALL_parser___parser_prod___AExternClasskind___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:929 */
+  /* parser/parser_prod.nit:1056 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 929);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1056);
   }
   ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:930 */
+  /* parser/parser_prod.nit:1057 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 930);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1057);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:931 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1058 */
   ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:932 */
+  /* parser/parser_prod.nit:1059 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5373,18 +5853,18 @@ void parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:933 */
+    /* parser/parser_prod.nit:1060 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 933);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1060);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos32] = 1;
+  init_table[itpos31] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternClasskind___replace_child[] = "parser_prod::AExternClasskind::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AExternClasskind___replace_child[] = "parser_prod::AExternClasskind::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AExternClasskind___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;
@@ -5392,7 +5872,7 @@ void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 937;
+  fra.me.line = 1064;
   fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5404,11 +5884,11 @@ void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:939 */
+  /* parser/parser_prod.nit:1066 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_parser___parser_prod, 939);
+    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_parser___parser_prod, 1066);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -5418,7 +5898,7 @@ void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:940 */
+    /* parser/parser_prod.nit:1067 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5433,28 +5913,28 @@ void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:941 */
+      /* parser/parser_prod.nit:1068 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 941);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1068);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:942 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1069 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast TKwextern*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 942);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1069);
       }
-      /* parser/parser_prod.nit:943 */
+      /* parser/parser_prod.nit:1070 */
       ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:945 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 945);
+      /* parser/parser_prod.nit:1072 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1072);
     }
-    /* parser/parser_prod.nit:947 */
+    /* parser/parser_prod.nit:1074 */
     goto label1;
   }
-  /* parser/parser_prod.nit:949 */
+  /* parser/parser_prod.nit:1076 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -5469,7 +5949,7 @@ void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:950 */
+    /* parser/parser_prod.nit:1077 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5484,32 +5964,98 @@ void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:951 */
+      /* parser/parser_prod.nit:1078 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 951);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1078);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:952 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1079 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast TKwclass*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 952);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1079);
       }
-      /* parser/parser_prod.nit:953 */
+      /* parser/parser_prod.nit:1080 */
       ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:955 */
+      /* parser/parser_prod.nit:1082 */
       ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:957 */
+    /* parser/parser_prod.nit:1084 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternClasskind___visit_all[] = "parser_prod::AExternClasskind::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExternClasskind___n_kwextern__eq[] = "parser_prod::AExternClasskind::(parser_nodes::AExternClasskind::n_kwextern=)";
+void parser___parser_prod___AExternClasskind___n_kwextern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1088;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___n_kwextern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1090 */
+  ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1091 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternClasskind___n_kwclass__eq[] = "parser_prod::AExternClasskind::(parser_nodes::AExternClasskind::n_kwclass=)";
+void parser___parser_prod___AExternClasskind___n_kwclass__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1093;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___n_kwclass__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1095 */
+  ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1096 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1097 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1097);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternClasskind___visit_all[] = "parser_prod::AExternClasskind::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExternClasskind___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -5517,7 +6063,7 @@ void parser___parser_prod___AExternClasskind___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 961;
+  fra.me.line = 1102;
   fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5528,17 +6074,17 @@ void parser___parser_prod___AExternClasskind___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:961 */
+  /* parser/parser_prod.nit:1102 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:963 */
+  /* parser/parser_prod.nit:1104 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_parser___parser_prod, 963);
+    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_parser___parser_prod, 1104);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:964 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1105 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5554,27 +6100,27 @@ void parser___parser_prod___AExternClasskind___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:965 */
+    /* parser/parser_prod.nit:1106 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast TKwclass*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 965);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1106);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFormaldef___empty_init[] = "parser_prod::AFormaldef::empty_init";
 void parser___parser_prod___AFormaldef___empty_init(val_t p0, int* init_table){
-  int itpos33 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFormaldef].i;
+  int itpos32 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFormaldef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos33]) return;
+  if (init_table[itpos32]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 970;
+  fra.me.line = 1111;
   fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5582,20 +6128,20 @@ void parser___parser_prod___AFormaldef___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos33] = 1;
+  init_table[itpos32] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFormaldef___init_aformaldef[] = "parser_prod::AFormaldef::init_aformaldef";
 void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos34 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFormaldef].i;
+  int itpos33 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFormaldef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos34]) return;
+  if (init_table[itpos33]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 972;
+  fra.me.line = 1113;
   fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___init_aformaldef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -5609,26 +6155,26 @@ void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:972 */
+  /* parser/parser_prod.nit:1113 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:978 */
+  /* parser/parser_prod.nit:1119 */
   CALL_parser___parser_prod___AFormaldef___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:979 */
+  /* parser/parser_prod.nit:1120 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 979);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1120);
   }
   ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:980 */
+  /* parser/parser_prod.nit:1121 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 980);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1121);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:981 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:1122 */
   ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:982 */
+  /* parser/parser_prod.nit:1123 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5643,16 +6189,16 @@ void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:983 */
+    /* parser/parser_prod.nit:1124 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 983);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1124);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:985 */
+  /* parser/parser_prod.nit:1126 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:986 */
+  /* parser/parser_prod.nit:1127 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5667,18 +6213,18 @@ void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:987 */
+    /* parser/parser_prod.nit:1128 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 987);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1128);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos34] = 1;
+  init_table[itpos33] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFormaldef___replace_child[] = "parser_prod::AFormaldef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AFormaldef___replace_child[] = "parser_prod::AFormaldef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AFormaldef___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;
@@ -5686,7 +6232,7 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 991;
+  fra.me.line = 1132;
   fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5698,11 +6244,11 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:993 */
+  /* parser/parser_prod.nit:1134 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 993);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 1134);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -5712,7 +6258,7 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:994 */
+    /* parser/parser_prod.nit:1135 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5727,28 +6273,28 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:995 */
+      /* parser/parser_prod.nit:1136 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 995);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1136);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:996 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1137 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 996);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1137);
       }
-      /* parser/parser_prod.nit:997 */
+      /* parser/parser_prod.nit:1138 */
       ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:999 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 999);
+      /* parser/parser_prod.nit:1140 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1140);
     }
-    /* parser/parser_prod.nit:1001 */
+    /* parser/parser_prod.nit:1142 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1003 */
+  /* parser/parser_prod.nit:1144 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -5763,7 +6309,7 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1004 */
+    /* parser/parser_prod.nit:1145 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5778,28 +6324,28 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1005 */
+      /* parser/parser_prod.nit:1146 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1005);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1146);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1006 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1147 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1006);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1147);
       }
-      /* parser/parser_prod.nit:1007 */
+      /* parser/parser_prod.nit:1148 */
       ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1009 */
+      /* parser/parser_prod.nit:1150 */
       ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1011 */
+    /* parser/parser_prod.nit:1152 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1013 */
+  /* parser/parser_prod.nit:1154 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -5814,7 +6360,7 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1014 */
+    /* parser/parser_prod.nit:1155 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5829,32 +6375,142 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1015 */
+      /* parser/parser_prod.nit:1156 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1015);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1156);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1016 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1157 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1016);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1157);
       }
-      /* parser/parser_prod.nit:1017 */
+      /* parser/parser_prod.nit:1158 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1019 */
+      /* parser/parser_prod.nit:1160 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1021 */
+    /* parser/parser_prod.nit:1162 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFormaldef___visit_all[] = "parser_prod::AFormaldef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AFormaldef___n_id__eq[] = "parser_prod::AFormaldef::(parser_nodes::AFormaldef::n_id=)";
+void parser___parser_prod___AFormaldef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1166;
+  fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1168 */
+  ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1169 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFormaldef___n_type__eq[] = "parser_prod::AFormaldef::(parser_nodes::AFormaldef::n_type=)";
+void parser___parser_prod___AFormaldef___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1171;
+  fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1173 */
+  ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1174 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1175 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1175);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFormaldef___n_annotations__eq[] = "parser_prod::AFormaldef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AFormaldef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1178;
+  fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1180 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1181 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1182 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1182);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFormaldef___visit_all[] = "parser_prod::AFormaldef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -5862,7 +6518,7 @@ void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1025;
+  fra.me.line = 1187;
   fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5873,17 +6529,17 @@ void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1025 */
+  /* parser/parser_prod.nit:1187 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1027 */
+  /* parser/parser_prod.nit:1189 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 1027);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 1189);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1028 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1190 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5899,16 +6555,16 @@ void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1029 */
+    /* parser/parser_prod.nit:1191 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1029);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1191);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1031 */
+  /* parser/parser_prod.nit:1193 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5924,27 +6580,27 @@ void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1032 */
+    /* parser/parser_prod.nit:1194 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1032);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1194);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperclass___empty_init[] = "parser_prod::ASuperclass::empty_init";
 void parser___parser_prod___ASuperclass___empty_init(val_t p0, int* init_table){
-  int itpos35 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperclass].i;
+  int itpos34 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperclass].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos35]) return;
+  if (init_table[itpos34]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1037;
+  fra.me.line = 1199;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5952,20 +6608,20 @@ void parser___parser_prod___ASuperclass___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos35] = 1;
+  init_table[itpos34] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperclass___init_asuperclass[] = "parser_prod::ASuperclass::init_asuperclass";
 void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos36 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperclass].i;
+  int itpos35 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperclass].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos36]) return;
+  if (init_table[itpos35]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1039;
+  fra.me.line = 1201;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___init_asuperclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -5979,39 +6635,39 @@ void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:1039 */
+  /* parser/parser_prod.nit:1201 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1045 */
+  /* parser/parser_prod.nit:1207 */
   CALL_parser___parser_prod___ASuperclass___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:1046 */
+  /* parser/parser_prod.nit:1208 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1046);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1208);
   }
   ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1047 */
+  /* parser/parser_prod.nit:1209 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1047);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1209);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:1048 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:1210 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1048);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1210);
   }
   ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1049 */
+  /* parser/parser_prod.nit:1211 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1049);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1211);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:1050 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:1212 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1051 */
+  /* parser/parser_prod.nit:1213 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6026,18 +6682,18 @@ void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1052 */
+    /* parser/parser_prod.nit:1214 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1052);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1214);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos36] = 1;
+  init_table[itpos35] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperclass___replace_child[] = "parser_prod::ASuperclass::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASuperclass___replace_child[] = "parser_prod::ASuperclass::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASuperclass___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;
@@ -6045,7 +6701,7 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1056;
+  fra.me.line = 1218;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -6057,11 +6713,11 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1058 */
+  /* parser/parser_prod.nit:1220 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 1058);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 1220);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -6071,7 +6727,7 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1059 */
+    /* parser/parser_prod.nit:1221 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6086,32 +6742,32 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1060 */
+      /* parser/parser_prod.nit:1222 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1060);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1222);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1061 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1223 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast TKwsuper*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1061);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1223);
       }
-      /* parser/parser_prod.nit:1062 */
+      /* parser/parser_prod.nit:1224 */
       ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1064 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1064);
+      /* parser/parser_prod.nit:1226 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1226);
     }
-    /* parser/parser_prod.nit:1066 */
+    /* parser/parser_prod.nit:1228 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1068 */
+  /* parser/parser_prod.nit:1230 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 1068);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 1230);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -6121,7 +6777,7 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1069 */
+    /* parser/parser_prod.nit:1231 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6136,28 +6792,28 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1070 */
+      /* parser/parser_prod.nit:1232 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1070);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1232);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1071 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1233 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1071);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1233);
       }
-      /* parser/parser_prod.nit:1072 */
+      /* parser/parser_prod.nit:1234 */
       ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1074 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1074);
+      /* parser/parser_prod.nit:1236 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1236);
     }
-    /* parser/parser_prod.nit:1076 */
+    /* parser/parser_prod.nit:1238 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1078 */
+  /* parser/parser_prod.nit:1240 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6172,7 +6828,7 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1079 */
+    /* parser/parser_prod.nit:1241 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6187,32 +6843,120 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1080 */
+      /* parser/parser_prod.nit:1242 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1080);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1242);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1081 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1243 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1081);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1243);
       }
-      /* parser/parser_prod.nit:1082 */
+      /* parser/parser_prod.nit:1244 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1084 */
+      /* parser/parser_prod.nit:1246 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1086 */
+    /* parser/parser_prod.nit:1248 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperclass___visit_all[] = "parser_prod::ASuperclass::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASuperclass___n_kwsuper__eq[] = "parser_prod::ASuperclass::(parser_nodes::ASuperclass::n_kwsuper=)";
+void parser___parser_prod___ASuperclass___n_kwsuper__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1252;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___n_kwsuper__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1254 */
+  ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1255 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperclass___n_type__eq[] = "parser_prod::ASuperclass::(parser_nodes::ASuperclass::n_type=)";
+void parser___parser_prod___ASuperclass___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1257;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1259 */
+  ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1260 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperclass___n_annotations__eq[] = "parser_prod::ASuperclass::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ASuperclass___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1262;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1264 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1265 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1266 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1266);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperclass___visit_all[] = "parser_prod::ASuperclass::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -6220,7 +6964,7 @@ void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1090;
+  fra.me.line = 1271;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -6231,25 +6975,25 @@ void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1090 */
+  /* parser/parser_prod.nit:1271 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1092 */
+  /* parser/parser_prod.nit:1273 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 1092);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 1273);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1093 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1274 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 1093);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 1274);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1094 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1275 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -6265,27 +7009,27 @@ void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1095 */
+    /* parser/parser_prod.nit:1276 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1095);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1276);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrPropdef___empty_init[] = "parser_prod::AAttrPropdef::empty_init";
 void parser___parser_prod___AAttrPropdef___empty_init(val_t p0, int* init_table){
-  int itpos37 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef].i;
+  int itpos36 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos37]) return;
+  if (init_table[itpos36]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1100;
+  fra.me.line = 1281;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -6293,20 +7037,20 @@ void parser___parser_prod___AAttrPropdef___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos37] = 1;
+  init_table[itpos36] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrPropdef___init_aattrpropdef[] = "parser_prod::AAttrPropdef::init_aattrpropdef";
 void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, val_t p10, val_t p11, int* init_table){
-  int itpos38 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef].i;
+  int itpos37 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos38]) return;
+  if (init_table[itpos37]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1102;
+  fra.me.line = 1283;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___init_aattrpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -6336,13 +7080,13 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   fra.me.REG[9] = p9;
   fra.me.REG[10] = p10;
   fra.me.REG[11] = p11;
-  /* parser/parser_prod.nit:1102 */
+  /* parser/parser_prod.nit:1283 */
   fra.me.REG[12] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1116 */
+  /* parser/parser_prod.nit:1297 */
   CALL_parser___parser_prod___AAttrPropdef___empty_init(fra.me.REG[12])(fra.me.REG[12], init_table);
-  /* parser/parser_prod.nit:1117 */
+  /* parser/parser_prod.nit:1298 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[12]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1118 */
+  /* parser/parser_prod.nit:1299 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6357,16 +7101,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1119 */
+    /* parser/parser_prod.nit:1300 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1119);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1300);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1121 */
+  /* parser/parser_prod.nit:1302 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[12]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1122 */
+  /* parser/parser_prod.nit:1303 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6381,16 +7125,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1123 */
+    /* parser/parser_prod.nit:1304 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1123);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1304);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1125 */
+  /* parser/parser_prod.nit:1306 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[12]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1126 */
+  /* parser/parser_prod.nit:1307 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6405,16 +7149,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1127 */
+    /* parser/parser_prod.nit:1308 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1127);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1308);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1129 */
+  /* parser/parser_prod.nit:1310 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[12]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1130 */
+  /* parser/parser_prod.nit:1311 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6429,42 +7173,42 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1131 */
+    /* parser/parser_prod.nit:1312 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1131);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1312);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1133 */
+  /* parser/parser_prod.nit:1314 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1133);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1314);
   }
   ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[12]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1134 */
+  /* parser/parser_prod.nit:1315 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1134);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1315);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[12]);
-  /* parser/parser_prod.nit:1135 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[12]);
+  /* parser/parser_prod.nit:1316 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1135);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1316);
   }
   ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[12]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:1136 */
+  /* parser/parser_prod.nit:1317 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1136);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1317);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[12]);
-  /* parser/parser_prod.nit:1137 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[12]);
+  /* parser/parser_prod.nit:1318 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[12]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:1138 */
+  /* parser/parser_prod.nit:1319 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6479,16 +7223,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1139 */
+    /* parser/parser_prod.nit:1320 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1139);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1320);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1141 */
+  /* parser/parser_prod.nit:1322 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[12]) = fra.me.REG[8];
-  /* parser/parser_prod.nit:1142 */
+  /* parser/parser_prod.nit:1323 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6503,16 +7247,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1143 */
+    /* parser/parser_prod.nit:1324 */
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1143);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1324);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1145 */
+  /* parser/parser_prod.nit:1326 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[12]) = fra.me.REG[9];
-  /* parser/parser_prod.nit:1146 */
+  /* parser/parser_prod.nit:1327 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6527,16 +7271,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1147 */
+    /* parser/parser_prod.nit:1328 */
     REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1147);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1328);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1149 */
+  /* parser/parser_prod.nit:1330 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[12]) = fra.me.REG[10];
-  /* parser/parser_prod.nit:1150 */
+  /* parser/parser_prod.nit:1331 */
   REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6551,16 +7295,16 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1151 */
+    /* parser/parser_prod.nit:1332 */
     REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1151);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1332);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
   }
-  /* parser/parser_prod.nit:1153 */
+  /* parser/parser_prod.nit:1334 */
   ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[12]) = fra.me.REG[11];
-  /* parser/parser_prod.nit:1154 */
+  /* parser/parser_prod.nit:1335 */
   REGB0 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6575,18 +7319,18 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1155 */
+    /* parser/parser_prod.nit:1336 */
     REGB0 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1155);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1336);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos38] = 1;
+  init_table[itpos37] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrPropdef___replace_child[] = "parser_prod::AAttrPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAttrPropdef___replace_child[] = "parser_prod::AAttrPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAttrPropdef___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;
@@ -6594,7 +7338,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1159;
+  fra.me.line = 1340;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -6606,7 +7350,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1161 */
+  /* parser/parser_prod.nit:1342 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6621,7 +7365,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1162 */
+    /* parser/parser_prod.nit:1343 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6636,28 +7380,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1163 */
+      /* parser/parser_prod.nit:1344 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1163);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1344);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1164 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1345 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1164);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1345);
       }
-      /* parser/parser_prod.nit:1165 */
+      /* parser/parser_prod.nit:1346 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1167 */
+      /* parser/parser_prod.nit:1348 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1169 */
+    /* parser/parser_prod.nit:1350 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1171 */
+  /* parser/parser_prod.nit:1352 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6672,7 +7416,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1172 */
+    /* parser/parser_prod.nit:1353 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6687,28 +7431,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1173 */
+      /* parser/parser_prod.nit:1354 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1173);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1354);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1174 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1355 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast AAble*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1174);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1355);
       }
-      /* parser/parser_prod.nit:1175 */
+      /* parser/parser_prod.nit:1356 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1177 */
+      /* parser/parser_prod.nit:1358 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1179 */
+    /* parser/parser_prod.nit:1360 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1181 */
+  /* parser/parser_prod.nit:1362 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6723,7 +7467,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1182 */
+    /* parser/parser_prod.nit:1363 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6738,28 +7482,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1183 */
+      /* parser/parser_prod.nit:1364 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1183);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1364);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1184 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1365 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast AAble*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1184);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1365);
       }
-      /* parser/parser_prod.nit:1185 */
+      /* parser/parser_prod.nit:1366 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1187 */
+      /* parser/parser_prod.nit:1368 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1189 */
+    /* parser/parser_prod.nit:1370 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1191 */
+  /* parser/parser_prod.nit:1372 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6774,7 +7518,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1192 */
+    /* parser/parser_prod.nit:1373 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6789,32 +7533,32 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1193 */
+      /* parser/parser_prod.nit:1374 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1193);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1374);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1194 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1375 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1194);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1375);
       }
-      /* parser/parser_prod.nit:1195 */
+      /* parser/parser_prod.nit:1376 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1197 */
+      /* parser/parser_prod.nit:1378 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1199 */
+    /* parser/parser_prod.nit:1380 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1201 */
+  /* parser/parser_prod.nit:1382 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 1201);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 1382);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -6824,7 +7568,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1202 */
+    /* parser/parser_prod.nit:1383 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6839,32 +7583,32 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1203 */
+      /* parser/parser_prod.nit:1384 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1203);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1384);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1204 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1385 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1204);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1385);
       }
-      /* parser/parser_prod.nit:1205 */
+      /* parser/parser_prod.nit:1386 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1207 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1207);
+      /* parser/parser_prod.nit:1388 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1388);
     }
-    /* parser/parser_prod.nit:1209 */
+    /* parser/parser_prod.nit:1390 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1211 */
+  /* parser/parser_prod.nit:1392 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 1211);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 1392);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -6874,7 +7618,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1212 */
+    /* parser/parser_prod.nit:1393 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6889,28 +7633,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1213 */
+      /* parser/parser_prod.nit:1394 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1213);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1394);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1214 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1395 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast TKwvar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1214);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1395);
       }
-      /* parser/parser_prod.nit:1215 */
+      /* parser/parser_prod.nit:1396 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1217 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1217);
+      /* parser/parser_prod.nit:1398 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1398);
     }
-    /* parser/parser_prod.nit:1219 */
+    /* parser/parser_prod.nit:1400 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1221 */
+  /* parser/parser_prod.nit:1402 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6925,7 +7669,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1222 */
+    /* parser/parser_prod.nit:1403 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6940,28 +7684,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1223 */
+      /* parser/parser_prod.nit:1404 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1223);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1404);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1224 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1405 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast TAttrid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1224);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1405);
       }
-      /* parser/parser_prod.nit:1225 */
+      /* parser/parser_prod.nit:1406 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1227 */
+      /* parser/parser_prod.nit:1408 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1229 */
+    /* parser/parser_prod.nit:1410 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1231 */
+  /* parser/parser_prod.nit:1412 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -6976,7 +7720,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1232 */
+    /* parser/parser_prod.nit:1413 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6991,28 +7735,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1233 */
+      /* parser/parser_prod.nit:1414 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1233);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1414);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1234 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1415 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1234);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1415);
       }
-      /* parser/parser_prod.nit:1235 */
+      /* parser/parser_prod.nit:1416 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1237 */
+      /* parser/parser_prod.nit:1418 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1239 */
+    /* parser/parser_prod.nit:1420 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1241 */
+  /* parser/parser_prod.nit:1422 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7027,7 +7771,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1242 */
+    /* parser/parser_prod.nit:1423 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7042,28 +7786,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1243 */
+      /* parser/parser_prod.nit:1424 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1243);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1424);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1244 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1425 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1244);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1425);
       }
-      /* parser/parser_prod.nit:1245 */
+      /* parser/parser_prod.nit:1426 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1247 */
+      /* parser/parser_prod.nit:1428 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1249 */
+    /* parser/parser_prod.nit:1430 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1251 */
+  /* parser/parser_prod.nit:1432 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7078,7 +7822,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1252 */
+    /* parser/parser_prod.nit:1433 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7093,28 +7837,28 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1253 */
+      /* parser/parser_prod.nit:1434 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1253);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1434);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1254 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1435 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1254);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1435);
       }
-      /* parser/parser_prod.nit:1255 */
+      /* parser/parser_prod.nit:1436 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1257 */
+      /* parser/parser_prod.nit:1438 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1259 */
+    /* parser/parser_prod.nit:1440 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1261 */
+  /* parser/parser_prod.nit:1442 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7129,7 +7873,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1262 */
+    /* parser/parser_prod.nit:1443 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7144,32 +7888,472 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1263 */
+      /* parser/parser_prod.nit:1444 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1263);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1444);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1264 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1445 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1264);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1445);
       }
-      /* parser/parser_prod.nit:1265 */
+      /* parser/parser_prod.nit:1446 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1267 */
+      /* parser/parser_prod.nit:1448 */
       ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1269 */
+    /* parser/parser_prod.nit:1450 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrPropdef___visit_all[] = "parser_prod::AAttrPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_doc__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AAttrPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1454;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1456 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1457 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1458 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1458);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_readable__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_readable=)";
+void parser___parser_prod___AAttrPropdef___n_readable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1461;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_readable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1463 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1464 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1465 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1465);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_writable__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_writable=)";
+void parser___parser_prod___AAttrPropdef___n_writable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1468;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_writable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1470 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1471 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1472 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1472);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_kwredef__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_kwredef=)";
+void parser___parser_prod___AAttrPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1475;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1477 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1478 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1479 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1479);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_visibility__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_visibility=)";
+void parser___parser_prod___AAttrPropdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1482;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1484 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1485 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_kwvar__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_kwvar=)";
+void parser___parser_prod___AAttrPropdef___n_kwvar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1487;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_kwvar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1489 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1490 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_id__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_id=)";
+void parser___parser_prod___AAttrPropdef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1492;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1494 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1495 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1496 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1496);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_id2__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_id2=)";
+void parser___parser_prod___AAttrPropdef___n_id2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1499;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_id2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1501 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1502 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1503 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1503);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_type__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_type=)";
+void parser___parser_prod___AAttrPropdef___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1506;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1508 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1509 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1510 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1510);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_annotations__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AAttrPropdef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1513;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1515 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1516 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1517 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1517);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___n_expr__eq[] = "parser_prod::AAttrPropdef::(parser_nodes::AAttrPropdef::n_expr=)";
+void parser___parser_prod___AAttrPropdef___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1520;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1522 */
+  ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1523 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1524 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1524);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrPropdef___visit_all[] = "parser_prod::AAttrPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -7177,7 +8361,7 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1273;
+  fra.me.line = 1529;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -7188,9 +8372,9 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1273 */
+  /* parser/parser_prod.nit:1529 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1275 */
+  /* parser/parser_prod.nit:1531 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7206,16 +8390,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1276 */
+    /* parser/parser_prod.nit:1532 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1276);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1532);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1278 */
+  /* parser/parser_prod.nit:1534 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7231,16 +8415,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1279 */
+    /* parser/parser_prod.nit:1535 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast AAble*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1279);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1535);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1281 */
+  /* parser/parser_prod.nit:1537 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7256,16 +8440,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1282 */
+    /* parser/parser_prod.nit:1538 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast AAble*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1282);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1538);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1284 */
+  /* parser/parser_prod.nit:1540 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7281,32 +8465,32 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1285 */
+    /* parser/parser_prod.nit:1541 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1285);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1541);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1287 */
+  /* parser/parser_prod.nit:1543 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 1287);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 1543);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1288 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1544 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 1288);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 1544);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1289 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1545 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7322,16 +8506,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1290 */
+    /* parser/parser_prod.nit:1546 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast TAttrid*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1290);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1546);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1292 */
+  /* parser/parser_prod.nit:1548 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7347,16 +8531,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1293 */
+    /* parser/parser_prod.nit:1549 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1293);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1549);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1295 */
+  /* parser/parser_prod.nit:1551 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7372,16 +8556,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1296 */
+    /* parser/parser_prod.nit:1552 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1296);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1552);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1298 */
+  /* parser/parser_prod.nit:1554 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7397,16 +8581,16 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1299 */
+    /* parser/parser_prod.nit:1555 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1299);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1555);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1301 */
+  /* parser/parser_prod.nit:1557 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7422,27 +8606,27 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1302 */
+    /* parser/parser_prod.nit:1558 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1302);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1558);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMethPropdef___empty_init[] = "parser_prod::AMethPropdef::empty_init";
 void parser___parser_prod___AMethPropdef___empty_init(val_t p0, int* init_table){
-  int itpos39 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMethPropdef].i;
+  int itpos38 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMethPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos39]) return;
+  if (init_table[itpos38]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1307;
+  fra.me.line = 1563;
   fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -7450,20 +8634,20 @@ void parser___parser_prod___AMethPropdef___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos39] = 1;
+  init_table[itpos38] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "parser_prod::AMethPropdef::init_amethpropdef";
 void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos40 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMethPropdef].i;
+  int itpos39 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMethPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos40]) return;
+  if (init_table[itpos39]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1309;
+  fra.me.line = 1565;
   fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -7481,13 +8665,13 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:1309 */
+  /* parser/parser_prod.nit:1565 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1317 */
+  /* parser/parser_prod.nit:1573 */
   CALL_parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:1318 */
+  /* parser/parser_prod.nit:1574 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1319 */
+  /* parser/parser_prod.nit:1575 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7502,16 +8686,16 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1320 */
+    /* parser/parser_prod.nit:1576 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1320);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1576);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
-  /* parser/parser_prod.nit:1322 */
+  /* parser/parser_prod.nit:1578 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1323 */
+  /* parser/parser_prod.nit:1579 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7526,57 +8710,57 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1324 */
+    /* parser/parser_prod.nit:1580 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1324);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1580);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   }
-  /* parser/parser_prod.nit:1326 */
+  /* parser/parser_prod.nit:1582 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1326);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1582);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1327 */
+  /* parser/parser_prod.nit:1583 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1327);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1583);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:1328 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:1584 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1328);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1584);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1329 */
+  /* parser/parser_prod.nit:1585 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1329);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1585);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:1330 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:1586 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1330);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1586);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1331 */
+  /* parser/parser_prod.nit:1587 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1331);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1587);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos40] = 1;
+  init_table[itpos39] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMethPropdef___replace_child[] = "parser_prod::AMethPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMethPropdef___replace_child[] = "parser_prod::AMethPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMethPropdef___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;
@@ -7584,7 +8768,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1334;
+  fra.me.line = 1590;
   fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -7596,7 +8780,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1336 */
+  /* parser/parser_prod.nit:1592 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7611,7 +8795,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1337 */
+    /* parser/parser_prod.nit:1593 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7626,28 +8810,28 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1338 */
+      /* parser/parser_prod.nit:1594 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1338);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1594);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1339 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1595 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1339);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1595);
       }
-      /* parser/parser_prod.nit:1340 */
+      /* parser/parser_prod.nit:1596 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1342 */
+      /* parser/parser_prod.nit:1598 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1344 */
+    /* parser/parser_prod.nit:1600 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1346 */
+  /* parser/parser_prod.nit:1602 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7662,7 +8846,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1347 */
+    /* parser/parser_prod.nit:1603 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7677,28 +8861,28 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1348 */
+      /* parser/parser_prod.nit:1604 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1348);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1604);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1349 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1605 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1349);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1605);
       }
-      /* parser/parser_prod.nit:1350 */
+      /* parser/parser_prod.nit:1606 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1352 */
+      /* parser/parser_prod.nit:1608 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1354 */
+    /* parser/parser_prod.nit:1610 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1356 */
+  /* parser/parser_prod.nit:1612 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7713,7 +8897,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1357 */
+    /* parser/parser_prod.nit:1613 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7728,28 +8912,28 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1358 */
+      /* parser/parser_prod.nit:1614 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1358);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1614);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1359 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1615 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1359);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1615);
       }
-      /* parser/parser_prod.nit:1360 */
+      /* parser/parser_prod.nit:1616 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1362 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1362);
+      /* parser/parser_prod.nit:1618 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1618);
     }
-    /* parser/parser_prod.nit:1364 */
+    /* parser/parser_prod.nit:1620 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1366 */
+  /* parser/parser_prod.nit:1622 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7764,7 +8948,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1367 */
+    /* parser/parser_prod.nit:1623 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7779,28 +8963,28 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1368 */
+      /* parser/parser_prod.nit:1624 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1368);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1624);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1369 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1625 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1369);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1625);
       }
-      /* parser/parser_prod.nit:1370 */
+      /* parser/parser_prod.nit:1626 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1372 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1372);
+      /* parser/parser_prod.nit:1628 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1628);
     }
-    /* parser/parser_prod.nit:1374 */
+    /* parser/parser_prod.nit:1630 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1376 */
+  /* parser/parser_prod.nit:1632 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -7815,7 +8999,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1377 */
+    /* parser/parser_prod.nit:1633 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7830,32 +9014,201 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1378 */
+      /* parser/parser_prod.nit:1634 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1378);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1634);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1379 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1635 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1379);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1635);
       }
-      /* parser/parser_prod.nit:1380 */
+      /* parser/parser_prod.nit:1636 */
       ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1382 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1382);
+      /* parser/parser_prod.nit:1638 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1638);
     }
-    /* parser/parser_prod.nit:1384 */
+    /* parser/parser_prod.nit:1640 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMethPropdef___visit_all[] = "parser_prod::AMethPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMethPropdef___n_doc__eq[] = "parser_prod::AMethPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AMethPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1644;
+  fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1646 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1647 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1648 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1648);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMethPropdef___n_kwredef__eq[] = "parser_prod::AMethPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1651;
+  fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1653 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1654 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1655 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1655);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMethPropdef___n_visibility__eq[] = "parser_prod::AMethPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___AMethPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 1658;
+  fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1660 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1661 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1661);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMethPropdef___n_methid__eq[] = "parser_prod::AMethPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___AMethPropdef___n_methid__eq(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___parser_prod;
+  fra.me.line = 1663;
+  fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1665 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1666 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1666);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMethPropdef___n_signature__eq[] = "parser_prod::AMethPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___AMethPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 1668;
+  fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1670 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1671 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1671);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMethPropdef___visit_all[] = "parser_prod::AMethPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -7863,7 +9216,7 @@ void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1388;
+  fra.me.line = 1675;
   fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -7874,9 +9227,9 @@ void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1388 */
+  /* parser/parser_prod.nit:1675 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1390 */
+  /* parser/parser_prod.nit:1677 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7892,16 +9245,16 @@ void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1391 */
+    /* parser/parser_prod.nit:1678 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1391);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1678);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1393 */
+  /* parser/parser_prod.nit:1680 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7917,36 +9270,36 @@ void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1394 */
+    /* parser/parser_prod.nit:1681 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1394);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1681);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1396 */
+  /* parser/parser_prod.nit:1683 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1397 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1684 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1398 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1685 */
   fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___empty_init[] = "parser_prod::ADeferredMethPropdef::empty_init";
 void parser___parser_prod___ADeferredMethPropdef___empty_init(val_t p0, int* init_table){
-  int itpos41 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef].i;
+  int itpos40 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos41]) return;
+  if (init_table[itpos40]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1402;
+  fra.me.line = 1689;
   fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -7954,20 +9307,20 @@ void parser___parser_prod___ADeferredMethPropdef___empty_init(val_t p0, int* ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos41] = 1;
+  init_table[itpos40] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef[] = "parser_prod::ADeferredMethPropdef::init_adeferredmethpropdef";
 void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, int* init_table){
-  int itpos42 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef].i;
+  int itpos41 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos42]) return;
+  if (init_table[itpos41]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1404;
+  fra.me.line = 1691;
   fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -7989,13 +9342,13 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
-  /* parser/parser_prod.nit:1404 */
+  /* parser/parser_prod.nit:1691 */
   fra.me.REG[8] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1414 */
+  /* parser/parser_prod.nit:1701 */
   CALL_parser___parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[8])(fra.me.REG[8], init_table);
-  /* parser/parser_prod.nit:1415 */
+  /* parser/parser_prod.nit:1702 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[8]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1416 */
+  /* parser/parser_prod.nit:1703 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8010,16 +9363,16 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1417 */
+    /* parser/parser_prod.nit:1704 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1417);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1704);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
-  /* parser/parser_prod.nit:1419 */
+  /* parser/parser_prod.nit:1706 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[8]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1420 */
+  /* parser/parser_prod.nit:1707 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8034,68 +9387,68 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1421 */
+    /* parser/parser_prod.nit:1708 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1421);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1708);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   }
-  /* parser/parser_prod.nit:1423 */
+  /* parser/parser_prod.nit:1710 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1423);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1710);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[8]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1424 */
+  /* parser/parser_prod.nit:1711 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1424);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1711);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
-  /* parser/parser_prod.nit:1425 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
+  /* parser/parser_prod.nit:1712 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1425);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1712);
   }
   ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[8]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1426 */
+  /* parser/parser_prod.nit:1713 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1426);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1713);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
-  /* parser/parser_prod.nit:1427 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+  /* parser/parser_prod.nit:1714 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1427);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1714);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[8]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1428 */
+  /* parser/parser_prod.nit:1715 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1428);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1715);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
-  /* parser/parser_prod.nit:1429 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+  /* parser/parser_prod.nit:1716 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1429);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1716);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[8]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:1430 */
+  /* parser/parser_prod.nit:1717 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1430);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1717);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
-  /* parser/parser_prod.nit:1431 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+  /* parser/parser_prod.nit:1718 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[8]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:1432 */
+  /* parser/parser_prod.nit:1719 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8110,18 +9463,18 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1433 */
+    /* parser/parser_prod.nit:1720 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1433);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1720);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos42] = 1;
+  init_table[itpos41] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___replace_child[] = "parser_prod::ADeferredMethPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___replace_child[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ADeferredMethPropdef___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;
@@ -8129,7 +9482,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1437;
+  fra.me.line = 1724;
   fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -8141,7 +9494,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1439 */
+  /* parser/parser_prod.nit:1726 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8156,7 +9509,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1440 */
+    /* parser/parser_prod.nit:1727 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8171,28 +9524,28 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1441 */
+      /* parser/parser_prod.nit:1728 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1441);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1728);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1442 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1729 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1442);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1729);
       }
-      /* parser/parser_prod.nit:1443 */
+      /* parser/parser_prod.nit:1730 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1445 */
+      /* parser/parser_prod.nit:1732 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1447 */
+    /* parser/parser_prod.nit:1734 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1449 */
+  /* parser/parser_prod.nit:1736 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8207,7 +9560,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1450 */
+    /* parser/parser_prod.nit:1737 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8222,28 +9575,28 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1451 */
+      /* parser/parser_prod.nit:1738 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1451);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1738);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1452 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1739 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1452);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1739);
       }
-      /* parser/parser_prod.nit:1453 */
+      /* parser/parser_prod.nit:1740 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1455 */
+      /* parser/parser_prod.nit:1742 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1457 */
+    /* parser/parser_prod.nit:1744 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1459 */
+  /* parser/parser_prod.nit:1746 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8258,7 +9611,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1460 */
+    /* parser/parser_prod.nit:1747 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8273,32 +9626,32 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1461 */
+      /* parser/parser_prod.nit:1748 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1461);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1748);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1462 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1749 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1462);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1749);
       }
-      /* parser/parser_prod.nit:1463 */
+      /* parser/parser_prod.nit:1750 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1465 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1465);
+      /* parser/parser_prod.nit:1752 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1752);
     }
-    /* parser/parser_prod.nit:1467 */
+    /* parser/parser_prod.nit:1754 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1469 */
+  /* parser/parser_prod.nit:1756 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1469);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1756);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -8308,7 +9661,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1470 */
+    /* parser/parser_prod.nit:1757 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8323,28 +9676,28 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1471 */
+      /* parser/parser_prod.nit:1758 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1471);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1758);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1472 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1759 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast TKwmeth*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1472);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1759);
       }
-      /* parser/parser_prod.nit:1473 */
+      /* parser/parser_prod.nit:1760 */
       ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1475 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1475);
+      /* parser/parser_prod.nit:1762 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1762);
     }
-    /* parser/parser_prod.nit:1477 */
+    /* parser/parser_prod.nit:1764 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1479 */
+  /* parser/parser_prod.nit:1766 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8359,109 +9712,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1480 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1481 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1481);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1482 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1482);
-      }
-      /* parser/parser_prod.nit:1483 */
-      ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:1485 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1485);
-    }
-    /* parser/parser_prod.nit:1487 */
-    goto label1;
-  }
-  /* parser/parser_prod.nit:1489 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1490 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1491 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1491);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1492 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1492);
-      }
-      /* parser/parser_prod.nit:1493 */
-      ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:1495 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1495);
-    }
-    /* parser/parser_prod.nit:1497 */
-    goto label1;
-  }
-  /* parser/parser_prod.nit:1499 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1500 */
+    /* parser/parser_prod.nit:1767 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8476,32 +9727,369 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1501 */
+      /* parser/parser_prod.nit:1768 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1768);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1769 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1769);
+      }
+      /* parser/parser_prod.nit:1770 */
+      ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:1772 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1772);
+    }
+    /* parser/parser_prod.nit:1774 */
+    goto label1;
+  }
+  /* parser/parser_prod.nit:1776 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1777 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:1778 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1778);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1779 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1779);
+      }
+      /* parser/parser_prod.nit:1780 */
+      ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:1782 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1782);
+    }
+    /* parser/parser_prod.nit:1784 */
+    goto label1;
+  }
+  /* parser/parser_prod.nit:1786 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1787 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:1788 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1501);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1788);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1502 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1789 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1502);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1789);
       }
-      /* parser/parser_prod.nit:1503 */
+      /* parser/parser_prod.nit:1790 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1505 */
+      /* parser/parser_prod.nit:1792 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1507 */
+    /* parser/parser_prod.nit:1794 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___visit_all[] = "parser_prod::ADeferredMethPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_doc__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___ADeferredMethPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1798;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1800 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1801 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1802 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1802);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_kwredef__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___ADeferredMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1805;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1807 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1808 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1809 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1809);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_visibility__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___ADeferredMethPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 1812;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1814 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1815 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1815);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_kwmeth__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::ADeferredMethPropdef::n_kwmeth=)";
+void parser___parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1817;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1819 */
+  ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1820 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_methid__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___ADeferredMethPropdef___n_methid__eq(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___parser_prod;
+  fra.me.line = 1822;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1824 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1825 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1825);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_signature__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___ADeferredMethPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 1827;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1829 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1830 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1830);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___n_annotations__eq[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ADeferredMethPropdef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1832;
+  fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1834 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1835 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1836 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1836);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADeferredMethPropdef___visit_all[] = "parser_prod::ADeferredMethPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -8509,7 +10097,7 @@ void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1511;
+  fra.me.line = 1841;
   fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -8520,9 +10108,9 @@ void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1511 */
+  /* parser/parser_prod.nit:1841 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1513 */
+  /* parser/parser_prod.nit:1843 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8538,16 +10126,16 @@ void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1514 */
+    /* parser/parser_prod.nit:1844 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1514);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1844);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1516 */
+  /* parser/parser_prod.nit:1846 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8563,33 +10151,33 @@ void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1517 */
+    /* parser/parser_prod.nit:1847 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1517);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1847);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1519 */
+  /* parser/parser_prod.nit:1849 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1520 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1850 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1520);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1850);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1521 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1851 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1522 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1852 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1523 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1853 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8605,27 +10193,27 @@ void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1524 */
+    /* parser/parser_prod.nit:1854 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1524);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1854);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInternMethPropdef___empty_init[] = "parser_prod::AInternMethPropdef::empty_init";
 void parser___parser_prod___AInternMethPropdef___empty_init(val_t p0, int* init_table){
-  int itpos43 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInternMethPropdef].i;
+  int itpos42 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInternMethPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos43]) return;
+  if (init_table[itpos42]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1529;
+  fra.me.line = 1859;
   fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -8633,20 +10221,20 @@ void parser___parser_prod___AInternMethPropdef___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos43] = 1;
+  init_table[itpos42] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef[] = "parser_prod::AInternMethPropdef::init_ainternmethpropdef";
 void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
-  int itpos44 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInternMethPropdef].i;
+  int itpos43 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInternMethPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos44]) return;
+  if (init_table[itpos43]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1531;
+  fra.me.line = 1861;
   fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -8666,13 +10254,13 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:1531 */
+  /* parser/parser_prod.nit:1861 */
   fra.me.REG[7] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1540 */
+  /* parser/parser_prod.nit:1870 */
   CALL_parser___parser_prod___AInternMethPropdef___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
-  /* parser/parser_prod.nit:1541 */
+  /* parser/parser_prod.nit:1871 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[7]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1542 */
+  /* parser/parser_prod.nit:1872 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8687,16 +10275,16 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1543 */
+    /* parser/parser_prod.nit:1873 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1543);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1873);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:1545 */
+  /* parser/parser_prod.nit:1875 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[7]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1546 */
+  /* parser/parser_prod.nit:1876 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8711,70 +10299,70 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1547 */
+    /* parser/parser_prod.nit:1877 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1547);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1877);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:1549 */
+  /* parser/parser_prod.nit:1879 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1549);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1879);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[7]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1550 */
+  /* parser/parser_prod.nit:1880 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1550);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1880);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-  /* parser/parser_prod.nit:1551 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser_prod.nit:1881 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1551);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1881);
   }
   ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[7]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1552 */
+  /* parser/parser_prod.nit:1882 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1552);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1882);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-  /* parser/parser_prod.nit:1553 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+  /* parser/parser_prod.nit:1883 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1553);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1883);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[7]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1554 */
+  /* parser/parser_prod.nit:1884 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1554);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1884);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-  /* parser/parser_prod.nit:1555 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+  /* parser/parser_prod.nit:1885 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1555);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1885);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[7]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:1556 */
+  /* parser/parser_prod.nit:1886 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1556);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1886);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos44] = 1;
+  init_table[itpos43] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInternMethPropdef___replace_child[] = "parser_prod::AInternMethPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___replace_child[] = "parser_prod::AInternMethPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AInternMethPropdef___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;
@@ -8782,7 +10370,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1559;
+  fra.me.line = 1889;
   fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -8794,7 +10382,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1561 */
+  /* parser/parser_prod.nit:1891 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8809,7 +10397,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1562 */
+    /* parser/parser_prod.nit:1892 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8824,28 +10412,28 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1563 */
+      /* parser/parser_prod.nit:1893 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1563);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1893);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1564 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1894 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1564);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1894);
       }
-      /* parser/parser_prod.nit:1565 */
+      /* parser/parser_prod.nit:1895 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1567 */
+      /* parser/parser_prod.nit:1897 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1569 */
+    /* parser/parser_prod.nit:1899 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1571 */
+  /* parser/parser_prod.nit:1901 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8860,7 +10448,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1572 */
+    /* parser/parser_prod.nit:1902 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8875,28 +10463,28 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1573 */
+      /* parser/parser_prod.nit:1903 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1573);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1903);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1574 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1904 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1574);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1904);
       }
-      /* parser/parser_prod.nit:1575 */
+      /* parser/parser_prod.nit:1905 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1577 */
+      /* parser/parser_prod.nit:1907 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1579 */
+    /* parser/parser_prod.nit:1909 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1581 */
+  /* parser/parser_prod.nit:1911 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -8911,7 +10499,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1582 */
+    /* parser/parser_prod.nit:1912 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8926,32 +10514,32 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1583 */
+      /* parser/parser_prod.nit:1913 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1583);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1913);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1584 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1914 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1584);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1914);
       }
-      /* parser/parser_prod.nit:1585 */
+      /* parser/parser_prod.nit:1915 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1587 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1587);
+      /* parser/parser_prod.nit:1917 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1917);
     }
-    /* parser/parser_prod.nit:1589 */
+    /* parser/parser_prod.nit:1919 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1591 */
+  /* parser/parser_prod.nit:1921 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1591);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1921);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -8961,7 +10549,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1592 */
+    /* parser/parser_prod.nit:1922 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -8976,28 +10564,28 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1593 */
+      /* parser/parser_prod.nit:1923 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1593);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1923);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1594 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1924 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast TKwmeth*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1594);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1924);
       }
-      /* parser/parser_prod.nit:1595 */
+      /* parser/parser_prod.nit:1925 */
       ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1597 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1597);
+      /* parser/parser_prod.nit:1927 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1927);
     }
-    /* parser/parser_prod.nit:1599 */
+    /* parser/parser_prod.nit:1929 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1601 */
+  /* parser/parser_prod.nit:1931 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9012,7 +10600,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1602 */
+    /* parser/parser_prod.nit:1932 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9027,28 +10615,28 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1603 */
+      /* parser/parser_prod.nit:1933 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1603);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1933);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1604 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1934 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1604);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1934);
       }
-      /* parser/parser_prod.nit:1605 */
+      /* parser/parser_prod.nit:1935 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1607 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1607);
+      /* parser/parser_prod.nit:1937 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1937);
     }
-    /* parser/parser_prod.nit:1609 */
+    /* parser/parser_prod.nit:1939 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1611 */
+  /* parser/parser_prod.nit:1941 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9063,7 +10651,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1612 */
+    /* parser/parser_prod.nit:1942 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9078,32 +10666,223 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1613 */
+      /* parser/parser_prod.nit:1943 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1613);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1943);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1614 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:1944 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1614);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1944);
       }
-      /* parser/parser_prod.nit:1615 */
+      /* parser/parser_prod.nit:1945 */
       ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1617 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1617);
+      /* parser/parser_prod.nit:1947 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1947);
     }
-    /* parser/parser_prod.nit:1619 */
+    /* parser/parser_prod.nit:1949 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInternMethPropdef___visit_all[] = "parser_prod::AInternMethPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___n_doc__eq[] = "parser_prod::AInternMethPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AInternMethPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1953;
+  fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1955 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1956 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1957 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1957);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___n_kwredef__eq[] = "parser_prod::AInternMethPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AInternMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1960;
+  fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1962 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1963 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:1964 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1964);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___n_visibility__eq[] = "parser_prod::AInternMethPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___AInternMethPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 1967;
+  fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1969 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1970 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1970);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___n_kwmeth__eq[] = "parser_prod::AInternMethPropdef::(parser_nodes::AInternMethPropdef::n_kwmeth=)";
+void parser___parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 1972;
+  fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1974 */
+  ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1975 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___n_methid__eq[] = "parser_prod::AInternMethPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___AInternMethPropdef___n_methid__eq(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___parser_prod;
+  fra.me.line = 1977;
+  fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1979 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1980 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1980);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___n_signature__eq[] = "parser_prod::AInternMethPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___AInternMethPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 1982;
+  fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:1984 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:1985 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1985);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInternMethPropdef___visit_all[] = "parser_prod::AInternMethPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -9111,7 +10890,7 @@ void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1623;
+  fra.me.line = 1989;
   fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9122,9 +10901,9 @@ void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1623 */
+  /* parser/parser_prod.nit:1989 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1625 */
+  /* parser/parser_prod.nit:1991 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9140,16 +10919,16 @@ void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1626 */
+    /* parser/parser_prod.nit:1992 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1626);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1992);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1628 */
+  /* parser/parser_prod.nit:1994 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9165,44 +10944,44 @@ void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1629 */
+    /* parser/parser_prod.nit:1995 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1629);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1995);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1631 */
+  /* parser/parser_prod.nit:1997 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1632 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1998 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1632);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1998);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1633 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:1999 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1634 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2000 */
   fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternMethPropdef___empty_init[] = "parser_prod::AExternMethPropdef::empty_init";
 void parser___parser_prod___AExternMethPropdef___empty_init(val_t p0, int* init_table){
-  int itpos45 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef].i;
+  int itpos44 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos45]) return;
+  if (init_table[itpos44]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1638;
+  fra.me.line = 2004;
   fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -9210,20 +10989,20 @@ void parser___parser_prod___AExternMethPropdef___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos45] = 1;
+  init_table[itpos44] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef[] = "parser_prod::AExternMethPropdef::init_aexternmethpropdef";
 void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, int* init_table){
-  int itpos46 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef].i;
+  int itpos45 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos46]) return;
+  if (init_table[itpos45]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1640;
+  fra.me.line = 2006;
   fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -9249,13 +11028,13 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
   fra.me.REG[9] = p9;
-  /* parser/parser_prod.nit:1640 */
+  /* parser/parser_prod.nit:2006 */
   fra.me.REG[10] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1652 */
+  /* parser/parser_prod.nit:2018 */
   CALL_parser___parser_prod___AExternMethPropdef___empty_init(fra.me.REG[10])(fra.me.REG[10], init_table);
-  /* parser/parser_prod.nit:1653 */
+  /* parser/parser_prod.nit:2019 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[10]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1654 */
+  /* parser/parser_prod.nit:2020 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9270,16 +11049,16 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1655 */
+    /* parser/parser_prod.nit:2021 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1655);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2021);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:1657 */
+  /* parser/parser_prod.nit:2023 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[10]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1658 */
+  /* parser/parser_prod.nit:2024 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9294,68 +11073,68 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1659 */
+    /* parser/parser_prod.nit:2025 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1659);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2025);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:1661 */
+  /* parser/parser_prod.nit:2027 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1661);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2027);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[10]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1662 */
+  /* parser/parser_prod.nit:2028 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1662);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2028);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
-  /* parser/parser_prod.nit:1663 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2029 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1663);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2029);
   }
   ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[10]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1664 */
+  /* parser/parser_prod.nit:2030 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1664);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2030);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[10]);
-  /* parser/parser_prod.nit:1665 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2031 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1665);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2031);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[10]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1666 */
+  /* parser/parser_prod.nit:2032 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1666);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2032);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[10]);
-  /* parser/parser_prod.nit:1667 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2033 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1667);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2033);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[10]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:1668 */
+  /* parser/parser_prod.nit:2034 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1668);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2034);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[10]);
-  /* parser/parser_prod.nit:1669 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2035 */
   ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[10]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:1670 */
+  /* parser/parser_prod.nit:2036 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9370,16 +11149,16 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1671 */
+    /* parser/parser_prod.nit:2037 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1671);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2037);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:1673 */
+  /* parser/parser_prod.nit:2039 */
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[10]) = fra.me.REG[8];
-  /* parser/parser_prod.nit:1674 */
+  /* parser/parser_prod.nit:2040 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9394,16 +11173,16 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1675 */
+    /* parser/parser_prod.nit:2041 */
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1675);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2041);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:1677 */
+  /* parser/parser_prod.nit:2043 */
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[10]) = fra.me.REG[9];
-  /* parser/parser_prod.nit:1678 */
+  /* parser/parser_prod.nit:2044 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9418,18 +11197,18 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1679 */
+    /* parser/parser_prod.nit:2045 */
     REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1679);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2045);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos46] = 1;
+  init_table[itpos45] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternMethPropdef___replace_child[] = "parser_prod::AExternMethPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___replace_child[] = "parser_prod::AExternMethPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AExternMethPropdef___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;
@@ -9437,7 +11216,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1683;
+  fra.me.line = 2049;
   fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9449,7 +11228,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1685 */
+  /* parser/parser_prod.nit:2051 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9464,7 +11243,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1686 */
+    /* parser/parser_prod.nit:2052 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9479,28 +11258,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1687 */
+      /* parser/parser_prod.nit:2053 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1687);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2053);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1688 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2054 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1688);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2054);
       }
-      /* parser/parser_prod.nit:1689 */
+      /* parser/parser_prod.nit:2055 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1691 */
+      /* parser/parser_prod.nit:2057 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1693 */
+    /* parser/parser_prod.nit:2059 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1695 */
+  /* parser/parser_prod.nit:2061 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9515,7 +11294,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1696 */
+    /* parser/parser_prod.nit:2062 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9530,28 +11309,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1697 */
+      /* parser/parser_prod.nit:2063 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1697);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2063);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1698 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2064 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1698);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2064);
       }
-      /* parser/parser_prod.nit:1699 */
+      /* parser/parser_prod.nit:2065 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1701 */
+      /* parser/parser_prod.nit:2067 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1703 */
+    /* parser/parser_prod.nit:2069 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1705 */
+  /* parser/parser_prod.nit:2071 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9566,7 +11345,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1706 */
+    /* parser/parser_prod.nit:2072 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9581,32 +11360,32 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1707 */
+      /* parser/parser_prod.nit:2073 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1707);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2073);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1708 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2074 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1708);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2074);
       }
-      /* parser/parser_prod.nit:1709 */
+      /* parser/parser_prod.nit:2075 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1711 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1711);
+      /* parser/parser_prod.nit:2077 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2077);
     }
-    /* parser/parser_prod.nit:1713 */
+    /* parser/parser_prod.nit:2079 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1715 */
+  /* parser/parser_prod.nit:2081 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1715);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 2081);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -9616,7 +11395,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1716 */
+    /* parser/parser_prod.nit:2082 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9631,28 +11410,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1717 */
+      /* parser/parser_prod.nit:2083 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1717);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2083);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1718 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2084 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast TKwmeth*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1718);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2084);
       }
-      /* parser/parser_prod.nit:1719 */
+      /* parser/parser_prod.nit:2085 */
       ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1721 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1721);
+      /* parser/parser_prod.nit:2087 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2087);
     }
-    /* parser/parser_prod.nit:1723 */
+    /* parser/parser_prod.nit:2089 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1725 */
+  /* parser/parser_prod.nit:2091 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9667,7 +11446,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1726 */
+    /* parser/parser_prod.nit:2092 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9682,28 +11461,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1727 */
+      /* parser/parser_prod.nit:2093 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1727);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2093);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1728 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2094 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1728);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2094);
       }
-      /* parser/parser_prod.nit:1729 */
+      /* parser/parser_prod.nit:2095 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1731 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1731);
+      /* parser/parser_prod.nit:2097 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2097);
     }
-    /* parser/parser_prod.nit:1733 */
+    /* parser/parser_prod.nit:2099 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1735 */
+  /* parser/parser_prod.nit:2101 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9718,7 +11497,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1736 */
+    /* parser/parser_prod.nit:2102 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9733,28 +11512,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1737 */
+      /* parser/parser_prod.nit:2103 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1737);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2103);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1738 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2104 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1738);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2104);
       }
-      /* parser/parser_prod.nit:1739 */
+      /* parser/parser_prod.nit:2105 */
       ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1741 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1741);
+      /* parser/parser_prod.nit:2107 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2107);
     }
-    /* parser/parser_prod.nit:1743 */
+    /* parser/parser_prod.nit:2109 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1745 */
+  /* parser/parser_prod.nit:2111 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9769,7 +11548,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1746 */
+    /* parser/parser_prod.nit:2112 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9784,28 +11563,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1747 */
+      /* parser/parser_prod.nit:2113 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1747);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2113);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1748 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2114 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast TString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1748);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2114);
       }
-      /* parser/parser_prod.nit:1749 */
+      /* parser/parser_prod.nit:2115 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1751 */
+      /* parser/parser_prod.nit:2117 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1753 */
+    /* parser/parser_prod.nit:2119 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1755 */
+  /* parser/parser_prod.nit:2121 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9820,7 +11599,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1756 */
+    /* parser/parser_prod.nit:2122 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9835,28 +11614,28 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1757 */
+      /* parser/parser_prod.nit:2123 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1757);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2123);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1758 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2124 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast AExternCalls*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1758);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2124);
       }
-      /* parser/parser_prod.nit:1759 */
+      /* parser/parser_prod.nit:2125 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1761 */
+      /* parser/parser_prod.nit:2127 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1763 */
+    /* parser/parser_prod.nit:2129 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1765 */
+  /* parser/parser_prod.nit:2131 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -9871,7 +11650,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1766 */
+    /* parser/parser_prod.nit:2132 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9886,32 +11665,355 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1767 */
+      /* parser/parser_prod.nit:2133 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1767);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2133);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1768 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2134 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1768);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2134);
       }
-      /* parser/parser_prod.nit:1769 */
+      /* parser/parser_prod.nit:2135 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1771 */
+      /* parser/parser_prod.nit:2137 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1773 */
+    /* parser/parser_prod.nit:2139 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternMethPropdef___visit_all[] = "parser_prod::AExternMethPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_doc__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AExternMethPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2143;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2145 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2146 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2147 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2147);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_kwredef__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AExternMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2150;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2152 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2153 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2154 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2154);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_visibility__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___AExternMethPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 2157;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2159 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2160 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2160);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_kwmeth__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AExternMethPropdef::n_kwmeth=)";
+void parser___parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2162;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2164 */
+  ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2165 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_methid__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___AExternMethPropdef___n_methid__eq(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___parser_prod;
+  fra.me.line = 2167;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2169 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2170 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2170);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_signature__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___AExternMethPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 2172;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2174 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2175 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2175);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_extern__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AExternPropdef::n_extern=)";
+void parser___parser_prod___AExternMethPropdef___n_extern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2177;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_extern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2179 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2180 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2181 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2181);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_extern_calls__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AExternPropdef::n_extern_calls=)";
+void parser___parser_prod___AExternMethPropdef___n_extern_calls__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2184;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_extern_calls__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2186 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2187 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2188 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2188);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___n_extern_code_block__eq[] = "parser_prod::AExternMethPropdef::(parser_nodes::AExternPropdef::n_extern_code_block=)";
+void parser___parser_prod___AExternMethPropdef___n_extern_code_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2191;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___n_extern_code_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2193 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2194 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2195 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2195);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternMethPropdef___visit_all[] = "parser_prod::AExternMethPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -9919,7 +12021,7 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1777;
+  fra.me.line = 2200;
   fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9930,9 +12032,9 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1777 */
+  /* parser/parser_prod.nit:2200 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1779 */
+  /* parser/parser_prod.nit:2202 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9948,16 +12050,16 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1780 */
+    /* parser/parser_prod.nit:2203 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1780);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2203);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1782 */
+  /* parser/parser_prod.nit:2205 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9973,33 +12075,33 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1783 */
+    /* parser/parser_prod.nit:2206 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1783);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2206);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1785 */
+  /* parser/parser_prod.nit:2208 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1786 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2209 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 1786);
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_parser___parser_prod, 2209);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1787 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2210 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1788 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2211 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1789 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2212 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10015,16 +12117,16 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1790 */
+    /* parser/parser_prod.nit:2213 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast TString*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1790);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2213);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1792 */
+  /* parser/parser_prod.nit:2215 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10040,16 +12142,16 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1793 */
+    /* parser/parser_prod.nit:2216 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast AExternCalls*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1793);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2216);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1795 */
+  /* parser/parser_prod.nit:2218 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10065,27 +12167,27 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1796 */
+    /* parser/parser_prod.nit:2219 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1796);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2219);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___empty_init[] = "parser_prod::AConcreteMethPropdef::empty_init";
 void parser___parser_prod___AConcreteMethPropdef___empty_init(val_t p0, int* init_table){
-  int itpos47 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef].i;
+  int itpos46 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos47]) return;
+  if (init_table[itpos46]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1801;
+  fra.me.line = 2224;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -10093,20 +12195,20 @@ void parser___parser_prod___AConcreteMethPropdef___empty_init(val_t p0, int* ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos47] = 1;
+  init_table[itpos46] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef[] = "parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
 void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, int* init_table){
-  int itpos48 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef].i;
+  int itpos47 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos48]) return;
+  if (init_table[itpos47]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1803;
+  fra.me.line = 2226;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -10130,13 +12232,13 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
-  /* parser/parser_prod.nit:1803 */
+  /* parser/parser_prod.nit:2226 */
   fra.me.REG[9] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1814 */
+  /* parser/parser_prod.nit:2237 */
   CALL_parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[9])(fra.me.REG[9], init_table);
-  /* parser/parser_prod.nit:1815 */
+  /* parser/parser_prod.nit:2238 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[9]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1816 */
+  /* parser/parser_prod.nit:2239 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10151,16 +12253,16 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1817 */
+    /* parser/parser_prod.nit:2240 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1817);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2240);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1819 */
+  /* parser/parser_prod.nit:2242 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[9]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1820 */
+  /* parser/parser_prod.nit:2243 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10175,68 +12277,68 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1821 */
+    /* parser/parser_prod.nit:2244 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1821);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2244);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1823 */
+  /* parser/parser_prod.nit:2246 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1823);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2246);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[9]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1824 */
+  /* parser/parser_prod.nit:2247 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1824);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2247);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1825 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2248 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1825);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2248);
   }
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[9]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1826 */
+  /* parser/parser_prod.nit:2249 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1826);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2249);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1827 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2250 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1827);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2250);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[9]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1828 */
+  /* parser/parser_prod.nit:2251 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1828);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2251);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1829 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2252 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1829);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2252);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[9]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:1830 */
+  /* parser/parser_prod.nit:2253 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1830);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2253);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1831 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2254 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[9]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:1832 */
+  /* parser/parser_prod.nit:2255 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10251,16 +12353,16 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1833 */
+    /* parser/parser_prod.nit:2256 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1833);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2256);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1835 */
+  /* parser/parser_prod.nit:2258 */
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[9]) = fra.me.REG[8];
-  /* parser/parser_prod.nit:1836 */
+  /* parser/parser_prod.nit:2259 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10275,18 +12377,18 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1837 */
+    /* parser/parser_prod.nit:2260 */
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1837);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2260);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos48] = 1;
+  init_table[itpos47] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___replace_child[] = "parser_prod::AConcreteMethPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___replace_child[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AConcreteMethPropdef___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;
@@ -10294,7 +12396,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1841;
+  fra.me.line = 2264;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -10306,7 +12408,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1843 */
+  /* parser/parser_prod.nit:2266 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10321,7 +12423,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1844 */
+    /* parser/parser_prod.nit:2267 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10336,28 +12438,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1845 */
+      /* parser/parser_prod.nit:2268 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1845);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2268);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1846 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2269 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1846);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2269);
       }
-      /* parser/parser_prod.nit:1847 */
+      /* parser/parser_prod.nit:2270 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1849 */
+      /* parser/parser_prod.nit:2272 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1851 */
+    /* parser/parser_prod.nit:2274 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1853 */
+  /* parser/parser_prod.nit:2276 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10372,7 +12474,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1854 */
+    /* parser/parser_prod.nit:2277 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10387,28 +12489,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1855 */
+      /* parser/parser_prod.nit:2278 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1855);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2278);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1856 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2279 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1856);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2279);
       }
-      /* parser/parser_prod.nit:1857 */
+      /* parser/parser_prod.nit:2280 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1859 */
+      /* parser/parser_prod.nit:2282 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1861 */
+    /* parser/parser_prod.nit:2284 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1863 */
+  /* parser/parser_prod.nit:2286 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10423,7 +12525,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1864 */
+    /* parser/parser_prod.nit:2287 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10438,28 +12540,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1865 */
+      /* parser/parser_prod.nit:2288 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1865);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2288);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1866 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2289 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1866);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2289);
       }
-      /* parser/parser_prod.nit:1867 */
+      /* parser/parser_prod.nit:2290 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1869 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1869);
+      /* parser/parser_prod.nit:2292 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2292);
     }
-    /* parser/parser_prod.nit:1871 */
+    /* parser/parser_prod.nit:2294 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1873 */
+  /* parser/parser_prod.nit:2296 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10474,7 +12576,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1874 */
+    /* parser/parser_prod.nit:2297 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10489,28 +12591,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1875 */
+      /* parser/parser_prod.nit:2298 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1875);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2298);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1876 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2299 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast TKwmeth*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1876);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2299);
       }
-      /* parser/parser_prod.nit:1877 */
+      /* parser/parser_prod.nit:2300 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1879 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1879);
+      /* parser/parser_prod.nit:2302 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2302);
     }
-    /* parser/parser_prod.nit:1881 */
+    /* parser/parser_prod.nit:2304 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1883 */
+  /* parser/parser_prod.nit:2306 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10525,7 +12627,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1884 */
+    /* parser/parser_prod.nit:2307 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10540,28 +12642,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1885 */
+      /* parser/parser_prod.nit:2308 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1885);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2308);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1886 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2309 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1886);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2309);
       }
-      /* parser/parser_prod.nit:1887 */
+      /* parser/parser_prod.nit:2310 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1889 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1889);
+      /* parser/parser_prod.nit:2312 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2312);
     }
-    /* parser/parser_prod.nit:1891 */
+    /* parser/parser_prod.nit:2314 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1893 */
+  /* parser/parser_prod.nit:2316 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10576,7 +12678,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1894 */
+    /* parser/parser_prod.nit:2317 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10591,28 +12693,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1895 */
+      /* parser/parser_prod.nit:2318 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1895);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2318);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1896 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2319 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1896);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2319);
       }
-      /* parser/parser_prod.nit:1897 */
+      /* parser/parser_prod.nit:2320 */
       ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1899 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 1899);
+      /* parser/parser_prod.nit:2322 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2322);
     }
-    /* parser/parser_prod.nit:1901 */
+    /* parser/parser_prod.nit:2324 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1903 */
+  /* parser/parser_prod.nit:2326 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10627,7 +12729,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1904 */
+    /* parser/parser_prod.nit:2327 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10642,28 +12744,28 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1905 */
+      /* parser/parser_prod.nit:2328 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1905);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2328);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1906 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2329 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1906);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2329);
       }
-      /* parser/parser_prod.nit:1907 */
+      /* parser/parser_prod.nit:2330 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1909 */
+      /* parser/parser_prod.nit:2332 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1911 */
+    /* parser/parser_prod.nit:2334 */
     goto label1;
   }
-  /* parser/parser_prod.nit:1913 */
+  /* parser/parser_prod.nit:2336 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -10678,7 +12780,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1914 */
+    /* parser/parser_prod.nit:2337 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10693,32 +12795,316 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1915 */
+      /* parser/parser_prod.nit:2338 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1915);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2338);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1916 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2339 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1916);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2339);
       }
-      /* parser/parser_prod.nit:1917 */
+      /* parser/parser_prod.nit:2340 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1919 */
+      /* parser/parser_prod.nit:2342 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1921 */
+    /* parser/parser_prod.nit:2344 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___visit_all[] = "parser_prod::AConcreteMethPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_doc__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AConcreteMethPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2348;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2350 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2351 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2352 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2352);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_kwredef__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2355;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2357 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2358 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2359 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2359);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_visibility__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___AConcreteMethPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 2362;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2364 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2365 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2365);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::AConcreteMethPropdef::n_kwmeth=)";
+void parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq(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___parser_prod;
+  fra.me.line = 2367;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2369 */
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2370 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2370);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_methid__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___AConcreteMethPropdef___n_methid__eq(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___parser_prod;
+  fra.me.line = 2372;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2374 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2375 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2375);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_signature__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___AConcreteMethPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 2377;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2379 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2380 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2380);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_annotations__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AConcreteMethPropdef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2382;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2384 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2385 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2386 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2386);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___n_block__eq[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::AConcreteMethPropdef::n_block=)";
+void parser___parser_prod___AConcreteMethPropdef___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2389;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2391 */
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2392 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2393 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2393);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteMethPropdef___visit_all[] = "parser_prod::AConcreteMethPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -10726,7 +13112,7 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1925;
+  fra.me.line = 2398;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -10737,9 +13123,9 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:1925 */
+  /* parser/parser_prod.nit:2398 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1927 */
+  /* parser/parser_prod.nit:2400 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10755,16 +13141,16 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1928 */
+    /* parser/parser_prod.nit:2401 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1928);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2401);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1930 */
+  /* parser/parser_prod.nit:2403 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10780,28 +13166,28 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1931 */
+    /* parser/parser_prod.nit:2404 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1931);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2404);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1933 */
+  /* parser/parser_prod.nit:2406 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1934 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2407 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1935 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2408 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1936 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2409 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:1937 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2410 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10817,16 +13203,16 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1938 */
+    /* parser/parser_prod.nit:2411 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1938);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2411);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:1940 */
+  /* parser/parser_prod.nit:2413 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10842,27 +13228,27 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1941 */
+    /* parser/parser_prod.nit:2414 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1941);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2414);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___empty_init[] = "parser_prod::AConcreteInitPropdef::empty_init";
 void parser___parser_prod___AConcreteInitPropdef___empty_init(val_t p0, int* init_table){
-  int itpos49 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef].i;
+  int itpos48 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos49]) return;
+  if (init_table[itpos48]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1946;
+  fra.me.line = 2419;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -10870,20 +13256,20 @@ void parser___parser_prod___AConcreteInitPropdef___empty_init(val_t p0, int* ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos49] = 1;
+  init_table[itpos48] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef[] = "parser_prod::AConcreteInitPropdef::init_aconcreteinitpropdef";
 void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, int* init_table){
-  int itpos50 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef].i;
+  int itpos49 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos50]) return;
+  if (init_table[itpos49]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1948;
+  fra.me.line = 2421;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -10907,13 +13293,13 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
-  /* parser/parser_prod.nit:1948 */
+  /* parser/parser_prod.nit:2421 */
   fra.me.REG[9] = fra.me.REG[0];
-  /* parser/parser_prod.nit:1959 */
+  /* parser/parser_prod.nit:2432 */
   CALL_parser___parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[9])(fra.me.REG[9], init_table);
-  /* parser/parser_prod.nit:1960 */
+  /* parser/parser_prod.nit:2433 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[9]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:1961 */
+  /* parser/parser_prod.nit:2434 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10928,16 +13314,16 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1962 */
+    /* parser/parser_prod.nit:2435 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1962);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2435);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1964 */
+  /* parser/parser_prod.nit:2437 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[9]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:1965 */
+  /* parser/parser_prod.nit:2438 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10952,42 +13338,42 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1966 */
+    /* parser/parser_prod.nit:2439 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1966);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2439);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1968 */
+  /* parser/parser_prod.nit:2441 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1968);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2441);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[9]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:1969 */
+  /* parser/parser_prod.nit:2442 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1969);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2442);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1970 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2443 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1970);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2443);
   }
   ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[9]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:1971 */
+  /* parser/parser_prod.nit:2444 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1971);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2444);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1972 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2445 */
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[9]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:1973 */
+  /* parser/parser_prod.nit:2446 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11002,29 +13388,29 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1974 */
+    /* parser/parser_prod.nit:2447 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1974);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2447);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1976 */
+  /* parser/parser_prod.nit:2449 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1976);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2449);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[9]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:1977 */
+  /* parser/parser_prod.nit:2450 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1977);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2450);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
-  /* parser/parser_prod.nit:1978 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
+  /* parser/parser_prod.nit:2451 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[9]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:1979 */
+  /* parser/parser_prod.nit:2452 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11039,16 +13425,16 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1980 */
+    /* parser/parser_prod.nit:2453 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1980);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2453);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
   }
-  /* parser/parser_prod.nit:1982 */
+  /* parser/parser_prod.nit:2455 */
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[9]) = fra.me.REG[8];
-  /* parser/parser_prod.nit:1983 */
+  /* parser/parser_prod.nit:2456 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11063,18 +13449,18 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1984 */
+    /* parser/parser_prod.nit:2457 */
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1984);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2457);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos50] = 1;
+  init_table[itpos49] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___replace_child[] = "parser_prod::AConcreteInitPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___replace_child[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AConcreteInitPropdef___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;
@@ -11082,7 +13468,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 1988;
+  fra.me.line = 2461;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11094,7 +13480,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:1990 */
+  /* parser/parser_prod.nit:2463 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11109,7 +13495,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:1991 */
+    /* parser/parser_prod.nit:2464 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11124,28 +13510,28 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:1992 */
+      /* parser/parser_prod.nit:2465 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1992);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2465);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:1993 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2466 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 1993);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2466);
       }
-      /* parser/parser_prod.nit:1994 */
+      /* parser/parser_prod.nit:2467 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:1996 */
+      /* parser/parser_prod.nit:2469 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:1998 */
+    /* parser/parser_prod.nit:2471 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2000 */
+  /* parser/parser_prod.nit:2473 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11160,7 +13546,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2001 */
+    /* parser/parser_prod.nit:2474 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11175,28 +13561,28 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2002 */
+      /* parser/parser_prod.nit:2475 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2002);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2475);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2003 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2476 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2003);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2476);
       }
-      /* parser/parser_prod.nit:2004 */
+      /* parser/parser_prod.nit:2477 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2006 */
+      /* parser/parser_prod.nit:2479 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2008 */
+    /* parser/parser_prod.nit:2481 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2010 */
+  /* parser/parser_prod.nit:2483 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11211,7 +13597,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2011 */
+    /* parser/parser_prod.nit:2484 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11226,32 +13612,32 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2012 */
+      /* parser/parser_prod.nit:2485 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2012);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2485);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2013 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2486 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2013);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2486);
       }
-      /* parser/parser_prod.nit:2014 */
+      /* parser/parser_prod.nit:2487 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2016 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2016);
+      /* parser/parser_prod.nit:2489 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2489);
     }
-    /* parser/parser_prod.nit:2018 */
+    /* parser/parser_prod.nit:2491 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2020 */
+  /* parser/parser_prod.nit:2493 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 2020);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 2493);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -11261,7 +13647,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2021 */
+    /* parser/parser_prod.nit:2494 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11276,28 +13662,28 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2022 */
+      /* parser/parser_prod.nit:2495 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2022);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2495);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2023 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2496 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast TKwinit*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2023);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2496);
       }
-      /* parser/parser_prod.nit:2024 */
+      /* parser/parser_prod.nit:2497 */
       ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2026 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2026);
+      /* parser/parser_prod.nit:2499 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2499);
     }
-    /* parser/parser_prod.nit:2028 */
+    /* parser/parser_prod.nit:2501 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2030 */
+  /* parser/parser_prod.nit:2503 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11312,7 +13698,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2031 */
+    /* parser/parser_prod.nit:2504 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11327,28 +13713,28 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2032 */
+      /* parser/parser_prod.nit:2505 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2032);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2505);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2033 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2506 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2033);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2506);
       }
-      /* parser/parser_prod.nit:2034 */
+      /* parser/parser_prod.nit:2507 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2036 */
+      /* parser/parser_prod.nit:2509 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2038 */
+    /* parser/parser_prod.nit:2511 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2040 */
+  /* parser/parser_prod.nit:2513 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11363,7 +13749,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2041 */
+    /* parser/parser_prod.nit:2514 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11378,28 +13764,28 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2042 */
+      /* parser/parser_prod.nit:2515 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2042);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2515);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2043 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2516 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2043);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2516);
       }
-      /* parser/parser_prod.nit:2044 */
+      /* parser/parser_prod.nit:2517 */
       ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2046 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2046);
+      /* parser/parser_prod.nit:2519 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2519);
     }
-    /* parser/parser_prod.nit:2048 */
+    /* parser/parser_prod.nit:2521 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2050 */
+  /* parser/parser_prod.nit:2523 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11414,7 +13800,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2051 */
+    /* parser/parser_prod.nit:2524 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11429,28 +13815,28 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2052 */
+      /* parser/parser_prod.nit:2525 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2052);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2525);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2053 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2526 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2053);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2526);
       }
-      /* parser/parser_prod.nit:2054 */
+      /* parser/parser_prod.nit:2527 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2056 */
+      /* parser/parser_prod.nit:2529 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2058 */
+    /* parser/parser_prod.nit:2531 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2060 */
+  /* parser/parser_prod.nit:2533 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11465,7 +13851,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2061 */
+    /* parser/parser_prod.nit:2534 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11480,32 +13866,328 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2062 */
+      /* parser/parser_prod.nit:2535 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2062);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2535);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2063 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2536 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2063);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2536);
       }
-      /* parser/parser_prod.nit:2064 */
+      /* parser/parser_prod.nit:2537 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2066 */
+      /* parser/parser_prod.nit:2539 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2068 */
+    /* parser/parser_prod.nit:2541 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___visit_all[] = "parser_prod::AConcreteInitPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_doc__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AConcreteInitPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2545;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2547 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2548 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2549 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2549);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_kwredef__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2552;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2554 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2555 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2556 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2556);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_visibility__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___AConcreteInitPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 2559;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2561 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2562 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2562);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_kwinit__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::AConcreteInitPropdef::n_kwinit=)";
+void parser___parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2564;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_kwinit__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2566 */
+  ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2567 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_methid__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___AConcreteInitPropdef___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2569;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2571 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2572 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2573 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2573);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_signature__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___AConcreteInitPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 2576;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2578 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2579 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2579);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_annotations__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AConcreteInitPropdef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2581;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2583 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2584 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2585 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2585);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___n_block__eq[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::AConcreteMethPropdef::n_block=)";
+void parser___parser_prod___AConcreteInitPropdef___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2588;
+  fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2590 */
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2591 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2592 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2592);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AConcreteInitPropdef___visit_all[] = "parser_prod::AConcreteInitPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -11513,7 +14195,7 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2072;
+  fra.me.line = 2597;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11524,9 +14206,9 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2072 */
+  /* parser/parser_prod.nit:2597 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2074 */
+  /* parser/parser_prod.nit:2599 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11542,16 +14224,16 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2075 */
+    /* parser/parser_prod.nit:2600 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2075);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2600);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2077 */
+  /* parser/parser_prod.nit:2602 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11567,27 +14249,27 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2078 */
+    /* parser/parser_prod.nit:2603 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2078);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2603);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2080 */
+  /* parser/parser_prod.nit:2605 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2081 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2606 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 2081);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 2606);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2082 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2607 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11603,19 +14285,19 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2083 */
+    /* parser/parser_prod.nit:2608 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2083);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2608);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2085 */
+  /* parser/parser_prod.nit:2610 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2086 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2611 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11631,16 +14313,16 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2087 */
+    /* parser/parser_prod.nit:2612 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2087);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2612);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2089 */
+  /* parser/parser_prod.nit:2614 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11656,27 +14338,27 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2090 */
+    /* parser/parser_prod.nit:2615 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2090);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2615);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternInitPropdef___empty_init[] = "parser_prod::AExternInitPropdef::empty_init";
 void parser___parser_prod___AExternInitPropdef___empty_init(val_t p0, int* init_table){
-  int itpos51 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef].i;
+  int itpos50 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos51]) return;
+  if (init_table[itpos50]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2095;
+  fra.me.line = 2620;
   fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -11684,20 +14366,20 @@ void parser___parser_prod___AExternInitPropdef___empty_init(val_t p0, int* init_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos51] = 1;
+  init_table[itpos50] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef[] = "parser_prod::AExternInitPropdef::init_aexterninitpropdef";
 void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, int* init_table){
-  int itpos52 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef].i;
+  int itpos51 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos52]) return;
+  if (init_table[itpos51]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2097;
+  fra.me.line = 2622;
   fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -11723,13 +14405,13 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
   fra.me.REG[9] = p9;
-  /* parser/parser_prod.nit:2097 */
+  /* parser/parser_prod.nit:2622 */
   fra.me.REG[10] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2109 */
+  /* parser/parser_prod.nit:2634 */
   CALL_parser___parser_prod___AExternInitPropdef___empty_init(fra.me.REG[10])(fra.me.REG[10], init_table);
-  /* parser/parser_prod.nit:2110 */
+  /* parser/parser_prod.nit:2635 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[10]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2111 */
+  /* parser/parser_prod.nit:2636 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11744,16 +14426,16 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2112 */
+    /* parser/parser_prod.nit:2637 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2112);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2637);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:2114 */
+  /* parser/parser_prod.nit:2639 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[10]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:2115 */
+  /* parser/parser_prod.nit:2640 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11768,42 +14450,42 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2116 */
+    /* parser/parser_prod.nit:2641 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2116);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2641);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:2118 */
+  /* parser/parser_prod.nit:2643 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2118);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2643);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[10]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:2119 */
+  /* parser/parser_prod.nit:2644 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2119);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2644);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
-  /* parser/parser_prod.nit:2120 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2645 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2120);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2645);
   }
   ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[10]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:2121 */
+  /* parser/parser_prod.nit:2646 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2121);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2646);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[10]);
-  /* parser/parser_prod.nit:2122 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2647 */
   ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[10]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:2123 */
+  /* parser/parser_prod.nit:2648 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11818,29 +14500,29 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2124 */
+    /* parser/parser_prod.nit:2649 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2124);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2649);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:2126 */
+  /* parser/parser_prod.nit:2651 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2126);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2651);
   }
   ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[10]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:2127 */
+  /* parser/parser_prod.nit:2652 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2127);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2652);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[10]);
-  /* parser/parser_prod.nit:2128 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[10]);
+  /* parser/parser_prod.nit:2653 */
   ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[10]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:2129 */
+  /* parser/parser_prod.nit:2654 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11855,16 +14537,16 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2130 */
+    /* parser/parser_prod.nit:2655 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2130);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2655);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:2132 */
+  /* parser/parser_prod.nit:2657 */
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[10]) = fra.me.REG[8];
-  /* parser/parser_prod.nit:2133 */
+  /* parser/parser_prod.nit:2658 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11879,16 +14561,16 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2134 */
+    /* parser/parser_prod.nit:2659 */
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2134);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2659);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
   }
-  /* parser/parser_prod.nit:2136 */
+  /* parser/parser_prod.nit:2661 */
   ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[10]) = fra.me.REG[9];
-  /* parser/parser_prod.nit:2137 */
+  /* parser/parser_prod.nit:2662 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11903,18 +14585,18 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2138 */
+    /* parser/parser_prod.nit:2663 */
     REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2138);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2663);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos52] = 1;
+  init_table[itpos51] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternInitPropdef___replace_child[] = "parser_prod::AExternInitPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___replace_child[] = "parser_prod::AExternInitPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AExternInitPropdef___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;
@@ -11922,7 +14604,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2142;
+  fra.me.line = 2667;
   fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11934,7 +14616,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2144 */
+  /* parser/parser_prod.nit:2669 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -11949,7 +14631,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2145 */
+    /* parser/parser_prod.nit:2670 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -11964,28 +14646,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2146 */
+      /* parser/parser_prod.nit:2671 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2146);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2671);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2147 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2672 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2147);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2672);
       }
-      /* parser/parser_prod.nit:2148 */
+      /* parser/parser_prod.nit:2673 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2150 */
+      /* parser/parser_prod.nit:2675 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2152 */
+    /* parser/parser_prod.nit:2677 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2154 */
+  /* parser/parser_prod.nit:2679 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12000,7 +14682,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2155 */
+    /* parser/parser_prod.nit:2680 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12015,28 +14697,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2156 */
+      /* parser/parser_prod.nit:2681 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2156);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2681);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2157 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2682 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2157);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2682);
       }
-      /* parser/parser_prod.nit:2158 */
+      /* parser/parser_prod.nit:2683 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2160 */
+      /* parser/parser_prod.nit:2685 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2162 */
+    /* parser/parser_prod.nit:2687 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2164 */
+  /* parser/parser_prod.nit:2689 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12051,7 +14733,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2165 */
+    /* parser/parser_prod.nit:2690 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12066,32 +14748,32 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2166 */
+      /* parser/parser_prod.nit:2691 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2166);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2691);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2167 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2692 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2167);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2692);
       }
-      /* parser/parser_prod.nit:2168 */
+      /* parser/parser_prod.nit:2693 */
       ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2170 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2170);
+      /* parser/parser_prod.nit:2695 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2695);
     }
-    /* parser/parser_prod.nit:2172 */
+    /* parser/parser_prod.nit:2697 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2174 */
+  /* parser/parser_prod.nit:2699 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 2174);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 2699);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -12101,7 +14783,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2175 */
+    /* parser/parser_prod.nit:2700 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12116,28 +14798,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2176 */
+      /* parser/parser_prod.nit:2701 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2176);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2701);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2177 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2702 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast TKwnew*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2177);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2702);
       }
-      /* parser/parser_prod.nit:2178 */
+      /* parser/parser_prod.nit:2703 */
       ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2180 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2180);
+      /* parser/parser_prod.nit:2705 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2705);
     }
-    /* parser/parser_prod.nit:2182 */
+    /* parser/parser_prod.nit:2707 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2184 */
+  /* parser/parser_prod.nit:2709 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12152,7 +14834,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2185 */
+    /* parser/parser_prod.nit:2710 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12167,28 +14849,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2186 */
+      /* parser/parser_prod.nit:2711 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2186);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2711);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2187 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2712 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2187);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2712);
       }
-      /* parser/parser_prod.nit:2188 */
+      /* parser/parser_prod.nit:2713 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2190 */
+      /* parser/parser_prod.nit:2715 */
       ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2192 */
+    /* parser/parser_prod.nit:2717 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2194 */
+  /* parser/parser_prod.nit:2719 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12203,7 +14885,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2195 */
+    /* parser/parser_prod.nit:2720 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12218,28 +14900,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2196 */
+      /* parser/parser_prod.nit:2721 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2196);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2721);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2197 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2722 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2197);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2722);
       }
-      /* parser/parser_prod.nit:2198 */
+      /* parser/parser_prod.nit:2723 */
       ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2200 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2200);
+      /* parser/parser_prod.nit:2725 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2725);
     }
-    /* parser/parser_prod.nit:2202 */
+    /* parser/parser_prod.nit:2727 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2204 */
+  /* parser/parser_prod.nit:2729 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12254,7 +14936,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2205 */
+    /* parser/parser_prod.nit:2730 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12269,28 +14951,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2206 */
+      /* parser/parser_prod.nit:2731 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2206);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2731);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2207 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2732 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast TString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2207);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2732);
       }
-      /* parser/parser_prod.nit:2208 */
+      /* parser/parser_prod.nit:2733 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2210 */
+      /* parser/parser_prod.nit:2735 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2212 */
+    /* parser/parser_prod.nit:2737 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2214 */
+  /* parser/parser_prod.nit:2739 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12305,7 +14987,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2215 */
+    /* parser/parser_prod.nit:2740 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12320,28 +15002,28 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2216 */
+      /* parser/parser_prod.nit:2741 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2216);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2741);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2217 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2742 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast AExternCalls*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2217);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2742);
       }
-      /* parser/parser_prod.nit:2218 */
+      /* parser/parser_prod.nit:2743 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2220 */
+      /* parser/parser_prod.nit:2745 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2222 */
+    /* parser/parser_prod.nit:2747 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2224 */
+  /* parser/parser_prod.nit:2749 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12356,7 +15038,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2225 */
+    /* parser/parser_prod.nit:2750 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12371,32 +15053,372 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2226 */
+      /* parser/parser_prod.nit:2751 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2226);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2751);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2227 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2752 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2227);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2752);
       }
-      /* parser/parser_prod.nit:2228 */
+      /* parser/parser_prod.nit:2753 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2230 */
+      /* parser/parser_prod.nit:2755 */
       ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2232 */
+    /* parser/parser_prod.nit:2757 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternInitPropdef___visit_all[] = "parser_prod::AExternInitPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_doc__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___AExternInitPropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2761;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2763 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2764 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2765 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2765);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_kwredef__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AExternInitPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2768;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2770 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2771 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2772 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2772);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_visibility__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AMethPropdef::n_visibility=)";
+void parser___parser_prod___AExternInitPropdef___n_visibility__eq(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___parser_prod;
+  fra.me.line = 2775;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2777 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2778 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2778);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_kwnew__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AExternInitPropdef::n_kwnew=)";
+void parser___parser_prod___AExternInitPropdef___n_kwnew__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2780;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_kwnew__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2782 */
+  ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2783 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_methid__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AMethPropdef::n_methid=)";
+void parser___parser_prod___AExternInitPropdef___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2785;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2787 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2788 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2789 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2789);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_signature__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AMethPropdef::n_signature=)";
+void parser___parser_prod___AExternInitPropdef___n_signature__eq(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___parser_prod;
+  fra.me.line = 2792;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2794 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2795 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2795);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_extern__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AExternPropdef::n_extern=)";
+void parser___parser_prod___AExternInitPropdef___n_extern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2797;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_extern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2799 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2800 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2801 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2801);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_extern_calls__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AExternPropdef::n_extern_calls=)";
+void parser___parser_prod___AExternInitPropdef___n_extern_calls__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2804;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_extern_calls__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2806 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2807 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2808 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2808);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___n_extern_code_block__eq[] = "parser_prod::AExternInitPropdef::(parser_nodes::AExternPropdef::n_extern_code_block=)";
+void parser___parser_prod___AExternInitPropdef___n_extern_code_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2811;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___n_extern_code_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2813 */
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2814 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2815 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2815);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternInitPropdef___visit_all[] = "parser_prod::AExternInitPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -12404,7 +15426,7 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2236;
+  fra.me.line = 2820;
   fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -12415,9 +15437,9 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2236 */
+  /* parser/parser_prod.nit:2820 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2238 */
+  /* parser/parser_prod.nit:2822 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12433,16 +15455,16 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2239 */
+    /* parser/parser_prod.nit:2823 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2239);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2823);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2241 */
+  /* parser/parser_prod.nit:2825 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12458,27 +15480,27 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2242 */
+    /* parser/parser_prod.nit:2826 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2242);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2826);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2244 */
+  /* parser/parser_prod.nit:2828 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2245 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2829 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 2245);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 2829);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2246 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2830 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12494,19 +15516,19 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2247 */
+    /* parser/parser_prod.nit:2831 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2247);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2831);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2249 */
+  /* parser/parser_prod.nit:2833 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2250 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:2834 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12522,16 +15544,16 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2251 */
+    /* parser/parser_prod.nit:2835 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast TString*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2251);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2835);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2253 */
+  /* parser/parser_prod.nit:2837 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12547,16 +15569,16 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2254 */
+    /* parser/parser_prod.nit:2838 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast AExternCalls*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2254);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2838);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2256 */
+  /* parser/parser_prod.nit:2840 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12572,27 +15594,27 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2257 */
+    /* parser/parser_prod.nit:2841 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast AExternCodeBlock*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2257);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2841);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMainMethPropdef___empty_init[] = "parser_prod::AMainMethPropdef::empty_init";
 void parser___parser_prod___AMainMethPropdef___empty_init(val_t p0, int* init_table){
-  int itpos53 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainMethPropdef].i;
+  int itpos52 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainMethPropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos53]) return;
+  if (init_table[itpos52]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2262;
+  fra.me.line = 2846;
   fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -12600,20 +15622,20 @@ void parser___parser_prod___AMainMethPropdef___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos53] = 1;
+  init_table[itpos52] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef[] = "parser_prod::AMainMethPropdef::init_amainmethpropdef";
 void parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos54 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainMethPropdef].i;
+  int itpos53 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMainMethPropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos54]) return;
+  if (init_table[itpos53]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2264;
+  fra.me.line = 2848;
   fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -12624,11 +15646,11 @@ void parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2269 */
+  /* parser/parser_prod.nit:2853 */
   CALL_parser___parser_prod___AMainMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* parser/parser_prod.nit:2270 */
+  /* parser/parser_prod.nit:2854 */
   ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2271 */
+  /* parser/parser_prod.nit:2855 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12643,16 +15665,16 @@ void parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2272 */
+    /* parser/parser_prod.nit:2856 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2272);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2856);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* parser/parser_prod.nit:2274 */
+  /* parser/parser_prod.nit:2858 */
   ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:2275 */
+  /* parser/parser_prod.nit:2859 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12667,18 +15689,18 @@ void parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2276 */
+    /* parser/parser_prod.nit:2860 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2276);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2860);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos54] = 1;
+  init_table[itpos53] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMainMethPropdef___replace_child[] = "parser_prod::AMainMethPropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMainMethPropdef___replace_child[] = "parser_prod::AMainMethPropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMainMethPropdef___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;
@@ -12686,7 +15708,7 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2280;
+  fra.me.line = 2864;
   fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -12698,7 +15720,7 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2282 */
+  /* parser/parser_prod.nit:2866 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12713,7 +15735,7 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2283 */
+    /* parser/parser_prod.nit:2867 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12728,28 +15750,28 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2284 */
+      /* parser/parser_prod.nit:2868 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2284);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2868);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2285 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2869 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2285);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2869);
       }
-      /* parser/parser_prod.nit:2286 */
+      /* parser/parser_prod.nit:2870 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2288 */
+      /* parser/parser_prod.nit:2872 */
       ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2290 */
+    /* parser/parser_prod.nit:2874 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2292 */
+  /* parser/parser_prod.nit:2876 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -12764,7 +15786,7 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2293 */
+    /* parser/parser_prod.nit:2877 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -12779,32 +15801,120 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2294 */
+      /* parser/parser_prod.nit:2878 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2294);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2878);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2295 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2879 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2295);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2879);
       }
-      /* parser/parser_prod.nit:2296 */
+      /* parser/parser_prod.nit:2880 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2298 */
+      /* parser/parser_prod.nit:2882 */
       ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2300 */
+    /* parser/parser_prod.nit:2884 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMainMethPropdef___visit_all[] = "parser_prod::AMainMethPropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMainMethPropdef___n_kwredef__eq[] = "parser_prod::AMainMethPropdef::(parser_nodes::AMethPropdef::n_kwredef=)";
+void parser___parser_prod___AMainMethPropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2888;
+  fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2890 */
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2891 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2892 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2892);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMainMethPropdef___n_block__eq[] = "parser_prod::AMainMethPropdef::(parser_nodes::AConcreteMethPropdef::n_block=)";
+void parser___parser_prod___AMainMethPropdef___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 2895;
+  fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2897 */
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:2898 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:2899 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2899);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMainMethPropdef___visit_all[] = "parser_prod::AMainMethPropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -12812,7 +15922,7 @@ void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2304;
+  fra.me.line = 2904;
   fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -12823,9 +15933,9 @@ void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2304 */
+  /* parser/parser_prod.nit:2904 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2306 */
+  /* parser/parser_prod.nit:2906 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12841,16 +15951,16 @@ void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2307 */
+    /* parser/parser_prod.nit:2907 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2307);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2907);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2309 */
+  /* parser/parser_prod.nit:2909 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -12866,27 +15976,27 @@ void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2310 */
+    /* parser/parser_prod.nit:2910 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2310);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2910);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ATypePropdef___empty_init[] = "parser_prod::ATypePropdef::empty_init";
 void parser___parser_prod___ATypePropdef___empty_init(val_t p0, int* init_table){
-  int itpos55 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypePropdef].i;
+  int itpos54 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypePropdef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos55]) return;
+  if (init_table[itpos54]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2315;
+  fra.me.line = 2915;
   fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -12894,20 +16004,20 @@ void parser___parser_prod___ATypePropdef___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos55] = 1;
+  init_table[itpos54] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ATypePropdef___init_atypepropdef[] = "parser_prod::ATypePropdef::init_atypepropdef";
 void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, int* init_table){
-  int itpos56 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypePropdef].i;
+  int itpos55 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypePropdef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos56]) return;
+  if (init_table[itpos55]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2317;
+  fra.me.line = 2917;
   fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___init_atypepropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12929,13 +16039,13 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
-  /* parser/parser_prod.nit:2317 */
+  /* parser/parser_prod.nit:2917 */
   fra.me.REG[8] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2327 */
+  /* parser/parser_prod.nit:2927 */
   CALL_parser___parser_prod___ATypePropdef___empty_init(fra.me.REG[8])(fra.me.REG[8], init_table);
-  /* parser/parser_prod.nit:2328 */
+  /* parser/parser_prod.nit:2928 */
   ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[8]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2329 */
+  /* parser/parser_prod.nit:2929 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12950,16 +16060,16 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2330 */
+    /* parser/parser_prod.nit:2930 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2330);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2930);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
-  /* parser/parser_prod.nit:2332 */
+  /* parser/parser_prod.nit:2932 */
   ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[8]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:2333 */
+  /* parser/parser_prod.nit:2933 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -12974,68 +16084,68 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2334 */
+    /* parser/parser_prod.nit:2934 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2334);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2934);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   }
-  /* parser/parser_prod.nit:2336 */
+  /* parser/parser_prod.nit:2936 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2336);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2936);
   }
   ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[8]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:2337 */
+  /* parser/parser_prod.nit:2937 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2337);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2937);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
-  /* parser/parser_prod.nit:2338 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
+  /* parser/parser_prod.nit:2938 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2338);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2938);
   }
   ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[8]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:2339 */
+  /* parser/parser_prod.nit:2939 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2339);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2939);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
-  /* parser/parser_prod.nit:2340 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+  /* parser/parser_prod.nit:2940 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2340);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2940);
   }
   ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[8]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:2341 */
+  /* parser/parser_prod.nit:2941 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2341);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2941);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
-  /* parser/parser_prod.nit:2342 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+  /* parser/parser_prod.nit:2942 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2342);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2942);
   }
   ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[8]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:2343 */
+  /* parser/parser_prod.nit:2943 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2343);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2943);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
-  /* parser/parser_prod.nit:2344 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+  /* parser/parser_prod.nit:2944 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[8]) = fra.me.REG[7];
-  /* parser/parser_prod.nit:2345 */
+  /* parser/parser_prod.nit:2945 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13050,18 +16160,18 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2346 */
+    /* parser/parser_prod.nit:2946 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2346);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2946);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos56] = 1;
+  init_table[itpos55] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATypePropdef___replace_child[] = "parser_prod::ATypePropdef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ATypePropdef___replace_child[] = "parser_prod::ATypePropdef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ATypePropdef___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;
@@ -13069,7 +16179,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2350;
+  fra.me.line = 2950;
   fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -13081,7 +16191,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2352 */
+  /* parser/parser_prod.nit:2952 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -13096,7 +16206,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2353 */
+    /* parser/parser_prod.nit:2953 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13111,28 +16221,28 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2354 */
+      /* parser/parser_prod.nit:2954 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2354);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2954);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2355 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2955 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2355);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2955);
       }
-      /* parser/parser_prod.nit:2356 */
+      /* parser/parser_prod.nit:2956 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2358 */
+      /* parser/parser_prod.nit:2958 */
       ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2360 */
+    /* parser/parser_prod.nit:2960 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2362 */
+  /* parser/parser_prod.nit:2962 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -13147,7 +16257,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2363 */
+    /* parser/parser_prod.nit:2963 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13162,32 +16272,32 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2364 */
+      /* parser/parser_prod.nit:2964 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2364);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2964);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2365 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2965 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2365);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2965);
       }
-      /* parser/parser_prod.nit:2366 */
+      /* parser/parser_prod.nit:2966 */
       ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2368 */
+      /* parser/parser_prod.nit:2968 */
       ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2370 */
+    /* parser/parser_prod.nit:2970 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2372 */
+  /* parser/parser_prod.nit:2972 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 2372);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 2972);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -13197,7 +16307,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2373 */
+    /* parser/parser_prod.nit:2973 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13212,32 +16322,32 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2374 */
+      /* parser/parser_prod.nit:2974 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2374);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2974);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2375 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2975 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2375);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2975);
       }
-      /* parser/parser_prod.nit:2376 */
+      /* parser/parser_prod.nit:2976 */
       ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2378 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2378);
+      /* parser/parser_prod.nit:2978 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2978);
     }
-    /* parser/parser_prod.nit:2380 */
+    /* parser/parser_prod.nit:2980 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2382 */
+  /* parser/parser_prod.nit:2982 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 2382);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 2982);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -13247,7 +16357,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2383 */
+    /* parser/parser_prod.nit:2983 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13262,32 +16372,32 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2384 */
+      /* parser/parser_prod.nit:2984 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2384);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2984);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2385 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2985 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast TKwtype*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2385);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2985);
       }
-      /* parser/parser_prod.nit:2386 */
+      /* parser/parser_prod.nit:2986 */
       ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2388 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2388);
+      /* parser/parser_prod.nit:2988 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2988);
     }
-    /* parser/parser_prod.nit:2390 */
+    /* parser/parser_prod.nit:2990 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2392 */
+  /* parser/parser_prod.nit:2992 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 2392);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 2992);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -13297,7 +16407,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2393 */
+    /* parser/parser_prod.nit:2993 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13312,32 +16422,32 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2394 */
+      /* parser/parser_prod.nit:2994 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2394);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2994);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2395 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:2995 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2395);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2995);
       }
-      /* parser/parser_prod.nit:2396 */
+      /* parser/parser_prod.nit:2996 */
       ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2398 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2398);
+      /* parser/parser_prod.nit:2998 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2998);
     }
-    /* parser/parser_prod.nit:2400 */
+    /* parser/parser_prod.nit:3000 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2402 */
+  /* parser/parser_prod.nit:3002 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 2402);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 3002);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -13347,7 +16457,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2403 */
+    /* parser/parser_prod.nit:3003 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13362,28 +16472,28 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2404 */
+      /* parser/parser_prod.nit:3004 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2404);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3004);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2405 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3005 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2405);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3005);
       }
-      /* parser/parser_prod.nit:2406 */
+      /* parser/parser_prod.nit:3006 */
       ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2408 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2408);
+      /* parser/parser_prod.nit:3008 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3008);
     }
-    /* parser/parser_prod.nit:2410 */
+    /* parser/parser_prod.nit:3010 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2412 */
+  /* parser/parser_prod.nit:3012 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -13398,7 +16508,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2413 */
+    /* parser/parser_prod.nit:3013 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13413,32 +16523,252 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2414 */
+      /* parser/parser_prod.nit:3014 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2414);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3014);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2415 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3015 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2415);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3015);
       }
-      /* parser/parser_prod.nit:2416 */
+      /* parser/parser_prod.nit:3016 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2418 */
+      /* parser/parser_prod.nit:3018 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2420 */
+    /* parser/parser_prod.nit:3020 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATypePropdef___visit_all[] = "parser_prod::ATypePropdef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_doc__eq[] = "parser_prod::ATypePropdef::(parser_nodes::APropdef::n_doc=)";
+void parser___parser_prod___ATypePropdef___n_doc__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3024;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_doc__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3026 */
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3027 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:3028 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3028);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_kwredef__eq[] = "parser_prod::ATypePropdef::(parser_nodes::ATypePropdef::n_kwredef=)";
+void parser___parser_prod___ATypePropdef___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3031;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3033 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3034 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:3035 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3035);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_visibility__eq[] = "parser_prod::ATypePropdef::(parser_nodes::ATypePropdef::n_visibility=)";
+void parser___parser_prod___ATypePropdef___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3038;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3040 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3041 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_kwtype__eq[] = "parser_prod::ATypePropdef::(parser_nodes::ATypePropdef::n_kwtype=)";
+void parser___parser_prod___ATypePropdef___n_kwtype__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3043;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_kwtype__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3045 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3046 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_id__eq[] = "parser_prod::ATypePropdef::(parser_nodes::ATypePropdef::n_id=)";
+void parser___parser_prod___ATypePropdef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3048;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3050 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3051 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_type__eq[] = "parser_prod::ATypePropdef::(parser_nodes::ATypePropdef::n_type=)";
+void parser___parser_prod___ATypePropdef___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3053;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3055 */
+  ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3056 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___n_annotations__eq[] = "parser_prod::ATypePropdef::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ATypePropdef___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3058;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3060 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3061 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:3062 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3062);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypePropdef___visit_all[] = "parser_prod::ATypePropdef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -13446,7 +16776,7 @@ void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2424;
+  fra.me.line = 3067;
   fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -13457,9 +16787,9 @@ void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2424 */
+  /* parser/parser_prod.nit:3067 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2426 */
+  /* parser/parser_prod.nit:3069 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -13475,16 +16805,16 @@ void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2427 */
+    /* parser/parser_prod.nit:3070 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast ADoc*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2427);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3070);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2429 */
+  /* parser/parser_prod.nit:3072 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -13500,48 +16830,48 @@ void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2430 */
+    /* parser/parser_prod.nit:3073 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2430);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3073);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2432 */
+  /* parser/parser_prod.nit:3075 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 2432);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_parser___parser_prod, 3075);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2433 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:3076 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 2433);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 3076);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2434 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:3077 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 2434);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3077);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2435 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:3078 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 2435);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 3078);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:2436 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:3079 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -13557,27 +16887,27 @@ void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2437 */
+    /* parser/parser_prod.nit:3080 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2437);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3080);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AReadAble___empty_init[] = "parser_prod::AReadAble::empty_init";
 void parser___parser_prod___AReadAble___empty_init(val_t p0, int* init_table){
-  int itpos57 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReadAble].i;
+  int itpos56 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReadAble].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos57]) return;
+  if (init_table[itpos56]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2442;
+  fra.me.line = 3085;
   fra.me.meth = LOCATE_parser___parser_prod___AReadAble___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -13585,20 +16915,20 @@ void parser___parser_prod___AReadAble___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos57] = 1;
+  init_table[itpos56] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AReadAble___init_areadable[] = "parser_prod::AReadAble::init_areadable";
 void parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos58 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReadAble].i;
+  int itpos57 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReadAble].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos58]) return;
+  if (init_table[itpos57]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2444;
+  fra.me.line = 3087;
   fra.me.meth = LOCATE_parser___parser_prod___AReadAble___init_areadable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -13610,13 +16940,13 @@ void parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2444 */
+  /* parser/parser_prod.nit:3087 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2449 */
+  /* parser/parser_prod.nit:3092 */
   CALL_parser___parser_prod___AReadAble___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:2450 */
+  /* parser/parser_prod.nit:3093 */
   ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2451 */
+  /* parser/parser_prod.nit:3094 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13631,31 +16961,31 @@ void parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2452 */
+    /* parser/parser_prod.nit:3095 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2452);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3095);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2454 */
+  /* parser/parser_prod.nit:3097 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2454);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3097);
   }
   ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:2455 */
+  /* parser/parser_prod.nit:3098 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2455);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3098);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos58] = 1;
+  init_table[itpos57] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AReadAble___replace_child[] = "parser_prod::AReadAble::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AReadAble___replace_child[] = "parser_prod::AReadAble::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AReadAble___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;
@@ -13663,7 +16993,7 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2458;
+  fra.me.line = 3101;
   fra.me.meth = LOCATE_parser___parser_prod___AReadAble___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -13675,7 +17005,7 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2460 */
+  /* parser/parser_prod.nit:3103 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -13690,7 +17020,7 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2461 */
+    /* parser/parser_prod.nit:3104 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13705,32 +17035,32 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2462 */
+      /* parser/parser_prod.nit:3105 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2462);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3105);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2463 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3106 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2463);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3106);
       }
-      /* parser/parser_prod.nit:2464 */
+      /* parser/parser_prod.nit:3107 */
       ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2466 */
+      /* parser/parser_prod.nit:3109 */
       ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2468 */
+    /* parser/parser_prod.nit:3111 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2470 */
+  /* parser/parser_prod.nit:3113 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser___parser_prod, 2470);
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser___parser_prod, 3113);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -13740,7 +17070,7 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2471 */
+    /* parser/parser_prod.nit:3114 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13755,32 +17085,98 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2472 */
+      /* parser/parser_prod.nit:3115 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2472);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3115);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2473 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3116 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast TKwreadable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2473);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3116);
       }
-      /* parser/parser_prod.nit:2474 */
+      /* parser/parser_prod.nit:3117 */
       ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2476 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2476);
+      /* parser/parser_prod.nit:3119 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3119);
     }
-    /* parser/parser_prod.nit:2478 */
+    /* parser/parser_prod.nit:3121 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AReadAble___visit_all[] = "parser_prod::AReadAble::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AReadAble___n_kwredef__eq[] = "parser_prod::AReadAble::(parser_nodes::AAble::n_kwredef=)";
+void parser___parser_prod___AReadAble___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3125;
+  fra.me.meth = LOCATE_parser___parser_prod___AReadAble___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3127 */
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3128 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:3129 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3129);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AReadAble___n_kwreadable__eq[] = "parser_prod::AReadAble::(parser_nodes::AReadAble::n_kwreadable=)";
+void parser___parser_prod___AReadAble___n_kwreadable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3132;
+  fra.me.meth = LOCATE_parser___parser_prod___AReadAble___n_kwreadable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3134 */
+  ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3135 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AReadAble___visit_all[] = "parser_prod::AReadAble::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -13788,7 +17184,7 @@ void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2482;
+  fra.me.line = 3139;
   fra.me.meth = LOCATE_parser___parser_prod___AReadAble___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -13799,9 +17195,9 @@ void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2482 */
+  /* parser/parser_prod.nit:3139 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2484 */
+  /* parser/parser_prod.nit:3141 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -13817,35 +17213,35 @@ void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2485 */
+    /* parser/parser_prod.nit:3142 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2485);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3142);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2487 */
+  /* parser/parser_prod.nit:3144 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser___parser_prod, 2487);
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_parser___parser_prod, 3144);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AWriteAble___empty_init[] = "parser_prod::AWriteAble::empty_init";
 void parser___parser_prod___AWriteAble___empty_init(val_t p0, int* init_table){
-  int itpos59 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWriteAble].i;
+  int itpos58 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWriteAble].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos59]) return;
+  if (init_table[itpos58]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2491;
+  fra.me.line = 3148;
   fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -13853,20 +17249,20 @@ void parser___parser_prod___AWriteAble___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos59] = 1;
+  init_table[itpos58] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AWriteAble___init_awriteable[] = "parser_prod::AWriteAble::init_awriteable";
 void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos60 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWriteAble].i;
+  int itpos59 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWriteAble].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos60]) return;
+  if (init_table[itpos59]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2493;
+  fra.me.line = 3150;
   fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___init_awriteable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -13880,13 +17276,13 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:2493 */
+  /* parser/parser_prod.nit:3150 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2499 */
+  /* parser/parser_prod.nit:3156 */
   CALL_parser___parser_prod___AWriteAble___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:2500 */
+  /* parser/parser_prod.nit:3157 */
   ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2501 */
+  /* parser/parser_prod.nit:3158 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13901,16 +17297,16 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2502 */
+    /* parser/parser_prod.nit:3159 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2502);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3159);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:2504 */
+  /* parser/parser_prod.nit:3161 */
   ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:2505 */
+  /* parser/parser_prod.nit:3162 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -13925,31 +17321,31 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2506 */
+    /* parser/parser_prod.nit:3163 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2506);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3163);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:2508 */
+  /* parser/parser_prod.nit:3165 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2508);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3165);
   }
   ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:2509 */
+  /* parser/parser_prod.nit:3166 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2509);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3166);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos60] = 1;
+  init_table[itpos59] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AWriteAble___replace_child[] = "parser_prod::AWriteAble::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AWriteAble___replace_child[] = "parser_prod::AWriteAble::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AWriteAble___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;
@@ -13957,7 +17353,7 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2512;
+  fra.me.line = 3169;
   fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -13969,7 +17365,7 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2514 */
+  /* parser/parser_prod.nit:3171 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -13984,7 +17380,7 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2515 */
+    /* parser/parser_prod.nit:3172 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -13999,28 +17395,28 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2516 */
+      /* parser/parser_prod.nit:3173 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2516);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3173);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2517 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3174 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2517);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3174);
       }
-      /* parser/parser_prod.nit:2518 */
+      /* parser/parser_prod.nit:3175 */
       ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2520 */
+      /* parser/parser_prod.nit:3177 */
       ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2522 */
+    /* parser/parser_prod.nit:3179 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2524 */
+  /* parser/parser_prod.nit:3181 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -14035,7 +17431,7 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2525 */
+    /* parser/parser_prod.nit:3182 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14050,32 +17446,32 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2526 */
+      /* parser/parser_prod.nit:3183 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2526);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3183);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2527 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3184 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2527);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3184);
       }
-      /* parser/parser_prod.nit:2528 */
+      /* parser/parser_prod.nit:3185 */
       ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2530 */
+      /* parser/parser_prod.nit:3187 */
       ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:2532 */
+    /* parser/parser_prod.nit:3189 */
     goto label1;
   }
-  /* parser/parser_prod.nit:2534 */
+  /* parser/parser_prod.nit:3191 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser___parser_prod, 2534);
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser___parser_prod, 3191);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -14085,7 +17481,7 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2535 */
+    /* parser/parser_prod.nit:3192 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14100,32 +17496,142 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2536 */
+      /* parser/parser_prod.nit:3193 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2536);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3193);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2537 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3194 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast TKwwritable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2537);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3194);
       }
-      /* parser/parser_prod.nit:2538 */
+      /* parser/parser_prod.nit:3195 */
       ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2540 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2540);
+      /* parser/parser_prod.nit:3197 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3197);
     }
-    /* parser/parser_prod.nit:2542 */
+    /* parser/parser_prod.nit:3199 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AWriteAble___visit_all[] = "parser_prod::AWriteAble::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AWriteAble___n_kwredef__eq[] = "parser_prod::AWriteAble::(parser_nodes::AAble::n_kwredef=)";
+void parser___parser_prod___AWriteAble___n_kwredef__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3203;
+  fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___n_kwredef__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3205 */
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3206 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:3207 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3207);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWriteAble___n_visibility__eq[] = "parser_prod::AWriteAble::(parser_nodes::AAble::n_visibility=)";
+void parser___parser_prod___AWriteAble___n_visibility__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3210;
+  fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___n_visibility__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3212 */
+  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3213 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:3214 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3214);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWriteAble___n_kwwritable__eq[] = "parser_prod::AWriteAble::(parser_nodes::AWriteAble::n_kwwritable=)";
+void parser___parser_prod___AWriteAble___n_kwwritable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3217;
+  fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___n_kwwritable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3219 */
+  ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3220 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWriteAble___visit_all[] = "parser_prod::AWriteAble::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -14133,7 +17639,7 @@ void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2546;
+  fra.me.line = 3224;
   fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14144,9 +17650,9 @@ void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2546 */
+  /* parser/parser_prod.nit:3224 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2548 */
+  /* parser/parser_prod.nit:3226 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -14162,16 +17668,16 @@ void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2549 */
+    /* parser/parser_prod.nit:3227 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast TKwredef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2549);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3227);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2551 */
+  /* parser/parser_prod.nit:3229 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -14187,35 +17693,35 @@ void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2552 */
+    /* parser/parser_prod.nit:3230 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast AVisibility*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2552);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3230);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:2554 */
+  /* parser/parser_prod.nit:3232 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser___parser_prod, 2554);
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_parser___parser_prod, 3232);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIdMethid___empty_init[] = "parser_prod::AIdMethid::empty_init";
 void parser___parser_prod___AIdMethid___empty_init(val_t p0, int* init_table){
-  int itpos61 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdMethid].i;
+  int itpos60 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos61]) return;
+  if (init_table[itpos60]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2558;
+  fra.me.line = 3236;
   fra.me.meth = LOCATE_parser___parser_prod___AIdMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -14223,19 +17729,19 @@ void parser___parser_prod___AIdMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos61] = 1;
+  init_table[itpos60] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIdMethid___init_aidmethid[] = "parser_prod::AIdMethid::init_aidmethid";
 void parser___parser_prod___AIdMethid___init_aidmethid(val_t p0, val_t p1, int* init_table){
-  int itpos62 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdMethid].i;
+  int itpos61 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos62]) return;
+  if (init_table[itpos61]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2560;
+  fra.me.line = 3238;
   fra.me.meth = LOCATE_parser___parser_prod___AIdMethid___init_aidmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14245,28 +17751,28 @@ void parser___parser_prod___AIdMethid___init_aidmethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2560 */
+  /* parser/parser_prod.nit:3238 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2564 */
+  /* parser/parser_prod.nit:3242 */
   CALL_parser___parser_prod___AIdMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2565 */
+  /* parser/parser_prod.nit:3243 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2565);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3243);
   }
   ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2566 */
+  /* parser/parser_prod.nit:3244 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2566);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3244);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos62] = 1;
+  init_table[itpos61] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIdMethid___replace_child[] = "parser_prod::AIdMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIdMethid___replace_child[] = "parser_prod::AIdMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIdMethid___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;
@@ -14274,7 +17780,7 @@ void parser___parser_prod___AIdMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2569;
+  fra.me.line = 3247;
   fra.me.meth = LOCATE_parser___parser_prod___AIdMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14286,11 +17792,11 @@ void parser___parser_prod___AIdMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2571 */
+  /* parser/parser_prod.nit:3249 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 2571);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3249);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -14300,7 +17806,7 @@ void parser___parser_prod___AIdMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2572 */
+    /* parser/parser_prod.nit:3250 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14315,39 +17821,61 @@ void parser___parser_prod___AIdMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2573 */
+      /* parser/parser_prod.nit:3251 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2573);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3251);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2574 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3252 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2574);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3252);
       }
-      /* parser/parser_prod.nit:2575 */
+      /* parser/parser_prod.nit:3253 */
       ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2577 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2577);
+      /* parser/parser_prod.nit:3255 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3255);
     }
-    /* parser/parser_prod.nit:2579 */
+    /* parser/parser_prod.nit:3257 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIdMethid___visit_all[] = "parser_prod::AIdMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIdMethid___n_id__eq[] = "parser_prod::AIdMethid::(parser_nodes::AIdMethid::n_id=)";
+void parser___parser_prod___AIdMethid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3261;
+  fra.me.meth = LOCATE_parser___parser_prod___AIdMethid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3263 */
+  ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3264 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIdMethid___visit_all[] = "parser_prod::AIdMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIdMethid___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___parser_prod;
-  fra.me.line = 2583;
+  fra.me.line = 3268;
   fra.me.meth = LOCATE_parser___parser_prod___AIdMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14356,26 +17884,26 @@ void parser___parser_prod___AIdMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2585 */
+  /* parser/parser_prod.nit:3270 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 2585);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3270);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___APlusMethid___empty_init[] = "parser_prod::APlusMethid::empty_init";
 void parser___parser_prod___APlusMethid___empty_init(val_t p0, int* init_table){
-  int itpos63 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusMethid].i;
+  int itpos62 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos63]) return;
+  if (init_table[itpos62]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2589;
+  fra.me.line = 3274;
   fra.me.meth = LOCATE_parser___parser_prod___APlusMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -14383,19 +17911,19 @@ void parser___parser_prod___APlusMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos63] = 1;
+  init_table[itpos62] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APlusMethid___init_aplusmethid[] = "parser_prod::APlusMethid::init_aplusmethid";
 void parser___parser_prod___APlusMethid___init_aplusmethid(val_t p0, val_t p1, int* init_table){
-  int itpos64 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusMethid].i;
+  int itpos63 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos64]) return;
+  if (init_table[itpos63]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2591;
+  fra.me.line = 3276;
   fra.me.meth = LOCATE_parser___parser_prod___APlusMethid___init_aplusmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14405,28 +17933,28 @@ void parser___parser_prod___APlusMethid___init_aplusmethid(val_t p0, val_t p1, i
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2591 */
+  /* parser/parser_prod.nit:3276 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2595 */
+  /* parser/parser_prod.nit:3280 */
   CALL_parser___parser_prod___APlusMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2596 */
+  /* parser/parser_prod.nit:3281 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2596);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3281);
   }
   ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2597 */
+  /* parser/parser_prod.nit:3282 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2597);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3282);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos64] = 1;
+  init_table[itpos63] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APlusMethid___replace_child[] = "parser_prod::APlusMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APlusMethid___replace_child[] = "parser_prod::APlusMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APlusMethid___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;
@@ -14434,7 +17962,7 @@ void parser___parser_prod___APlusMethid___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2600;
+  fra.me.line = 3285;
   fra.me.meth = LOCATE_parser___parser_prod___APlusMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14446,11 +17974,11 @@ void parser___parser_prod___APlusMethid___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2602 */
+  /* parser/parser_prod.nit:3287 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser___parser_prod, 2602);
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser___parser_prod, 3287);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -14460,7 +17988,7 @@ void parser___parser_prod___APlusMethid___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2603 */
+    /* parser/parser_prod.nit:3288 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14475,39 +18003,61 @@ void parser___parser_prod___APlusMethid___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2604 */
+      /* parser/parser_prod.nit:3289 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2604);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3289);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2605 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3290 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TPlus, ID_parser___parser_nodes___TPlus)) /*cast TPlus*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2605);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3290);
       }
-      /* parser/parser_prod.nit:2606 */
+      /* parser/parser_prod.nit:3291 */
       ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2608 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2608);
+      /* parser/parser_prod.nit:3293 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3293);
     }
-    /* parser/parser_prod.nit:2610 */
+    /* parser/parser_prod.nit:3295 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APlusMethid___visit_all[] = "parser_prod::APlusMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APlusMethid___n_plus__eq[] = "parser_prod::APlusMethid::(parser_nodes::APlusMethid::n_plus=)";
+void parser___parser_prod___APlusMethid___n_plus__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3299;
+  fra.me.meth = LOCATE_parser___parser_prod___APlusMethid___n_plus__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3301 */
+  ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3302 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APlusMethid___visit_all[] = "parser_prod::APlusMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APlusMethid___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___parser_prod;
-  fra.me.line = 2614;
+  fra.me.line = 3306;
   fra.me.meth = LOCATE_parser___parser_prod___APlusMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14516,26 +18066,26 @@ void parser___parser_prod___APlusMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2616 */
+  /* parser/parser_prod.nit:3308 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser___parser_prod, 2616);
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_parser___parser_prod, 3308);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMinusMethid___empty_init[] = "parser_prod::AMinusMethid::empty_init";
 void parser___parser_prod___AMinusMethid___empty_init(val_t p0, int* init_table){
-  int itpos65 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusMethid].i;
+  int itpos64 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos65]) return;
+  if (init_table[itpos64]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2620;
+  fra.me.line = 3312;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -14543,19 +18093,19 @@ void parser___parser_prod___AMinusMethid___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos65] = 1;
+  init_table[itpos64] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMinusMethid___init_aminusmethid[] = "parser_prod::AMinusMethid::init_aminusmethid";
 void parser___parser_prod___AMinusMethid___init_aminusmethid(val_t p0, val_t p1, int* init_table){
-  int itpos66 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusMethid].i;
+  int itpos65 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos66]) return;
+  if (init_table[itpos65]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2622;
+  fra.me.line = 3314;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusMethid___init_aminusmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14565,28 +18115,28 @@ void parser___parser_prod___AMinusMethid___init_aminusmethid(val_t p0, val_t p1,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2622 */
+  /* parser/parser_prod.nit:3314 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2626 */
+  /* parser/parser_prod.nit:3318 */
   CALL_parser___parser_prod___AMinusMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2627 */
+  /* parser/parser_prod.nit:3319 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2627);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3319);
   }
   ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2628 */
+  /* parser/parser_prod.nit:3320 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2628);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3320);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos66] = 1;
+  init_table[itpos65] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMinusMethid___replace_child[] = "parser_prod::AMinusMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMinusMethid___replace_child[] = "parser_prod::AMinusMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMinusMethid___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;
@@ -14594,7 +18144,7 @@ void parser___parser_prod___AMinusMethid___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2631;
+  fra.me.line = 3323;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14606,11 +18156,11 @@ void parser___parser_prod___AMinusMethid___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2633 */
+  /* parser/parser_prod.nit:3325 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 2633);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 3325);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -14620,7 +18170,7 @@ void parser___parser_prod___AMinusMethid___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2634 */
+    /* parser/parser_prod.nit:3326 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14635,39 +18185,61 @@ void parser___parser_prod___AMinusMethid___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2635 */
+      /* parser/parser_prod.nit:3327 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2635);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3327);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2636 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3328 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast TMinus*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2636);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3328);
       }
-      /* parser/parser_prod.nit:2637 */
+      /* parser/parser_prod.nit:3329 */
       ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2639 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2639);
+      /* parser/parser_prod.nit:3331 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3331);
     }
-    /* parser/parser_prod.nit:2641 */
+    /* parser/parser_prod.nit:3333 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMinusMethid___visit_all[] = "parser_prod::AMinusMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMinusMethid___n_minus__eq[] = "parser_prod::AMinusMethid::(parser_nodes::AMinusMethid::n_minus=)";
+void parser___parser_prod___AMinusMethid___n_minus__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3337;
+  fra.me.meth = LOCATE_parser___parser_prod___AMinusMethid___n_minus__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3339 */
+  ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3340 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMinusMethid___visit_all[] = "parser_prod::AMinusMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMinusMethid___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___parser_prod;
-  fra.me.line = 2645;
+  fra.me.line = 3344;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14676,26 +18248,26 @@ void parser___parser_prod___AMinusMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2647 */
+  /* parser/parser_prod.nit:3346 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 2647);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 3346);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarMethid___empty_init[] = "parser_prod::AStarMethid::empty_init";
 void parser___parser_prod___AStarMethid___empty_init(val_t p0, int* init_table){
-  int itpos67 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarMethid].i;
+  int itpos66 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos67]) return;
+  if (init_table[itpos66]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2651;
+  fra.me.line = 3350;
   fra.me.meth = LOCATE_parser___parser_prod___AStarMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -14703,19 +18275,19 @@ void parser___parser_prod___AStarMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos67] = 1;
+  init_table[itpos66] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarMethid___init_astarmethid[] = "parser_prod::AStarMethid::init_astarmethid";
 void parser___parser_prod___AStarMethid___init_astarmethid(val_t p0, val_t p1, int* init_table){
-  int itpos68 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarMethid].i;
+  int itpos67 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos68]) return;
+  if (init_table[itpos67]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2653;
+  fra.me.line = 3352;
   fra.me.meth = LOCATE_parser___parser_prod___AStarMethid___init_astarmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14725,28 +18297,28 @@ void parser___parser_prod___AStarMethid___init_astarmethid(val_t p0, val_t p1, i
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2653 */
+  /* parser/parser_prod.nit:3352 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2657 */
+  /* parser/parser_prod.nit:3356 */
   CALL_parser___parser_prod___AStarMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2658 */
+  /* parser/parser_prod.nit:3357 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2658);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3357);
   }
   ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2659 */
+  /* parser/parser_prod.nit:3358 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2659);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3358);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos68] = 1;
+  init_table[itpos67] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarMethid___replace_child[] = "parser_prod::AStarMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStarMethid___replace_child[] = "parser_prod::AStarMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStarMethid___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;
@@ -14754,7 +18326,7 @@ void parser___parser_prod___AStarMethid___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2662;
+  fra.me.line = 3361;
   fra.me.meth = LOCATE_parser___parser_prod___AStarMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14766,11 +18338,11 @@ void parser___parser_prod___AStarMethid___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2664 */
+  /* parser/parser_prod.nit:3363 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser___parser_prod, 2664);
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser___parser_prod, 3363);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -14780,7 +18352,7 @@ void parser___parser_prod___AStarMethid___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2665 */
+    /* parser/parser_prod.nit:3364 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14795,39 +18367,61 @@ void parser___parser_prod___AStarMethid___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2666 */
+      /* parser/parser_prod.nit:3365 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2666);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3365);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2667 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3366 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TStar, ID_parser___parser_nodes___TStar)) /*cast TStar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2667);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3366);
       }
-      /* parser/parser_prod.nit:2668 */
+      /* parser/parser_prod.nit:3367 */
       ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2670 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2670);
+      /* parser/parser_prod.nit:3369 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3369);
     }
-    /* parser/parser_prod.nit:2672 */
+    /* parser/parser_prod.nit:3371 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarMethid___visit_all[] = "parser_prod::AStarMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStarMethid___n_star__eq[] = "parser_prod::AStarMethid::(parser_nodes::AStarMethid::n_star=)";
+void parser___parser_prod___AStarMethid___n_star__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3375;
+  fra.me.meth = LOCATE_parser___parser_prod___AStarMethid___n_star__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3377 */
+  ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3378 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStarMethid___visit_all[] = "parser_prod::AStarMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStarMethid___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___parser_prod;
-  fra.me.line = 2676;
+  fra.me.line = 3382;
   fra.me.meth = LOCATE_parser___parser_prod___AStarMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14836,26 +18430,26 @@ void parser___parser_prod___AStarMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2678 */
+  /* parser/parser_prod.nit:3384 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser___parser_prod, 2678);
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_parser___parser_prod, 3384);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASlashMethid___empty_init[] = "parser_prod::ASlashMethid::empty_init";
 void parser___parser_prod___ASlashMethid___empty_init(val_t p0, int* init_table){
-  int itpos69 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashMethid].i;
+  int itpos68 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos69]) return;
+  if (init_table[itpos68]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2682;
+  fra.me.line = 3388;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -14863,19 +18457,19 @@ void parser___parser_prod___ASlashMethid___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos69] = 1;
+  init_table[itpos68] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASlashMethid___init_aslashmethid[] = "parser_prod::ASlashMethid::init_aslashmethid";
 void parser___parser_prod___ASlashMethid___init_aslashmethid(val_t p0, val_t p1, int* init_table){
-  int itpos70 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashMethid].i;
+  int itpos69 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos70]) return;
+  if (init_table[itpos69]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2684;
+  fra.me.line = 3390;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashMethid___init_aslashmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14885,28 +18479,28 @@ void parser___parser_prod___ASlashMethid___init_aslashmethid(val_t p0, val_t p1,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2684 */
+  /* parser/parser_prod.nit:3390 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2688 */
+  /* parser/parser_prod.nit:3394 */
   CALL_parser___parser_prod___ASlashMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2689 */
+  /* parser/parser_prod.nit:3395 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2689);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3395);
   }
   ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2690 */
+  /* parser/parser_prod.nit:3396 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2690);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3396);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos70] = 1;
+  init_table[itpos69] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASlashMethid___replace_child[] = "parser_prod::ASlashMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASlashMethid___replace_child[] = "parser_prod::ASlashMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASlashMethid___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;
@@ -14914,7 +18508,7 @@ void parser___parser_prod___ASlashMethid___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2693;
+  fra.me.line = 3399;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14926,11 +18520,11 @@ void parser___parser_prod___ASlashMethid___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2695 */
+  /* parser/parser_prod.nit:3401 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser___parser_prod, 2695);
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser___parser_prod, 3401);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -14940,7 +18534,7 @@ void parser___parser_prod___ASlashMethid___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2696 */
+    /* parser/parser_prod.nit:3402 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -14955,39 +18549,61 @@ void parser___parser_prod___ASlashMethid___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2697 */
+      /* parser/parser_prod.nit:3403 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2697);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3403);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2698 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3404 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TSlash, ID_parser___parser_nodes___TSlash)) /*cast TSlash*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2698);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3404);
       }
-      /* parser/parser_prod.nit:2699 */
+      /* parser/parser_prod.nit:3405 */
       ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2701 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2701);
+      /* parser/parser_prod.nit:3407 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3407);
     }
-    /* parser/parser_prod.nit:2703 */
+    /* parser/parser_prod.nit:3409 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASlashMethid___visit_all[] = "parser_prod::ASlashMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASlashMethid___n_slash__eq[] = "parser_prod::ASlashMethid::(parser_nodes::ASlashMethid::n_slash=)";
+void parser___parser_prod___ASlashMethid___n_slash__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3413;
+  fra.me.meth = LOCATE_parser___parser_prod___ASlashMethid___n_slash__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3415 */
+  ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3416 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASlashMethid___visit_all[] = "parser_prod::ASlashMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASlashMethid___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___parser_prod;
-  fra.me.line = 2707;
+  fra.me.line = 3420;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14996,26 +18612,26 @@ void parser___parser_prod___ASlashMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2709 */
+  /* parser/parser_prod.nit:3422 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser___parser_prod, 2709);
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_parser___parser_prod, 3422);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___APercentMethid___empty_init[] = "parser_prod::APercentMethid::empty_init";
 void parser___parser_prod___APercentMethid___empty_init(val_t p0, int* init_table){
-  int itpos71 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentMethid].i;
+  int itpos70 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos71]) return;
+  if (init_table[itpos70]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2713;
+  fra.me.line = 3426;
   fra.me.meth = LOCATE_parser___parser_prod___APercentMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15023,19 +18639,19 @@ void parser___parser_prod___APercentMethid___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos71] = 1;
+  init_table[itpos70] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APercentMethid___init_apercentmethid[] = "parser_prod::APercentMethid::init_apercentmethid";
 void parser___parser_prod___APercentMethid___init_apercentmethid(val_t p0, val_t p1, int* init_table){
-  int itpos72 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentMethid].i;
+  int itpos71 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos72]) return;
+  if (init_table[itpos71]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2715;
+  fra.me.line = 3428;
   fra.me.meth = LOCATE_parser___parser_prod___APercentMethid___init_apercentmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -15045,28 +18661,28 @@ void parser___parser_prod___APercentMethid___init_apercentmethid(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2715 */
+  /* parser/parser_prod.nit:3428 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2719 */
+  /* parser/parser_prod.nit:3432 */
   CALL_parser___parser_prod___APercentMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2720 */
+  /* parser/parser_prod.nit:3433 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2720);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3433);
   }
   ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2721 */
+  /* parser/parser_prod.nit:3434 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2721);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3434);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos72] = 1;
+  init_table[itpos71] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APercentMethid___replace_child[] = "parser_prod::APercentMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APercentMethid___replace_child[] = "parser_prod::APercentMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APercentMethid___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;
@@ -15074,7 +18690,7 @@ void parser___parser_prod___APercentMethid___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2724;
+  fra.me.line = 3437;
   fra.me.meth = LOCATE_parser___parser_prod___APercentMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15086,11 +18702,11 @@ void parser___parser_prod___APercentMethid___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2726 */
+  /* parser/parser_prod.nit:3439 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser___parser_prod, 2726);
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser___parser_prod, 3439);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -15100,7 +18716,7 @@ void parser___parser_prod___APercentMethid___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2727 */
+    /* parser/parser_prod.nit:3440 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -15115,39 +18731,61 @@ void parser___parser_prod___APercentMethid___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2728 */
+      /* parser/parser_prod.nit:3441 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2728);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3441);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2729 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3442 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TPercent, ID_parser___parser_nodes___TPercent)) /*cast TPercent*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2729);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3442);
       }
-      /* parser/parser_prod.nit:2730 */
+      /* parser/parser_prod.nit:3443 */
       ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2732 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2732);
+      /* parser/parser_prod.nit:3445 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3445);
     }
-    /* parser/parser_prod.nit:2734 */
+    /* parser/parser_prod.nit:3447 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APercentMethid___visit_all[] = "parser_prod::APercentMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APercentMethid___n_percent__eq[] = "parser_prod::APercentMethid::(parser_nodes::APercentMethid::n_percent=)";
+void parser___parser_prod___APercentMethid___n_percent__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3451;
+  fra.me.meth = LOCATE_parser___parser_prod___APercentMethid___n_percent__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3453 */
+  ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3454 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APercentMethid___visit_all[] = "parser_prod::APercentMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APercentMethid___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___parser_prod;
-  fra.me.line = 2738;
+  fra.me.line = 3458;
   fra.me.meth = LOCATE_parser___parser_prod___APercentMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15156,26 +18794,26 @@ void parser___parser_prod___APercentMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2740 */
+  /* parser/parser_prod.nit:3460 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser___parser_prod, 2740);
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_parser___parser_prod, 3460);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEqMethid___empty_init[] = "parser_prod::AEqMethid::empty_init";
 void parser___parser_prod___AEqMethid___empty_init(val_t p0, int* init_table){
-  int itpos73 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqMethid].i;
+  int itpos72 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos73]) return;
+  if (init_table[itpos72]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2744;
+  fra.me.line = 3464;
   fra.me.meth = LOCATE_parser___parser_prod___AEqMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15183,19 +18821,19 @@ void parser___parser_prod___AEqMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos73] = 1;
+  init_table[itpos72] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEqMethid___init_aeqmethid[] = "parser_prod::AEqMethid::init_aeqmethid";
 void parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0, val_t p1, int* init_table){
-  int itpos74 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqMethid].i;
+  int itpos73 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos74]) return;
+  if (init_table[itpos73]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2746;
+  fra.me.line = 3466;
   fra.me.meth = LOCATE_parser___parser_prod___AEqMethid___init_aeqmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -15205,28 +18843,28 @@ void parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2746 */
+  /* parser/parser_prod.nit:3466 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2750 */
+  /* parser/parser_prod.nit:3470 */
   CALL_parser___parser_prod___AEqMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2751 */
+  /* parser/parser_prod.nit:3471 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2751);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3471);
   }
   ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2752 */
+  /* parser/parser_prod.nit:3472 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2752);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3472);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos74] = 1;
+  init_table[itpos73] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEqMethid___replace_child[] = "parser_prod::AEqMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AEqMethid___replace_child[] = "parser_prod::AEqMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AEqMethid___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;
@@ -15234,7 +18872,7 @@ void parser___parser_prod___AEqMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2755;
+  fra.me.line = 3475;
   fra.me.meth = LOCATE_parser___parser_prod___AEqMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15246,11 +18884,11 @@ void parser___parser_prod___AEqMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2757 */
+  /* parser/parser_prod.nit:3477 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser___parser_prod, 2757);
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser___parser_prod, 3477);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -15260,7 +18898,7 @@ void parser___parser_prod___AEqMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2758 */
+    /* parser/parser_prod.nit:3478 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -15275,39 +18913,61 @@ void parser___parser_prod___AEqMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2759 */
+      /* parser/parser_prod.nit:3479 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2759);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3479);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2760 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3480 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TEq, ID_parser___parser_nodes___TEq)) /*cast TEq*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2760);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3480);
       }
-      /* parser/parser_prod.nit:2761 */
+      /* parser/parser_prod.nit:3481 */
       ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2763 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2763);
+      /* parser/parser_prod.nit:3483 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3483);
     }
-    /* parser/parser_prod.nit:2765 */
+    /* parser/parser_prod.nit:3485 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEqMethid___visit_all[] = "parser_prod::AEqMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AEqMethid___n_eq__eq[] = "parser_prod::AEqMethid::(parser_nodes::AEqMethid::n_eq=)";
+void parser___parser_prod___AEqMethid___n_eq__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3489;
+  fra.me.meth = LOCATE_parser___parser_prod___AEqMethid___n_eq__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3491 */
+  ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3492 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEqMethid___visit_all[] = "parser_prod::AEqMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AEqMethid___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___parser_prod;
-  fra.me.line = 2769;
+  fra.me.line = 3496;
   fra.me.meth = LOCATE_parser___parser_prod___AEqMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15316,26 +18976,26 @@ void parser___parser_prod___AEqMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2771 */
+  /* parser/parser_prod.nit:3498 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser___parser_prod, 2771);
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_parser___parser_prod, 3498);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANeMethid___empty_init[] = "parser_prod::ANeMethid::empty_init";
 void parser___parser_prod___ANeMethid___empty_init(val_t p0, int* init_table){
-  int itpos75 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeMethid].i;
+  int itpos74 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos75]) return;
+  if (init_table[itpos74]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2775;
+  fra.me.line = 3502;
   fra.me.meth = LOCATE_parser___parser_prod___ANeMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15343,19 +19003,19 @@ void parser___parser_prod___ANeMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos75] = 1;
+  init_table[itpos74] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANeMethid___init_anemethid[] = "parser_prod::ANeMethid::init_anemethid";
 void parser___parser_prod___ANeMethid___init_anemethid(val_t p0, val_t p1, int* init_table){
-  int itpos76 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeMethid].i;
+  int itpos75 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos76]) return;
+  if (init_table[itpos75]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2777;
+  fra.me.line = 3504;
   fra.me.meth = LOCATE_parser___parser_prod___ANeMethid___init_anemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -15365,28 +19025,28 @@ void parser___parser_prod___ANeMethid___init_anemethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2777 */
+  /* parser/parser_prod.nit:3504 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2781 */
+  /* parser/parser_prod.nit:3508 */
   CALL_parser___parser_prod___ANeMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2782 */
+  /* parser/parser_prod.nit:3509 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2782);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3509);
   }
   ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2783 */
+  /* parser/parser_prod.nit:3510 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2783);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3510);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos76] = 1;
+  init_table[itpos75] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANeMethid___replace_child[] = "parser_prod::ANeMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ANeMethid___replace_child[] = "parser_prod::ANeMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ANeMethid___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;
@@ -15394,7 +19054,7 @@ void parser___parser_prod___ANeMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2786;
+  fra.me.line = 3513;
   fra.me.meth = LOCATE_parser___parser_prod___ANeMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15406,11 +19066,11 @@ void parser___parser_prod___ANeMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2788 */
+  /* parser/parser_prod.nit:3515 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser___parser_prod, 2788);
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser___parser_prod, 3515);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -15420,7 +19080,7 @@ void parser___parser_prod___ANeMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2789 */
+    /* parser/parser_prod.nit:3516 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -15435,39 +19095,61 @@ void parser___parser_prod___ANeMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2790 */
+      /* parser/parser_prod.nit:3517 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2790);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3517);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2791 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3518 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TNe, ID_parser___parser_nodes___TNe)) /*cast TNe*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2791);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3518);
       }
-      /* parser/parser_prod.nit:2792 */
+      /* parser/parser_prod.nit:3519 */
       ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2794 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2794);
+      /* parser/parser_prod.nit:3521 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3521);
     }
-    /* parser/parser_prod.nit:2796 */
+    /* parser/parser_prod.nit:3523 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANeMethid___visit_all[] = "parser_prod::ANeMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ANeMethid___n_ne__eq[] = "parser_prod::ANeMethid::(parser_nodes::ANeMethid::n_ne=)";
+void parser___parser_prod___ANeMethid___n_ne__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3527;
+  fra.me.meth = LOCATE_parser___parser_prod___ANeMethid___n_ne__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3529 */
+  ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3530 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANeMethid___visit_all[] = "parser_prod::ANeMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ANeMethid___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___parser_prod;
-  fra.me.line = 2800;
+  fra.me.line = 3534;
   fra.me.meth = LOCATE_parser___parser_prod___ANeMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15476,26 +19158,26 @@ void parser___parser_prod___ANeMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2802 */
+  /* parser/parser_prod.nit:3536 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser___parser_prod, 2802);
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_parser___parser_prod, 3536);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALeMethid___empty_init[] = "parser_prod::ALeMethid::empty_init";
 void parser___parser_prod___ALeMethid___empty_init(val_t p0, int* init_table){
-  int itpos77 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeMethid].i;
+  int itpos76 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos77]) return;
+  if (init_table[itpos76]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2806;
+  fra.me.line = 3540;
   fra.me.meth = LOCATE_parser___parser_prod___ALeMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15503,19 +19185,19 @@ void parser___parser_prod___ALeMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos77] = 1;
+  init_table[itpos76] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALeMethid___init_alemethid[] = "parser_prod::ALeMethid::init_alemethid";
 void parser___parser_prod___ALeMethid___init_alemethid(val_t p0, val_t p1, int* init_table){
-  int itpos78 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeMethid].i;
+  int itpos77 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos78]) return;
+  if (init_table[itpos77]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2808;
+  fra.me.line = 3542;
   fra.me.meth = LOCATE_parser___parser_prod___ALeMethid___init_alemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -15525,28 +19207,28 @@ void parser___parser_prod___ALeMethid___init_alemethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2808 */
+  /* parser/parser_prod.nit:3542 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2812 */
+  /* parser/parser_prod.nit:3546 */
   CALL_parser___parser_prod___ALeMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2813 */
+  /* parser/parser_prod.nit:3547 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2813);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3547);
   }
   ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2814 */
+  /* parser/parser_prod.nit:3548 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2814);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3548);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos78] = 1;
+  init_table[itpos77] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALeMethid___replace_child[] = "parser_prod::ALeMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALeMethid___replace_child[] = "parser_prod::ALeMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALeMethid___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;
@@ -15554,7 +19236,7 @@ void parser___parser_prod___ALeMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2817;
+  fra.me.line = 3551;
   fra.me.meth = LOCATE_parser___parser_prod___ALeMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15566,11 +19248,11 @@ void parser___parser_prod___ALeMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2819 */
+  /* parser/parser_prod.nit:3553 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser___parser_prod, 2819);
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser___parser_prod, 3553);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -15580,7 +19262,7 @@ void parser___parser_prod___ALeMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2820 */
+    /* parser/parser_prod.nit:3554 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -15595,39 +19277,61 @@ void parser___parser_prod___ALeMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2821 */
+      /* parser/parser_prod.nit:3555 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2821);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3555);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2822 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3556 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TLe, ID_parser___parser_nodes___TLe)) /*cast TLe*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2822);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3556);
       }
-      /* parser/parser_prod.nit:2823 */
+      /* parser/parser_prod.nit:3557 */
       ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2825 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2825);
+      /* parser/parser_prod.nit:3559 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3559);
     }
-    /* parser/parser_prod.nit:2827 */
+    /* parser/parser_prod.nit:3561 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALeMethid___visit_all[] = "parser_prod::ALeMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALeMethid___n_le__eq[] = "parser_prod::ALeMethid::(parser_nodes::ALeMethid::n_le=)";
+void parser___parser_prod___ALeMethid___n_le__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3565;
+  fra.me.meth = LOCATE_parser___parser_prod___ALeMethid___n_le__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3567 */
+  ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3568 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALeMethid___visit_all[] = "parser_prod::ALeMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALeMethid___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___parser_prod;
-  fra.me.line = 2831;
+  fra.me.line = 3572;
   fra.me.meth = LOCATE_parser___parser_prod___ALeMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15636,26 +19340,26 @@ void parser___parser_prod___ALeMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2833 */
+  /* parser/parser_prod.nit:3574 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser___parser_prod, 2833);
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_parser___parser_prod, 3574);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGeMethid___empty_init[] = "parser_prod::AGeMethid::empty_init";
 void parser___parser_prod___AGeMethid___empty_init(val_t p0, int* init_table){
-  int itpos79 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeMethid].i;
+  int itpos78 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos79]) return;
+  if (init_table[itpos78]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2837;
+  fra.me.line = 3578;
   fra.me.meth = LOCATE_parser___parser_prod___AGeMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15663,19 +19367,19 @@ void parser___parser_prod___AGeMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos79] = 1;
+  init_table[itpos78] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGeMethid___init_agemethid[] = "parser_prod::AGeMethid::init_agemethid";
 void parser___parser_prod___AGeMethid___init_agemethid(val_t p0, val_t p1, int* init_table){
-  int itpos80 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeMethid].i;
+  int itpos79 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos80]) return;
+  if (init_table[itpos79]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2839;
+  fra.me.line = 3580;
   fra.me.meth = LOCATE_parser___parser_prod___AGeMethid___init_agemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -15685,28 +19389,28 @@ void parser___parser_prod___AGeMethid___init_agemethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2839 */
+  /* parser/parser_prod.nit:3580 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2843 */
+  /* parser/parser_prod.nit:3584 */
   CALL_parser___parser_prod___AGeMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2844 */
+  /* parser/parser_prod.nit:3585 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2844);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3585);
   }
   ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2845 */
+  /* parser/parser_prod.nit:3586 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2845);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3586);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos80] = 1;
+  init_table[itpos79] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGeMethid___replace_child[] = "parser_prod::AGeMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AGeMethid___replace_child[] = "parser_prod::AGeMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AGeMethid___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;
@@ -15714,7 +19418,7 @@ void parser___parser_prod___AGeMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2848;
+  fra.me.line = 3589;
   fra.me.meth = LOCATE_parser___parser_prod___AGeMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15726,11 +19430,11 @@ void parser___parser_prod___AGeMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2850 */
+  /* parser/parser_prod.nit:3591 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser___parser_prod, 2850);
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser___parser_prod, 3591);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -15740,7 +19444,7 @@ void parser___parser_prod___AGeMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2851 */
+    /* parser/parser_prod.nit:3592 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -15755,39 +19459,61 @@ void parser___parser_prod___AGeMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2852 */
+      /* parser/parser_prod.nit:3593 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2852);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3593);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2853 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3594 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TGe, ID_parser___parser_nodes___TGe)) /*cast TGe*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2853);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3594);
       }
-      /* parser/parser_prod.nit:2854 */
+      /* parser/parser_prod.nit:3595 */
       ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2856 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2856);
+      /* parser/parser_prod.nit:3597 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3597);
     }
-    /* parser/parser_prod.nit:2858 */
+    /* parser/parser_prod.nit:3599 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGeMethid___visit_all[] = "parser_prod::AGeMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AGeMethid___n_ge__eq[] = "parser_prod::AGeMethid::(parser_nodes::AGeMethid::n_ge=)";
+void parser___parser_prod___AGeMethid___n_ge__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3603;
+  fra.me.meth = LOCATE_parser___parser_prod___AGeMethid___n_ge__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3605 */
+  ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3606 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGeMethid___visit_all[] = "parser_prod::AGeMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AGeMethid___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___parser_prod;
-  fra.me.line = 2862;
+  fra.me.line = 3610;
   fra.me.meth = LOCATE_parser___parser_prod___AGeMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15796,26 +19522,26 @@ void parser___parser_prod___AGeMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2864 */
+  /* parser/parser_prod.nit:3612 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser___parser_prod, 2864);
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_parser___parser_prod, 3612);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALtMethid___empty_init[] = "parser_prod::ALtMethid::empty_init";
 void parser___parser_prod___ALtMethid___empty_init(val_t p0, int* init_table){
-  int itpos81 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtMethid].i;
+  int itpos80 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos81]) return;
+  if (init_table[itpos80]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2868;
+  fra.me.line = 3616;
   fra.me.meth = LOCATE_parser___parser_prod___ALtMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15823,19 +19549,19 @@ void parser___parser_prod___ALtMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos81] = 1;
+  init_table[itpos80] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALtMethid___init_altmethid[] = "parser_prod::ALtMethid::init_altmethid";
 void parser___parser_prod___ALtMethid___init_altmethid(val_t p0, val_t p1, int* init_table){
-  int itpos82 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtMethid].i;
+  int itpos81 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos82]) return;
+  if (init_table[itpos81]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2870;
+  fra.me.line = 3618;
   fra.me.meth = LOCATE_parser___parser_prod___ALtMethid___init_altmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -15845,28 +19571,28 @@ void parser___parser_prod___ALtMethid___init_altmethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2870 */
+  /* parser/parser_prod.nit:3618 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2874 */
+  /* parser/parser_prod.nit:3622 */
   CALL_parser___parser_prod___ALtMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2875 */
+  /* parser/parser_prod.nit:3623 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2875);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3623);
   }
   ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2876 */
+  /* parser/parser_prod.nit:3624 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2876);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3624);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos82] = 1;
+  init_table[itpos81] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALtMethid___replace_child[] = "parser_prod::ALtMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALtMethid___replace_child[] = "parser_prod::ALtMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALtMethid___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;
@@ -15874,7 +19600,7 @@ void parser___parser_prod___ALtMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2879;
+  fra.me.line = 3627;
   fra.me.meth = LOCATE_parser___parser_prod___ALtMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15886,11 +19612,11 @@ void parser___parser_prod___ALtMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2881 */
+  /* parser/parser_prod.nit:3629 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser___parser_prod, 2881);
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser___parser_prod, 3629);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -15900,7 +19626,7 @@ void parser___parser_prod___ALtMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2882 */
+    /* parser/parser_prod.nit:3630 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -15915,39 +19641,61 @@ void parser___parser_prod___ALtMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2883 */
+      /* parser/parser_prod.nit:3631 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2883);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3631);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2884 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3632 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TLt, ID_parser___parser_nodes___TLt)) /*cast TLt*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2884);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3632);
       }
-      /* parser/parser_prod.nit:2885 */
+      /* parser/parser_prod.nit:3633 */
       ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2887 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2887);
+      /* parser/parser_prod.nit:3635 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3635);
     }
-    /* parser/parser_prod.nit:2889 */
+    /* parser/parser_prod.nit:3637 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALtMethid___visit_all[] = "parser_prod::ALtMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALtMethid___n_lt__eq[] = "parser_prod::ALtMethid::(parser_nodes::ALtMethid::n_lt=)";
+void parser___parser_prod___ALtMethid___n_lt__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3641;
+  fra.me.meth = LOCATE_parser___parser_prod___ALtMethid___n_lt__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3643 */
+  ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3644 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALtMethid___visit_all[] = "parser_prod::ALtMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALtMethid___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___parser_prod;
-  fra.me.line = 2893;
+  fra.me.line = 3648;
   fra.me.meth = LOCATE_parser___parser_prod___ALtMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15956,26 +19704,26 @@ void parser___parser_prod___ALtMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2895 */
+  /* parser/parser_prod.nit:3650 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser___parser_prod, 2895);
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_parser___parser_prod, 3650);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGtMethid___empty_init[] = "parser_prod::AGtMethid::empty_init";
 void parser___parser_prod___AGtMethid___empty_init(val_t p0, int* init_table){
-  int itpos83 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtMethid].i;
+  int itpos82 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos83]) return;
+  if (init_table[itpos82]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2899;
+  fra.me.line = 3654;
   fra.me.meth = LOCATE_parser___parser_prod___AGtMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -15983,19 +19731,19 @@ void parser___parser_prod___AGtMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos83] = 1;
+  init_table[itpos82] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGtMethid___init_agtmethid[] = "parser_prod::AGtMethid::init_agtmethid";
 void parser___parser_prod___AGtMethid___init_agtmethid(val_t p0, val_t p1, int* init_table){
-  int itpos84 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtMethid].i;
+  int itpos83 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos84]) return;
+  if (init_table[itpos83]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2901;
+  fra.me.line = 3656;
   fra.me.meth = LOCATE_parser___parser_prod___AGtMethid___init_agtmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -16005,28 +19753,28 @@ void parser___parser_prod___AGtMethid___init_agtmethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2901 */
+  /* parser/parser_prod.nit:3656 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2905 */
+  /* parser/parser_prod.nit:3660 */
   CALL_parser___parser_prod___AGtMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2906 */
+  /* parser/parser_prod.nit:3661 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2906);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3661);
   }
   ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2907 */
+  /* parser/parser_prod.nit:3662 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2907);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3662);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos84] = 1;
+  init_table[itpos83] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGtMethid___replace_child[] = "parser_prod::AGtMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AGtMethid___replace_child[] = "parser_prod::AGtMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AGtMethid___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;
@@ -16034,7 +19782,7 @@ void parser___parser_prod___AGtMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2910;
+  fra.me.line = 3665;
   fra.me.meth = LOCATE_parser___parser_prod___AGtMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16046,11 +19794,11 @@ void parser___parser_prod___AGtMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2912 */
+  /* parser/parser_prod.nit:3667 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser___parser_prod, 2912);
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser___parser_prod, 3667);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16060,7 +19808,7 @@ void parser___parser_prod___AGtMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2913 */
+    /* parser/parser_prod.nit:3668 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16075,39 +19823,61 @@ void parser___parser_prod___AGtMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2914 */
+      /* parser/parser_prod.nit:3669 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2914);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3669);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2915 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3670 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TGt, ID_parser___parser_nodes___TGt)) /*cast TGt*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2915);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3670);
       }
-      /* parser/parser_prod.nit:2916 */
+      /* parser/parser_prod.nit:3671 */
       ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2918 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2918);
+      /* parser/parser_prod.nit:3673 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3673);
     }
-    /* parser/parser_prod.nit:2920 */
+    /* parser/parser_prod.nit:3675 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGtMethid___visit_all[] = "parser_prod::AGtMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AGtMethid___n_gt__eq[] = "parser_prod::AGtMethid::(parser_nodes::AGtMethid::n_gt=)";
+void parser___parser_prod___AGtMethid___n_gt__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3679;
+  fra.me.meth = LOCATE_parser___parser_prod___AGtMethid___n_gt__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3681 */
+  ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3682 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGtMethid___visit_all[] = "parser_prod::AGtMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AGtMethid___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___parser_prod;
-  fra.me.line = 2924;
+  fra.me.line = 3686;
   fra.me.meth = LOCATE_parser___parser_prod___AGtMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16116,26 +19886,26 @@ void parser___parser_prod___AGtMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2926 */
+  /* parser/parser_prod.nit:3688 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser___parser_prod, 2926);
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_parser___parser_prod, 3688);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALlMethid___empty_init[] = "parser_prod::ALlMethid::empty_init";
 void parser___parser_prod___ALlMethid___empty_init(val_t p0, int* init_table){
-  int itpos85 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlMethid].i;
+  int itpos84 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos85]) return;
+  if (init_table[itpos84]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2930;
+  fra.me.line = 3692;
   fra.me.meth = LOCATE_parser___parser_prod___ALlMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -16143,19 +19913,19 @@ void parser___parser_prod___ALlMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos85] = 1;
+  init_table[itpos84] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALlMethid___init_allmethid[] = "parser_prod::ALlMethid::init_allmethid";
 void parser___parser_prod___ALlMethid___init_allmethid(val_t p0, val_t p1, int* init_table){
-  int itpos86 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlMethid].i;
+  int itpos85 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos86]) return;
+  if (init_table[itpos85]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2932;
+  fra.me.line = 3694;
   fra.me.meth = LOCATE_parser___parser_prod___ALlMethid___init_allmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -16165,28 +19935,28 @@ void parser___parser_prod___ALlMethid___init_allmethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2932 */
+  /* parser/parser_prod.nit:3694 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2936 */
+  /* parser/parser_prod.nit:3698 */
   CALL_parser___parser_prod___ALlMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2937 */
+  /* parser/parser_prod.nit:3699 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2937);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3699);
   }
   ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2938 */
+  /* parser/parser_prod.nit:3700 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2938);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3700);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos86] = 1;
+  init_table[itpos85] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALlMethid___replace_child[] = "parser_prod::ALlMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALlMethid___replace_child[] = "parser_prod::ALlMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALlMethid___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;
@@ -16194,7 +19964,7 @@ void parser___parser_prod___ALlMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2941;
+  fra.me.line = 3703;
   fra.me.meth = LOCATE_parser___parser_prod___ALlMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16206,11 +19976,11 @@ void parser___parser_prod___ALlMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2943 */
+  /* parser/parser_prod.nit:3705 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser___parser_prod, 2943);
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser___parser_prod, 3705);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16220,7 +19990,7 @@ void parser___parser_prod___ALlMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2944 */
+    /* parser/parser_prod.nit:3706 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16235,39 +20005,61 @@ void parser___parser_prod___ALlMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2945 */
+      /* parser/parser_prod.nit:3707 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2945);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3707);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2946 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3708 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TLl, ID_parser___parser_nodes___TLl)) /*cast TLl*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2946);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3708);
       }
-      /* parser/parser_prod.nit:2947 */
+      /* parser/parser_prod.nit:3709 */
       ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2949 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2949);
+      /* parser/parser_prod.nit:3711 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3711);
     }
-    /* parser/parser_prod.nit:2951 */
+    /* parser/parser_prod.nit:3713 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALlMethid___visit_all[] = "parser_prod::ALlMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALlMethid___n_ll__eq[] = "parser_prod::ALlMethid::(parser_nodes::ALlMethid::n_ll=)";
+void parser___parser_prod___ALlMethid___n_ll__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3717;
+  fra.me.meth = LOCATE_parser___parser_prod___ALlMethid___n_ll__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3719 */
+  ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3720 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALlMethid___visit_all[] = "parser_prod::ALlMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALlMethid___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___parser_prod;
-  fra.me.line = 2955;
+  fra.me.line = 3724;
   fra.me.meth = LOCATE_parser___parser_prod___ALlMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16276,26 +20068,26 @@ void parser___parser_prod___ALlMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2957 */
+  /* parser/parser_prod.nit:3726 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser___parser_prod, 2957);
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_parser___parser_prod, 3726);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGgMethid___empty_init[] = "parser_prod::AGgMethid::empty_init";
 void parser___parser_prod___AGgMethid___empty_init(val_t p0, int* init_table){
-  int itpos87 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgMethid].i;
+  int itpos86 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos87]) return;
+  if (init_table[itpos86]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2961;
+  fra.me.line = 3730;
   fra.me.meth = LOCATE_parser___parser_prod___AGgMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -16303,19 +20095,19 @@ void parser___parser_prod___AGgMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos87] = 1;
+  init_table[itpos86] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGgMethid___init_aggmethid[] = "parser_prod::AGgMethid::init_aggmethid";
 void parser___parser_prod___AGgMethid___init_aggmethid(val_t p0, val_t p1, int* init_table){
-  int itpos88 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgMethid].i;
+  int itpos87 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos88]) return;
+  if (init_table[itpos87]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2963;
+  fra.me.line = 3732;
   fra.me.meth = LOCATE_parser___parser_prod___AGgMethid___init_aggmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -16325,28 +20117,28 @@ void parser___parser_prod___AGgMethid___init_aggmethid(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2963 */
+  /* parser/parser_prod.nit:3732 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2967 */
+  /* parser/parser_prod.nit:3736 */
   CALL_parser___parser_prod___AGgMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:2968 */
+  /* parser/parser_prod.nit:3737 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2968);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3737);
   }
   ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:2969 */
+  /* parser/parser_prod.nit:3738 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2969);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3738);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos88] = 1;
+  init_table[itpos87] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGgMethid___replace_child[] = "parser_prod::AGgMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AGgMethid___replace_child[] = "parser_prod::AGgMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AGgMethid___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;
@@ -16354,7 +20146,7 @@ void parser___parser_prod___AGgMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2972;
+  fra.me.line = 3741;
   fra.me.meth = LOCATE_parser___parser_prod___AGgMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16366,11 +20158,11 @@ void parser___parser_prod___AGgMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2974 */
+  /* parser/parser_prod.nit:3743 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser___parser_prod, 2974);
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser___parser_prod, 3743);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16380,7 +20172,7 @@ void parser___parser_prod___AGgMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:2975 */
+    /* parser/parser_prod.nit:3744 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16395,39 +20187,61 @@ void parser___parser_prod___AGgMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:2976 */
+      /* parser/parser_prod.nit:3745 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2976);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3745);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:2977 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3746 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TGg, ID_parser___parser_nodes___TGg)) /*cast TGg*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 2977);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3746);
       }
-      /* parser/parser_prod.nit:2978 */
+      /* parser/parser_prod.nit:3747 */
       ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:2980 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 2980);
+      /* parser/parser_prod.nit:3749 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3749);
     }
-    /* parser/parser_prod.nit:2982 */
+    /* parser/parser_prod.nit:3751 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGgMethid___visit_all[] = "parser_prod::AGgMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AGgMethid___n_gg__eq[] = "parser_prod::AGgMethid::(parser_nodes::AGgMethid::n_gg=)";
+void parser___parser_prod___AGgMethid___n_gg__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3755;
+  fra.me.meth = LOCATE_parser___parser_prod___AGgMethid___n_gg__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3757 */
+  ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3758 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGgMethid___visit_all[] = "parser_prod::AGgMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AGgMethid___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___parser_prod;
-  fra.me.line = 2986;
+  fra.me.line = 3762;
   fra.me.meth = LOCATE_parser___parser_prod___AGgMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16436,26 +20250,26 @@ void parser___parser_prod___AGgMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:2988 */
+  /* parser/parser_prod.nit:3764 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser___parser_prod, 2988);
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_parser___parser_prod, 3764);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraMethid___empty_init[] = "parser_prod::ABraMethid::empty_init";
 void parser___parser_prod___ABraMethid___empty_init(val_t p0, int* init_table){
-  int itpos89 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraMethid].i;
+  int itpos88 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos89]) return;
+  if (init_table[itpos88]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2992;
+  fra.me.line = 3768;
   fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -16463,19 +20277,19 @@ void parser___parser_prod___ABraMethid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos89] = 1;
+  init_table[itpos88] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraMethid___init_abramethid[] = "parser_prod::ABraMethid::init_abramethid";
 void parser___parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos90 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraMethid].i;
+  int itpos89 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos90]) return;
+  if (init_table[itpos89]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 2994;
+  fra.me.line = 3770;
   fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___init_abramethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16487,41 +20301,41 @@ void parser___parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:2994 */
+  /* parser/parser_prod.nit:3770 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:2999 */
+  /* parser/parser_prod.nit:3775 */
   CALL_parser___parser_prod___ABraMethid___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:3000 */
+  /* parser/parser_prod.nit:3776 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3000);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3776);
   }
   ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3001 */
+  /* parser/parser_prod.nit:3777 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3001);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3777);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3002 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:3778 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3002);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3778);
   }
   ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3003 */
+  /* parser/parser_prod.nit:3779 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3003);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3779);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos90] = 1;
+  init_table[itpos89] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraMethid___replace_child[] = "parser_prod::ABraMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABraMethid___replace_child[] = "parser_prod::ABraMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABraMethid___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;
@@ -16529,7 +20343,7 @@ void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3006;
+  fra.me.line = 3782;
   fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16541,11 +20355,11 @@ void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3008 */
+  /* parser/parser_prod.nit:3784 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3008);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3784);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16555,7 +20369,7 @@ void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3009 */
+    /* parser/parser_prod.nit:3785 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16570,32 +20384,32 @@ void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3010 */
+      /* parser/parser_prod.nit:3786 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3010);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3786);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3011 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3787 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast TObra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3011);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3787);
       }
-      /* parser/parser_prod.nit:3012 */
+      /* parser/parser_prod.nit:3788 */
       ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3014 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3014);
+      /* parser/parser_prod.nit:3790 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3790);
     }
-    /* parser/parser_prod.nit:3016 */
+    /* parser/parser_prod.nit:3792 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3018 */
+  /* parser/parser_prod.nit:3794 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3018);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3794);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16605,7 +20419,7 @@ void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3019 */
+    /* parser/parser_prod.nit:3795 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16620,39 +20434,83 @@ void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3020 */
+      /* parser/parser_prod.nit:3796 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3020);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3796);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3021 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3797 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast TCbra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3021);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3797);
       }
-      /* parser/parser_prod.nit:3022 */
+      /* parser/parser_prod.nit:3798 */
       ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3024 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3024);
+      /* parser/parser_prod.nit:3800 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3800);
     }
-    /* parser/parser_prod.nit:3026 */
+    /* parser/parser_prod.nit:3802 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraMethid___visit_all[] = "parser_prod::ABraMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABraMethid___n_obra__eq[] = "parser_prod::ABraMethid::(parser_nodes::ABraMethid::n_obra=)";
+void parser___parser_prod___ABraMethid___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3806;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3808 */
+  ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3809 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraMethid___n_cbra__eq[] = "parser_prod::ABraMethid::(parser_nodes::ABraMethid::n_cbra=)";
+void parser___parser_prod___ABraMethid___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3811;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3813 */
+  ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3814 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraMethid___visit_all[] = "parser_prod::ABraMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABraMethid___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3030;
+  fra.me.line = 3818;
   fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -16662,34 +20520,34 @@ void parser___parser_prod___ABraMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3032 */
+  /* parser/parser_prod.nit:3820 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3032);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3820);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:3033 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:3821 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3033);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3821);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarshipMethid___empty_init[] = "parser_prod::AStarshipMethid::empty_init";
 void parser___parser_prod___AStarshipMethid___empty_init(val_t p0, int* init_table){
-  int itpos91 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipMethid].i;
+  int itpos90 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos91]) return;
+  if (init_table[itpos90]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3037;
+  fra.me.line = 3825;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -16697,19 +20555,19 @@ void parser___parser_prod___AStarshipMethid___empty_init(val_t p0, int* init_tab
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos91] = 1;
+  init_table[itpos90] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarshipMethid___init_astarshipmethid[] = "parser_prod::AStarshipMethid::init_astarshipmethid";
 void parser___parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0, val_t p1, int* init_table){
-  int itpos92 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipMethid].i;
+  int itpos91 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos92]) return;
+  if (init_table[itpos91]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3039;
+  fra.me.line = 3827;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipMethid___init_astarshipmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -16719,28 +20577,28 @@ void parser___parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3039 */
+  /* parser/parser_prod.nit:3827 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3043 */
+  /* parser/parser_prod.nit:3831 */
   CALL_parser___parser_prod___AStarshipMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:3044 */
+  /* parser/parser_prod.nit:3832 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3044);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3832);
   }
   ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3045 */
+  /* parser/parser_prod.nit:3833 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3045);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3833);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos92] = 1;
+  init_table[itpos91] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarshipMethid___replace_child[] = "parser_prod::AStarshipMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStarshipMethid___replace_child[] = "parser_prod::AStarshipMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStarshipMethid___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;
@@ -16748,7 +20606,7 @@ void parser___parser_prod___AStarshipMethid___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3048;
+  fra.me.line = 3836;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16760,11 +20618,11 @@ void parser___parser_prod___AStarshipMethid___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3050 */
+  /* parser/parser_prod.nit:3838 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser___parser_prod, 3050);
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser___parser_prod, 3838);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16774,7 +20632,7 @@ void parser___parser_prod___AStarshipMethid___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3051 */
+    /* parser/parser_prod.nit:3839 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16789,39 +20647,61 @@ void parser___parser_prod___AStarshipMethid___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3052 */
+      /* parser/parser_prod.nit:3840 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3052);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3840);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3053 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3841 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TStarship, ID_parser___parser_nodes___TStarship)) /*cast TStarship*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3053);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3841);
       }
-      /* parser/parser_prod.nit:3054 */
+      /* parser/parser_prod.nit:3842 */
       ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3056 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3056);
+      /* parser/parser_prod.nit:3844 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3844);
     }
-    /* parser/parser_prod.nit:3058 */
+    /* parser/parser_prod.nit:3846 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarshipMethid___visit_all[] = "parser_prod::AStarshipMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStarshipMethid___n_starship__eq[] = "parser_prod::AStarshipMethid::(parser_nodes::AStarshipMethid::n_starship=)";
+void parser___parser_prod___AStarshipMethid___n_starship__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3850;
+  fra.me.meth = LOCATE_parser___parser_prod___AStarshipMethid___n_starship__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3852 */
+  ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3853 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStarshipMethid___visit_all[] = "parser_prod::AStarshipMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStarshipMethid___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___parser_prod;
-  fra.me.line = 3062;
+  fra.me.line = 3857;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16830,26 +20710,26 @@ void parser___parser_prod___AStarshipMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3064 */
+  /* parser/parser_prod.nit:3859 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser___parser_prod, 3064);
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_parser___parser_prod, 3859);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAssignMethid___empty_init[] = "parser_prod::AAssignMethid::empty_init";
 void parser___parser_prod___AAssignMethid___empty_init(val_t p0, int* init_table){
-  int itpos93 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssignMethid].i;
+  int itpos92 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssignMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos93]) return;
+  if (init_table[itpos92]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3068;
+  fra.me.line = 3863;
   fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -16857,19 +20737,19 @@ void parser___parser_prod___AAssignMethid___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos93] = 1;
+  init_table[itpos92] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAssignMethid___init_aassignmethid[] = "parser_prod::AAssignMethid::init_aassignmethid";
 void parser___parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos94 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssignMethid].i;
+  int itpos93 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssignMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos94]) return;
+  if (init_table[itpos93]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3070;
+  fra.me.line = 3865;
   fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___init_aassignmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16881,41 +20761,41 @@ void parser___parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3070 */
+  /* parser/parser_prod.nit:3865 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3075 */
+  /* parser/parser_prod.nit:3870 */
   CALL_parser___parser_prod___AAssignMethid___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:3076 */
+  /* parser/parser_prod.nit:3871 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3076);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3871);
   }
   ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3077 */
+  /* parser/parser_prod.nit:3872 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3077);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3872);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3078 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:3873 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3078);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3873);
   }
   ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3079 */
+  /* parser/parser_prod.nit:3874 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3079);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3874);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos94] = 1;
+  init_table[itpos93] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAssignMethid___replace_child[] = "parser_prod::AAssignMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAssignMethid___replace_child[] = "parser_prod::AAssignMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAssignMethid___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;
@@ -16923,7 +20803,7 @@ void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3082;
+  fra.me.line = 3877;
   fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -16935,11 +20815,11 @@ void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3084 */
+  /* parser/parser_prod.nit:3879 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3084);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3879);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16949,7 +20829,7 @@ void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3085 */
+    /* parser/parser_prod.nit:3880 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -16964,32 +20844,32 @@ void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3086 */
+      /* parser/parser_prod.nit:3881 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3086);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3881);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3087 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3882 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3087);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3882);
       }
-      /* parser/parser_prod.nit:3088 */
+      /* parser/parser_prod.nit:3883 */
       ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3090 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3090);
+      /* parser/parser_prod.nit:3885 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3885);
     }
-    /* parser/parser_prod.nit:3092 */
+    /* parser/parser_prod.nit:3887 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3094 */
+  /* parser/parser_prod.nit:3889 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3094);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3889);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -16999,7 +20879,7 @@ void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3095 */
+    /* parser/parser_prod.nit:3890 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17014,39 +20894,83 @@ void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3096 */
+      /* parser/parser_prod.nit:3891 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3096);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3891);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3097 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3892 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3097);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3892);
       }
-      /* parser/parser_prod.nit:3098 */
+      /* parser/parser_prod.nit:3893 */
       ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3100 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3100);
+      /* parser/parser_prod.nit:3895 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3895);
     }
-    /* parser/parser_prod.nit:3102 */
+    /* parser/parser_prod.nit:3897 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAssignMethid___visit_all[] = "parser_prod::AAssignMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAssignMethid___n_id__eq[] = "parser_prod::AAssignMethid::(parser_nodes::AAssignMethid::n_id=)";
+void parser___parser_prod___AAssignMethid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3901;
+  fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3903 */
+  ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3904 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAssignMethid___n_assign__eq[] = "parser_prod::AAssignMethid::(parser_nodes::AAssignMethid::n_assign=)";
+void parser___parser_prod___AAssignMethid___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3906;
+  fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3908 */
+  ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3909 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAssignMethid___visit_all[] = "parser_prod::AAssignMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAssignMethid___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3106;
+  fra.me.line = 3913;
   fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -17056,34 +20980,34 @@ void parser___parser_prod___AAssignMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3108 */
+  /* parser/parser_prod.nit:3915 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3108);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3915);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:3109 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:3916 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3109);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3916);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraassignMethid___empty_init[] = "parser_prod::ABraassignMethid::empty_init";
 void parser___parser_prod___ABraassignMethid___empty_init(val_t p0, int* init_table){
-  int itpos95 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraassignMethid].i;
+  int itpos94 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraassignMethid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos95]) return;
+  if (init_table[itpos94]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3113;
+  fra.me.line = 3920;
   fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -17091,19 +21015,19 @@ void parser___parser_prod___ABraassignMethid___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos95] = 1;
+  init_table[itpos94] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraassignMethid___init_abraassignmethid[] = "parser_prod::ABraassignMethid::init_abraassignmethid";
 void parser___parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos96 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraassignMethid].i;
+  int itpos95 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraassignMethid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos96]) return;
+  if (init_table[itpos95]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3115;
+  fra.me.line = 3922;
   fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___init_abraassignmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -17117,54 +21041,54 @@ void parser___parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:3115 */
+  /* parser/parser_prod.nit:3922 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3121 */
+  /* parser/parser_prod.nit:3928 */
   CALL_parser___parser_prod___ABraassignMethid___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:3122 */
+  /* parser/parser_prod.nit:3929 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3122);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3929);
   }
   ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3123 */
+  /* parser/parser_prod.nit:3930 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3123);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3930);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:3124 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:3931 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3124);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3931);
   }
   ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3125 */
+  /* parser/parser_prod.nit:3932 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3125);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3932);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:3126 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:3933 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3126);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3933);
   }
   ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3127 */
+  /* parser/parser_prod.nit:3934 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3127);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3934);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos96] = 1;
+  init_table[itpos95] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraassignMethid___replace_child[] = "parser_prod::ABraassignMethid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABraassignMethid___replace_child[] = "parser_prod::ABraassignMethid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABraassignMethid___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;
@@ -17172,7 +21096,7 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3130;
+  fra.me.line = 3937;
   fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -17184,11 +21108,11 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3132 */
+  /* parser/parser_prod.nit:3939 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3132);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3939);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -17198,7 +21122,7 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3133 */
+    /* parser/parser_prod.nit:3940 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17213,32 +21137,32 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3134 */
+      /* parser/parser_prod.nit:3941 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3134);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3941);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3135 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3942 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast TObra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3135);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3942);
       }
-      /* parser/parser_prod.nit:3136 */
+      /* parser/parser_prod.nit:3943 */
       ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3138 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3138);
+      /* parser/parser_prod.nit:3945 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3945);
     }
-    /* parser/parser_prod.nit:3140 */
+    /* parser/parser_prod.nit:3947 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3142 */
+  /* parser/parser_prod.nit:3949 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3142);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3949);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -17248,7 +21172,7 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3143 */
+    /* parser/parser_prod.nit:3950 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17263,32 +21187,32 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3144 */
+      /* parser/parser_prod.nit:3951 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3144);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3951);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3145 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3952 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast TCbra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3145);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3952);
       }
-      /* parser/parser_prod.nit:3146 */
+      /* parser/parser_prod.nit:3953 */
       ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3148 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3148);
+      /* parser/parser_prod.nit:3955 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3955);
     }
-    /* parser/parser_prod.nit:3150 */
+    /* parser/parser_prod.nit:3957 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3152 */
+  /* parser/parser_prod.nit:3959 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3152);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3959);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -17298,7 +21222,7 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3153 */
+    /* parser/parser_prod.nit:3960 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17313,39 +21237,105 @@ void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3154 */
+      /* parser/parser_prod.nit:3961 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3154);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3961);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3155 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:3962 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3155);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3962);
       }
-      /* parser/parser_prod.nit:3156 */
+      /* parser/parser_prod.nit:3963 */
       ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3158 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3158);
+      /* parser/parser_prod.nit:3965 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3965);
     }
-    /* parser/parser_prod.nit:3160 */
+    /* parser/parser_prod.nit:3967 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraassignMethid___visit_all[] = "parser_prod::ABraassignMethid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABraassignMethid___n_obra__eq[] = "parser_prod::ABraassignMethid::(parser_nodes::ABraassignMethid::n_obra=)";
+void parser___parser_prod___ABraassignMethid___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3971;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3973 */
+  ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3974 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraassignMethid___n_cbra__eq[] = "parser_prod::ABraassignMethid::(parser_nodes::ABraassignMethid::n_cbra=)";
+void parser___parser_prod___ABraassignMethid___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3976;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3978 */
+  ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3979 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraassignMethid___n_assign__eq[] = "parser_prod::ABraassignMethid::(parser_nodes::ABraassignMethid::n_assign=)";
+void parser___parser_prod___ABraassignMethid___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 3981;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3983 */
+  ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:3984 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraassignMethid___visit_all[] = "parser_prod::ABraassignMethid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABraassignMethid___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3164;
+  fra.me.line = 3988;
   fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -17355,42 +21345,42 @@ void parser___parser_prod___ABraassignMethid___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3166 */
+  /* parser/parser_prod.nit:3990 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3166);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 3990);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:3167 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:3991 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3167);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 3991);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:3168 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:3992 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3168);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 3992);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASignature___empty_init[] = "parser_prod::ASignature::empty_init";
 void parser___parser_prod___ASignature___empty_init(val_t p0, int* init_table){
-  int itpos97 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASignature].i;
+  int itpos96 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASignature].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos97]) return;
+  if (init_table[itpos96]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3172;
+  fra.me.line = 3996;
   fra.me.meth = LOCATE_parser___parser_prod___ASignature___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -17398,20 +21388,20 @@ void parser___parser_prod___ASignature___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos97] = 1;
+  init_table[itpos96] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASignature___init_asignature[] = "parser_prod::ASignature::init_asignature";
 void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos98 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASignature].i;
+  int itpos97 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASignature].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos98]) return;
+  if (init_table[itpos97]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3174;
+  fra.me.line = 3998;
   fra.me.meth = LOCATE_parser___parser_prod___ASignature___init_asignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -17428,11 +21418,11 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:3182 */
+  /* parser/parser_prod.nit:4006 */
   CALL_parser___parser_prod___ASignature___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* parser/parser_prod.nit:3183 */
+  /* parser/parser_prod.nit:4007 */
   ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3184 */
+  /* parser/parser_prod.nit:4008 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -17447,17 +21437,17 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3185 */
+    /* parser/parser_prod.nit:4009 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3185);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4009);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ASignature___init_asignature_1));
-  /* parser/parser_prod.nit:3192 */
+  /* parser/parser_prod.nit:4016 */
   ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3193 */
+  /* parser/parser_prod.nit:4017 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -17472,16 +21462,16 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3194 */
+    /* parser/parser_prod.nit:4018 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3194);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4018);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   }
-  /* parser/parser_prod.nit:3196 */
+  /* parser/parser_prod.nit:4020 */
   ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:3197 */
+  /* parser/parser_prod.nit:4021 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -17496,16 +21486,16 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3198 */
+    /* parser/parser_prod.nit:4022 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3198);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4022);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ASignature___init_asignature_2));
   stack_frame_head = fra.me.prev;
-  init_table[itpos98] = 1;
+  init_table[itpos97] = 1;
   return;
 }
   void OC_parser___parser_prod___ASignature___init_asignature_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -17513,7 +21503,7 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:3187 */
+    /* parser/parser_prod.nit:4011 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -17527,22 +21517,22 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3188 */
+    /* parser/parser_prod.nit:4012 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AParam, ID_parser___parser_nodes___AParam)) /*cast AParam*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3188);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4012);
     }
-    /* parser/parser_prod.nit:3189 */
+    /* parser/parser_prod.nit:4013 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 3189);
+      nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 4013);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ASignature____n_params(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:3190 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:4014 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -17551,7 +21541,7 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:3200 */
+    /* parser/parser_prod.nit:4024 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -17565,26 +21555,26 @@ void parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3201 */
+    /* parser/parser_prod.nit:4025 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AClosureDecl, ID_parser___parser_nodes___AClosureDecl)) /*cast AClosureDecl*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3201);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4025);
     }
-    /* parser/parser_prod.nit:3202 */
+    /* parser/parser_prod.nit:4026 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 3202);
+      nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 4026);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:3203 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:4027 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ASignature___replace_child[] = "parser_prod::ASignature::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASignature___replace_child[] = "parser_prod::ASignature::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASignature___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;
@@ -17595,7 +21585,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3207;
+  fra.me.line = 4031;
   fra.me.meth = LOCATE_parser___parser_prod___ASignature___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -17607,7 +21597,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3209 */
+  /* parser/parser_prod.nit:4033 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -17622,7 +21612,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3210 */
+    /* parser/parser_prod.nit:4034 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17637,71 +21627,65 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3211 */
+      /* parser/parser_prod.nit:4035 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3211);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4035);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3212 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4036 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3212);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4036);
       }
-      /* parser/parser_prod.nit:3213 */
+      /* parser/parser_prod.nit:4037 */
       ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3215 */
+      /* parser/parser_prod.nit:4039 */
       ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3217 */
+    /* parser/parser_prod.nit:4041 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3219 */
+  /* parser/parser_prod.nit:4043 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 3219);
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 4043);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:3219 */
+      /* parser/parser_prod.nit:4043 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:3220 */
+      /* parser/parser_prod.nit:4044 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 3220);
+        nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 4044);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:3221 */
+        /* parser/parser_prod.nit:4045 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -17716,52 +21700,52 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:3222 */
+          /* parser/parser_prod.nit:4046 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AParam, ID_parser___parser_nodes___AParam)) /*cast AParam*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3222);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4046);
           }
-          /* parser/parser_prod.nit:3223 */
+          /* parser/parser_prod.nit:4047 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 3223);
+            nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 4047);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:3224 */
+          /* parser/parser_prod.nit:4048 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3224);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4048);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:3226 */
+          /* parser/parser_prod.nit:4050 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 3226);
+            nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 4050);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:3228 */
+        /* parser/parser_prod.nit:4052 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:3231 */
+  /* parser/parser_prod.nit:4055 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -17776,7 +21760,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3232 */
+    /* parser/parser_prod.nit:4056 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17791,28 +21775,28 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3233 */
+      /* parser/parser_prod.nit:4057 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3233);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4057);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3234 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4058 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3234);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4058);
       }
-      /* parser/parser_prod.nit:3235 */
+      /* parser/parser_prod.nit:4059 */
       ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3237 */
+      /* parser/parser_prod.nit:4061 */
       ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3239 */
+    /* parser/parser_prod.nit:4063 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3241 */
+  /* parser/parser_prod.nit:4065 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -17827,7 +21811,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3242 */
+    /* parser/parser_prod.nit:4066 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -17842,71 +21826,65 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3243 */
+      /* parser/parser_prod.nit:4067 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3243);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4067);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3244 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4068 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3244);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4068);
       }
-      /* parser/parser_prod.nit:3245 */
+      /* parser/parser_prod.nit:4069 */
       ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3247 */
+      /* parser/parser_prod.nit:4071 */
       ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3249 */
+    /* parser/parser_prod.nit:4073 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3251 */
+  /* parser/parser_prod.nit:4075 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 3251);
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 4075);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:3251 */
+      /* parser/parser_prod.nit:4075 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:3252 */
+      /* parser/parser_prod.nit:4076 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 3252);
+        nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 4076);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:3253 */
+        /* parser/parser_prod.nit:4077 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -17921,47 +21899,47 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:3254 */
+          /* parser/parser_prod.nit:4078 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClosureDecl, ID_parser___parser_nodes___AClosureDecl)) /*cast AClosureDecl*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3254);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4078);
           }
-          /* parser/parser_prod.nit:3255 */
+          /* parser/parser_prod.nit:4079 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 3255);
+            nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 4079);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:3256 */
+          /* parser/parser_prod.nit:4080 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3256);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4080);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:3258 */
+          /* parser/parser_prod.nit:4082 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 3258);
+            nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 4082);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:3260 */
+        /* parser/parser_prod.nit:4084 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label3;
     }
   }
@@ -17970,7 +21948,139 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASignature___visit_all[] = "parser_prod::ASignature::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASignature___n_opar__eq[] = "parser_prod::ASignature::(parser_nodes::ASignature::n_opar=)";
+void parser___parser_prod___ASignature___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4089;
+  fra.me.meth = LOCATE_parser___parser_prod___ASignature___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4091 */
+  ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4092 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4093 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4093);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASignature___n_cpar__eq[] = "parser_prod::ASignature::(parser_nodes::ASignature::n_cpar=)";
+void parser___parser_prod___ASignature___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4096;
+  fra.me.meth = LOCATE_parser___parser_prod___ASignature___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4098 */
+  ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4099 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4100 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4100);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASignature___n_type__eq[] = "parser_prod::ASignature::(parser_nodes::ASignature::n_type=)";
+void parser___parser_prod___ASignature___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4103;
+  fra.me.meth = LOCATE_parser___parser_prod___ASignature___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4105 */
+  ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4106 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4107 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4107);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASignature___visit_all[] = "parser_prod::ASignature::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -17978,7 +22088,7 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3265;
+  fra.me.line = 4112;
   fra.me.meth = LOCATE_parser___parser_prod___ASignature___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -17989,9 +22099,9 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3265 */
+  /* parser/parser_prod.nit:4112 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3267 */
+  /* parser/parser_prod.nit:4114 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18007,24 +22117,24 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3268 */
+    /* parser/parser_prod.nit:4115 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3268);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4115);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3270 */
+  /* parser/parser_prod.nit:4117 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 3270);
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 4117);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ASignature___visit_all_1));
-  /* parser/parser_prod.nit:3273 */
+  /* parser/parser_prod.nit:4120 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18040,16 +22150,16 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3274 */
+    /* parser/parser_prod.nit:4121 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3274);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4121);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3276 */
+  /* parser/parser_prod.nit:4123 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18065,20 +22175,20 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3277 */
+    /* parser/parser_prod.nit:4124 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3277);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4124);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3279 */
+  /* parser/parser_prod.nit:4126 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 3279);
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 4126);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ASignature___visit_all_2));
@@ -18101,8 +22211,8 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3271 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:4118 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -18122,20 +22232,20 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3280 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:4127 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AParam___empty_init[] = "parser_prod::AParam::empty_init";
 void parser___parser_prod___AParam___empty_init(val_t p0, int* init_table){
-  int itpos99 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParam].i;
+  int itpos98 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParam].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos99]) return;
+  if (init_table[itpos98]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3285;
+  fra.me.line = 4132;
   fra.me.meth = LOCATE_parser___parser_prod___AParam___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -18143,20 +22253,20 @@ void parser___parser_prod___AParam___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos99] = 1;
+  init_table[itpos98] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AParam___init_aparam[] = "parser_prod::AParam::init_aparam";
 void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos100 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParam].i;
+  int itpos99 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParam].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos100]) return;
+  if (init_table[itpos99]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3287;
+  fra.me.line = 4134;
   fra.me.meth = LOCATE_parser___parser_prod___AParam___init_aparam;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -18172,26 +22282,26 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:3287 */
+  /* parser/parser_prod.nit:4134 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3294 */
+  /* parser/parser_prod.nit:4141 */
   CALL_parser___parser_prod___AParam___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:3295 */
+  /* parser/parser_prod.nit:4142 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3295);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4142);
   }
   ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3296 */
+  /* parser/parser_prod.nit:4143 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3296);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4143);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:3297 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:4144 */
   ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3298 */
+  /* parser/parser_prod.nit:4145 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -18206,16 +22316,16 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3299 */
+    /* parser/parser_prod.nit:4146 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3299);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4146);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:3301 */
+  /* parser/parser_prod.nit:4148 */
   ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3302 */
+  /* parser/parser_prod.nit:4149 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -18230,16 +22340,16 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3303 */
+    /* parser/parser_prod.nit:4150 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3303);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4150);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:3305 */
+  /* parser/parser_prod.nit:4152 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:3306 */
+  /* parser/parser_prod.nit:4153 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -18254,18 +22364,18 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3307 */
+    /* parser/parser_prod.nit:4154 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3307);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4154);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos100] = 1;
+  init_table[itpos99] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AParam___replace_child[] = "parser_prod::AParam::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AParam___replace_child[] = "parser_prod::AParam::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AParam___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;
@@ -18273,7 +22383,7 @@ void parser___parser_prod___AParam___replace_child(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___parser_prod;
-  fra.me.line = 3311;
+  fra.me.line = 4158;
   fra.me.meth = LOCATE_parser___parser_prod___AParam___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -18285,11 +22395,11 @@ void parser___parser_prod___AParam___replace_child(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_prod.nit:3313 */
+  /* parser/parser_prod.nit:4160 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3313);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4160);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -18299,7 +22409,7 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3314 */
+    /* parser/parser_prod.nit:4161 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18314,28 +22424,28 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3315 */
+      /* parser/parser_prod.nit:4162 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3315);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4162);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3316 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4163 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3316);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4163);
       }
-      /* parser/parser_prod.nit:3317 */
+      /* parser/parser_prod.nit:4164 */
       ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3319 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3319);
+      /* parser/parser_prod.nit:4166 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4166);
     }
-    /* parser/parser_prod.nit:3321 */
+    /* parser/parser_prod.nit:4168 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3323 */
+  /* parser/parser_prod.nit:4170 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -18350,7 +22460,7 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3324 */
+    /* parser/parser_prod.nit:4171 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18365,28 +22475,28 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3325 */
+      /* parser/parser_prod.nit:4172 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3325);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4172);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3326 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4173 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3326);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4173);
       }
-      /* parser/parser_prod.nit:3327 */
+      /* parser/parser_prod.nit:4174 */
       ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3329 */
+      /* parser/parser_prod.nit:4176 */
       ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3331 */
+    /* parser/parser_prod.nit:4178 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3333 */
+  /* parser/parser_prod.nit:4180 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -18401,7 +22511,7 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3334 */
+    /* parser/parser_prod.nit:4181 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18416,28 +22526,28 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3335 */
+      /* parser/parser_prod.nit:4182 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3335);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4182);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3336 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4183 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast TDotdotdot*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3336);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4183);
       }
-      /* parser/parser_prod.nit:3337 */
+      /* parser/parser_prod.nit:4184 */
       ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3339 */
+      /* parser/parser_prod.nit:4186 */
       ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3341 */
+    /* parser/parser_prod.nit:4188 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3343 */
+  /* parser/parser_prod.nit:4190 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -18452,7 +22562,7 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3344 */
+    /* parser/parser_prod.nit:4191 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18467,32 +22577,186 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3345 */
+      /* parser/parser_prod.nit:4192 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3345);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4192);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3346 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4193 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3346);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4193);
       }
-      /* parser/parser_prod.nit:3347 */
+      /* parser/parser_prod.nit:4194 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3349 */
+      /* parser/parser_prod.nit:4196 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3351 */
+    /* parser/parser_prod.nit:4198 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AParam___visit_all[] = "parser_prod::AParam::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AParam___n_id__eq[] = "parser_prod::AParam::(parser_nodes::AParam::n_id=)";
+void parser___parser_prod___AParam___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4202;
+  fra.me.meth = LOCATE_parser___parser_prod___AParam___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4204 */
+  ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4205 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParam___n_type__eq[] = "parser_prod::AParam::(parser_nodes::AParam::n_type=)";
+void parser___parser_prod___AParam___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4207;
+  fra.me.meth = LOCATE_parser___parser_prod___AParam___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4209 */
+  ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4210 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4211 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4211);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParam___n_dotdotdot__eq[] = "parser_prod::AParam::(parser_nodes::AParam::n_dotdotdot=)";
+void parser___parser_prod___AParam___n_dotdotdot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4214;
+  fra.me.meth = LOCATE_parser___parser_prod___AParam___n_dotdotdot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4216 */
+  ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4217 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4218 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4218);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParam___n_annotations__eq[] = "parser_prod::AParam::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AParam___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4221;
+  fra.me.meth = LOCATE_parser___parser_prod___AParam___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4223 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4224 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4225 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4225);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParam___visit_all[] = "parser_prod::AParam::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -18500,7 +22764,7 @@ void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3355;
+  fra.me.line = 4230;
   fra.me.meth = LOCATE_parser___parser_prod___AParam___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -18511,17 +22775,17 @@ void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3355 */
+  /* parser/parser_prod.nit:4230 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3357 */
+  /* parser/parser_prod.nit:4232 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3357);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4232);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3358 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4233 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18537,16 +22801,16 @@ void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3359 */
+    /* parser/parser_prod.nit:4234 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3359);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4234);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3361 */
+  /* parser/parser_prod.nit:4236 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18562,16 +22826,16 @@ void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3362 */
+    /* parser/parser_prod.nit:4237 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast TDotdotdot*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3362);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4237);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3364 */
+  /* parser/parser_prod.nit:4239 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18587,27 +22851,27 @@ void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3365 */
+    /* parser/parser_prod.nit:4240 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3365);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4240);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AClosureDecl___empty_init[] = "parser_prod::AClosureDecl::empty_init";
 void parser___parser_prod___AClosureDecl___empty_init(val_t p0, int* init_table){
-  int itpos101 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDecl].i;
+  int itpos100 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDecl].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos101]) return;
+  if (init_table[itpos100]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3370;
+  fra.me.line = 4245;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -18615,20 +22879,20 @@ void parser___parser_prod___AClosureDecl___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos101] = 1;
+  init_table[itpos100] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AClosureDecl___init_aclosuredecl[] = "parser_prod::AClosureDecl::init_aclosuredecl";
 void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos102 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDecl].i;
+  int itpos101 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDecl].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos102]) return;
+  if (init_table[itpos101]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3372;
+  fra.me.line = 4247;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___init_aclosuredecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -18646,13 +22910,13 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:3372 */
+  /* parser/parser_prod.nit:4247 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3380 */
+  /* parser/parser_prod.nit:4255 */
   CALL_parser___parser_prod___AClosureDecl___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:3381 */
+  /* parser/parser_prod.nit:4256 */
   ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3382 */
+  /* parser/parser_prod.nit:4257 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -18667,55 +22931,55 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3383 */
+    /* parser/parser_prod.nit:4258 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3383);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4258);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
-  /* parser/parser_prod.nit:3385 */
+  /* parser/parser_prod.nit:4260 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3385);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4260);
   }
   ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3386 */
+  /* parser/parser_prod.nit:4261 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3386);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4261);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:3387 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:4262 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3387);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4262);
   }
   ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3388 */
+  /* parser/parser_prod.nit:4263 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3388);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4263);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:3389 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:4264 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3389);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4264);
   }
   ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:3390 */
+  /* parser/parser_prod.nit:4265 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3390);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4265);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:3391 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:4266 */
   ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:3392 */
+  /* parser/parser_prod.nit:4267 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -18730,18 +22994,18 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3393 */
+    /* parser/parser_prod.nit:4268 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3393);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4268);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos102] = 1;
+  init_table[itpos101] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AClosureDecl___replace_child[] = "parser_prod::AClosureDecl::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AClosureDecl___replace_child[] = "parser_prod::AClosureDecl::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AClosureDecl___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;
@@ -18749,7 +23013,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3397;
+  fra.me.line = 4272;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -18761,7 +23025,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3399 */
+  /* parser/parser_prod.nit:4274 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -18776,7 +23040,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3400 */
+    /* parser/parser_prod.nit:4275 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18791,32 +23055,32 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3401 */
+      /* parser/parser_prod.nit:4276 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3401);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4276);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3402 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4277 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast TKwbreak*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3402);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4277);
       }
-      /* parser/parser_prod.nit:3403 */
+      /* parser/parser_prod.nit:4278 */
       ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3405 */
+      /* parser/parser_prod.nit:4280 */
       ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3407 */
+    /* parser/parser_prod.nit:4282 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3409 */
+  /* parser/parser_prod.nit:4284 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 3409);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 4284);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -18826,7 +23090,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3410 */
+    /* parser/parser_prod.nit:4285 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18841,32 +23105,32 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3411 */
+      /* parser/parser_prod.nit:4286 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3411);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4286);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3412 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4287 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast TBang*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3412);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4287);
       }
-      /* parser/parser_prod.nit:3413 */
+      /* parser/parser_prod.nit:4288 */
       ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3415 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3415);
+      /* parser/parser_prod.nit:4290 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4290);
     }
-    /* parser/parser_prod.nit:3417 */
+    /* parser/parser_prod.nit:4292 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3419 */
+  /* parser/parser_prod.nit:4294 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3419);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4294);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -18876,7 +23140,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3420 */
+    /* parser/parser_prod.nit:4295 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18891,32 +23155,32 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3421 */
+      /* parser/parser_prod.nit:4296 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3421);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4296);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3422 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4297 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3422);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4297);
       }
-      /* parser/parser_prod.nit:3423 */
+      /* parser/parser_prod.nit:4298 */
       ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3425 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3425);
+      /* parser/parser_prod.nit:4300 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4300);
     }
-    /* parser/parser_prod.nit:3427 */
+    /* parser/parser_prod.nit:4302 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3429 */
+  /* parser/parser_prod.nit:4304 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser___parser_prod, 3429);
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser___parser_prod, 4304);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -18926,7 +23190,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3430 */
+    /* parser/parser_prod.nit:4305 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18941,28 +23205,28 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3431 */
+      /* parser/parser_prod.nit:4306 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3431);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4306);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3432 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4307 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast ASignature*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3432);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4307);
       }
-      /* parser/parser_prod.nit:3433 */
+      /* parser/parser_prod.nit:4308 */
       ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3435 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3435);
+      /* parser/parser_prod.nit:4310 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4310);
     }
-    /* parser/parser_prod.nit:3437 */
+    /* parser/parser_prod.nit:4312 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3439 */
+  /* parser/parser_prod.nit:4314 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -18977,7 +23241,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3440 */
+    /* parser/parser_prod.nit:4315 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -18992,32 +23256,186 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3441 */
+      /* parser/parser_prod.nit:4316 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3441);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4316);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3442 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4317 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3442);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4317);
       }
-      /* parser/parser_prod.nit:3443 */
+      /* parser/parser_prod.nit:4318 */
       ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3445 */
+      /* parser/parser_prod.nit:4320 */
       ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3447 */
+    /* parser/parser_prod.nit:4322 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AClosureDecl___visit_all[] = "parser_prod::AClosureDecl::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AClosureDecl___n_kwbreak__eq[] = "parser_prod::AClosureDecl::(parser_nodes::AClosureDecl::n_kwbreak=)";
+void parser___parser_prod___AClosureDecl___n_kwbreak__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4326;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___n_kwbreak__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4328 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4329 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4330 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4330);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDecl___n_bang__eq[] = "parser_prod::AClosureDecl::(parser_nodes::AClosureDecl::n_bang=)";
+void parser___parser_prod___AClosureDecl___n_bang__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4333;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___n_bang__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4335 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4336 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDecl___n_id__eq[] = "parser_prod::AClosureDecl::(parser_nodes::AClosureDecl::n_id=)";
+void parser___parser_prod___AClosureDecl___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4338;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4340 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4341 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDecl___n_signature__eq[] = "parser_prod::AClosureDecl::(parser_nodes::AClosureDecl::n_signature=)";
+void parser___parser_prod___AClosureDecl___n_signature__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4343;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___n_signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4345 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4346 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDecl___n_expr__eq[] = "parser_prod::AClosureDecl::(parser_nodes::AClosureDecl::n_expr=)";
+void parser___parser_prod___AClosureDecl___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4348;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4350 */
+  ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4351 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4352 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4352);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDecl___visit_all[] = "parser_prod::AClosureDecl::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -19025,7 +23443,7 @@ void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3451;
+  fra.me.line = 4357;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -19036,9 +23454,9 @@ void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3451 */
+  /* parser/parser_prod.nit:4357 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3453 */
+  /* parser/parser_prod.nit:4359 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19054,40 +23472,40 @@ void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3454 */
+    /* parser/parser_prod.nit:4360 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast TKwbreak*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3454);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4360);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3456 */
+  /* parser/parser_prod.nit:4362 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 3456);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 4362);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3457 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4363 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3457);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4363);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3458 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4364 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser___parser_prod, 3458);
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_parser___parser_prod, 4364);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3459 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4365 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19103,27 +23521,27 @@ void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3460 */
+    /* parser/parser_prod.nit:4366 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3460);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4366);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AType___empty_init[] = "parser_prod::AType::empty_init";
 void parser___parser_prod___AType___empty_init(val_t p0, int* init_table){
-  int itpos103 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AType].i;
+  int itpos102 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AType].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos103]) return;
+  if (init_table[itpos102]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3465;
+  fra.me.line = 4371;
   fra.me.meth = LOCATE_parser___parser_prod___AType___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -19131,20 +23549,20 @@ void parser___parser_prod___AType___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos103] = 1;
+  init_table[itpos102] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AType___init_atype[] = "parser_prod::AType::init_atype";
 void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos104 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AType].i;
+  int itpos103 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AType].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos104]) return;
+  if (init_table[itpos103]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3467;
+  fra.me.line = 4373;
   fra.me.meth = LOCATE_parser___parser_prod___AType___init_atype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -19160,13 +23578,13 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:3467 */
+  /* parser/parser_prod.nit:4373 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3474 */
+  /* parser/parser_prod.nit:4380 */
   CALL_parser___parser_prod___AType___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:3475 */
+  /* parser/parser_prod.nit:4381 */
   ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3476 */
+  /* parser/parser_prod.nit:4382 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -19181,30 +23599,30 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3477 */
+    /* parser/parser_prod.nit:4383 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3477);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4383);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:3479 */
+  /* parser/parser_prod.nit:4385 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3479);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4385);
   }
   ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3480 */
+  /* parser/parser_prod.nit:4386 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3480);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4386);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AType___init_atype_1));
-  /* parser/parser_prod.nit:3486 */
+  /* parser/parser_prod.nit:4392 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:3487 */
+  /* parser/parser_prod.nit:4393 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -19219,15 +23637,15 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3488 */
+    /* parser/parser_prod.nit:4394 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3488);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4394);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos104] = 1;
+  init_table[itpos103] = 1;
   return;
 }
   void OC_parser___parser_prod___AType___init_atype_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -19235,7 +23653,7 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:3481 */
+    /* parser/parser_prod.nit:4387 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -19249,26 +23667,26 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3482 */
+    /* parser/parser_prod.nit:4388 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3482);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4388);
     }
-    /* parser/parser_prod.nit:3483 */
+    /* parser/parser_prod.nit:4389 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(closctx->REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3483);
+      nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 4389);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AType____n_types(closctx->REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:3484 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
+    /* parser/parser_prod.nit:4390 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AType___replace_child[] = "parser_prod::AType::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AType___replace_child[] = "parser_prod::AType::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AType___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;
@@ -19279,7 +23697,7 @@ void parser___parser_prod___AType___replace_child(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___parser_prod;
-  fra.me.line = 3492;
+  fra.me.line = 4398;
   fra.me.meth = LOCATE_parser___parser_prod___AType___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -19291,7 +23709,7 @@ void parser___parser_prod___AType___replace_child(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_prod.nit:3494 */
+  /* parser/parser_prod.nit:4400 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -19306,7 +23724,7 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3495 */
+    /* parser/parser_prod.nit:4401 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -19321,32 +23739,32 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3496 */
+      /* parser/parser_prod.nit:4402 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3496);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4402);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3497 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4403 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast TKwnullable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3497);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4403);
       }
-      /* parser/parser_prod.nit:3498 */
+      /* parser/parser_prod.nit:4404 */
       ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3500 */
+      /* parser/parser_prod.nit:4406 */
       ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3502 */
+    /* parser/parser_prod.nit:4408 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3504 */
+  /* parser/parser_prod.nit:4410 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3504);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4410);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -19356,7 +23774,7 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3505 */
+    /* parser/parser_prod.nit:4411 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -19371,71 +23789,65 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3506 */
+      /* parser/parser_prod.nit:4412 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3506);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4412);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3507 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4413 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3507);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4413);
       }
-      /* parser/parser_prod.nit:3508 */
+      /* parser/parser_prod.nit:4414 */
       ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3510 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3510);
+      /* parser/parser_prod.nit:4416 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4416);
     }
-    /* parser/parser_prod.nit:3512 */
+    /* parser/parser_prod.nit:4418 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3514 */
+  /* parser/parser_prod.nit:4420 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3514);
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 4420);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:3514 */
+      /* parser/parser_prod.nit:4420 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:3515 */
+      /* parser/parser_prod.nit:4421 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3515);
+        nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 4421);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:3516 */
+        /* parser/parser_prod.nit:4422 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -19450,52 +23862,52 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:3517 */
+          /* parser/parser_prod.nit:4423 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3517);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4423);
           }
-          /* parser/parser_prod.nit:3518 */
+          /* parser/parser_prod.nit:4424 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3518);
+            nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 4424);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:3519 */
+          /* parser/parser_prod.nit:4425 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3519);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4425);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:3521 */
+          /* parser/parser_prod.nit:4427 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3521);
+            nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 4427);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:3523 */
+        /* parser/parser_prod.nit:4429 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:3526 */
+  /* parser/parser_prod.nit:4432 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -19510,7 +23922,7 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3527 */
+    /* parser/parser_prod.nit:4433 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -19525,32 +23937,142 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3528 */
+      /* parser/parser_prod.nit:4434 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3528);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4434);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3529 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4435 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3529);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4435);
       }
-      /* parser/parser_prod.nit:3530 */
+      /* parser/parser_prod.nit:4436 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3532 */
+      /* parser/parser_prod.nit:4438 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3534 */
+    /* parser/parser_prod.nit:4440 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AType___visit_all[] = "parser_prod::AType::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AType___n_kwnullable__eq[] = "parser_prod::AType::(parser_nodes::AType::n_kwnullable=)";
+void parser___parser_prod___AType___n_kwnullable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4444;
+  fra.me.meth = LOCATE_parser___parser_prod___AType___n_kwnullable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4446 */
+  ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4447 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4448 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4448);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AType___n_id__eq[] = "parser_prod::AType::(parser_nodes::AType::n_id=)";
+void parser___parser_prod___AType___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4451;
+  fra.me.meth = LOCATE_parser___parser_prod___AType___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4453 */
+  ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4454 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AType___n_annotations__eq[] = "parser_prod::AType::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AType___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4456;
+  fra.me.meth = LOCATE_parser___parser_prod___AType___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4458 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4459 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4460 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4460);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AType___visit_all[] = "parser_prod::AType::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -19558,7 +24080,7 @@ void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3538;
+  fra.me.line = 4465;
   fra.me.meth = LOCATE_parser___parser_prod___AType___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -19569,9 +24091,9 @@ void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3538 */
+  /* parser/parser_prod.nit:4465 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3540 */
+  /* parser/parser_prod.nit:4467 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19587,32 +24109,32 @@ void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3541 */
+    /* parser/parser_prod.nit:4468 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast TKwnullable*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3541);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4468);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3543 */
+  /* parser/parser_prod.nit:4470 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3543);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4470);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3544 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4471 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3544);
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 4471);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AType___visit_all_1));
-  /* parser/parser_prod.nit:3547 */
+  /* parser/parser_prod.nit:4474 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19628,14 +24150,14 @@ void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3548 */
+    /* parser/parser_prod.nit:4475 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3548);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4475);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -19656,20 +24178,20 @@ void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3545 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:4472 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ALabel___empty_init[] = "parser_prod::ALabel::empty_init";
 void parser___parser_prod___ALabel___empty_init(val_t p0, int* init_table){
-  int itpos105 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALabel].i;
+  int itpos104 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALabel].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos105]) return;
+  if (init_table[itpos104]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3553;
+  fra.me.line = 4480;
   fra.me.meth = LOCATE_parser___parser_prod___ALabel___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -19677,19 +24199,19 @@ void parser___parser_prod___ALabel___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos105] = 1;
+  init_table[itpos104] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALabel___init_alabel[] = "parser_prod::ALabel::init_alabel";
 void parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos106 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALabel].i;
+  int itpos105 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALabel].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos106]) return;
+  if (init_table[itpos105]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3555;
+  fra.me.line = 4482;
   fra.me.meth = LOCATE_parser___parser_prod___ALabel___init_alabel;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -19701,41 +24223,41 @@ void parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1, val_t p2, i
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3555 */
+  /* parser/parser_prod.nit:4482 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3560 */
+  /* parser/parser_prod.nit:4487 */
   CALL_parser___parser_prod___ALabel___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:3561 */
+  /* parser/parser_prod.nit:4488 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3561);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4488);
   }
   ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3562 */
+  /* parser/parser_prod.nit:4489 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3562);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4489);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3563 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4490 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3563);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4490);
   }
   ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3564 */
+  /* parser/parser_prod.nit:4491 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3564);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4491);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos106] = 1;
+  init_table[itpos105] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALabel___replace_child[] = "parser_prod::ALabel::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALabel___replace_child[] = "parser_prod::ALabel::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALabel___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;
@@ -19743,7 +24265,7 @@ void parser___parser_prod___ALabel___replace_child(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___parser_prod;
-  fra.me.line = 3567;
+  fra.me.line = 4494;
   fra.me.meth = LOCATE_parser___parser_prod___ALabel___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -19755,11 +24277,11 @@ void parser___parser_prod___ALabel___replace_child(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_prod.nit:3569 */
+  /* parser/parser_prod.nit:4496 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser___parser_prod, 3569);
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser___parser_prod, 4496);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -19769,7 +24291,7 @@ void parser___parser_prod___ALabel___replace_child(val_t p0, val_t p1, val_t p2)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3570 */
+    /* parser/parser_prod.nit:4497 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -19784,32 +24306,32 @@ void parser___parser_prod___ALabel___replace_child(val_t p0, val_t p1, val_t p2)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3571 */
+      /* parser/parser_prod.nit:4498 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3571);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4498);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3572 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4499 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwlabel, ID_parser___parser_nodes___TKwlabel)) /*cast TKwlabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3572);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4499);
       }
-      /* parser/parser_prod.nit:3573 */
+      /* parser/parser_prod.nit:4500 */
       ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3575 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3575);
+      /* parser/parser_prod.nit:4502 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4502);
     }
-    /* parser/parser_prod.nit:3577 */
+    /* parser/parser_prod.nit:4504 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3579 */
+  /* parser/parser_prod.nit:4506 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3579);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4506);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -19819,7 +24341,7 @@ void parser___parser_prod___ALabel___replace_child(val_t p0, val_t p1, val_t p2)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3580 */
+    /* parser/parser_prod.nit:4507 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -19834,39 +24356,83 @@ void parser___parser_prod___ALabel___replace_child(val_t p0, val_t p1, val_t p2)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3581 */
+      /* parser/parser_prod.nit:4508 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3581);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4508);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3582 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4509 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3582);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4509);
       }
-      /* parser/parser_prod.nit:3583 */
+      /* parser/parser_prod.nit:4510 */
       ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3585 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3585);
+      /* parser/parser_prod.nit:4512 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4512);
     }
-    /* parser/parser_prod.nit:3587 */
+    /* parser/parser_prod.nit:4514 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALabel___visit_all[] = "parser_prod::ALabel::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALabel___n_kwlabel__eq[] = "parser_prod::ALabel::(parser_nodes::ALabel::n_kwlabel=)";
+void parser___parser_prod___ALabel___n_kwlabel__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4518;
+  fra.me.meth = LOCATE_parser___parser_prod___ALabel___n_kwlabel__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4520 */
+  ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4521 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALabel___n_id__eq[] = "parser_prod::ALabel::(parser_nodes::ALabel::n_id=)";
+void parser___parser_prod___ALabel___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4523;
+  fra.me.meth = LOCATE_parser___parser_prod___ALabel___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4525 */
+  ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4526 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALabel___visit_all[] = "parser_prod::ALabel::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALabel___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3591;
+  fra.me.line = 4530;
   fra.me.meth = LOCATE_parser___parser_prod___ALabel___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -19876,34 +24442,34 @@ void parser___parser_prod___ALabel___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3593 */
+  /* parser/parser_prod.nit:4532 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser___parser_prod, 3593);
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_parser___parser_prod, 4532);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:3594 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:4533 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3594);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4533);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABlockExpr___empty_init[] = "parser_prod::ABlockExpr::empty_init";
 void parser___parser_prod___ABlockExpr___empty_init(val_t p0, int* init_table){
-  int itpos107 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABlockExpr].i;
+  int itpos106 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABlockExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos107]) return;
+  if (init_table[itpos106]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3598;
+  fra.me.line = 4537;
   fra.me.meth = LOCATE_parser___parser_prod___ABlockExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -19911,20 +24477,20 @@ void parser___parser_prod___ABlockExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos107] = 1;
+  init_table[itpos106] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABlockExpr___init_ablockexpr[] = "parser_prod::ABlockExpr::init_ablockexpr";
 void parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos108 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABlockExpr].i;
+  int itpos107 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABlockExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos108]) return;
+  if (init_table[itpos107]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3600;
+  fra.me.line = 4539;
   fra.me.meth = LOCATE_parser___parser_prod___ABlockExpr___init_ablockexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -19935,12 +24501,12 @@ void parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3605 */
+  /* parser/parser_prod.nit:4544 */
   CALL_parser___parser_prod___ABlockExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABlockExpr___init_ablockexpr_1));
-  /* parser/parser_prod.nit:3611 */
+  /* parser/parser_prod.nit:4550 */
   ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3612 */
+  /* parser/parser_prod.nit:4551 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -19955,15 +24521,15 @@ void parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3613 */
+    /* parser/parser_prod.nit:4552 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3613);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4552);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos108] = 1;
+  init_table[itpos107] = 1;
   return;
 }
   void OC_parser___parser_prod___ABlockExpr___init_ablockexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -19971,7 +24537,7 @@ void parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1, val
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:3606 */
+    /* parser/parser_prod.nit:4545 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -19985,26 +24551,26 @@ void parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3607 */
+    /* parser/parser_prod.nit:4546 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3607);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4546);
     }
-    /* parser/parser_prod.nit:3608 */
+    /* parser/parser_prod.nit:4547 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3608);
+      nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4547);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:3609 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:4548 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ABlockExpr___replace_child[] = "parser_prod::ABlockExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABlockExpr___replace_child[] = "parser_prod::ABlockExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABlockExpr___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;
@@ -20015,7 +24581,7 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3617;
+  fra.me.line = 4556;
   fra.me.meth = LOCATE_parser___parser_prod___ABlockExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20027,50 +24593,44 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3619 */
+  /* parser/parser_prod.nit:4558 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3619);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4558);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:3619 */
+      /* parser/parser_prod.nit:4558 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:3620 */
+      /* parser/parser_prod.nit:4559 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3620);
+        nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4559);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:3621 */
+        /* parser/parser_prod.nit:4560 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -20085,52 +24645,52 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:3622 */
+          /* parser/parser_prod.nit:4561 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3622);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4561);
           }
-          /* parser/parser_prod.nit:3623 */
+          /* parser/parser_prod.nit:4562 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3623);
+            nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4562);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:3624 */
+          /* parser/parser_prod.nit:4563 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3624);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4563);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:3626 */
+          /* parser/parser_prod.nit:4565 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3626);
+            nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4565);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:3628 */
+        /* parser/parser_prod.nit:4567 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:3631 */
+  /* parser/parser_prod.nit:4570 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -20145,7 +24705,7 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3632 */
+    /* parser/parser_prod.nit:4571 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20160,32 +24720,76 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3633 */
+      /* parser/parser_prod.nit:4572 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3633);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4572);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3634 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4573 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast TKwend*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3634);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4573);
       }
-      /* parser/parser_prod.nit:3635 */
+      /* parser/parser_prod.nit:4574 */
       ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3637 */
+      /* parser/parser_prod.nit:4576 */
       ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3639 */
+    /* parser/parser_prod.nit:4578 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABlockExpr___visit_all[] = "parser_prod::ABlockExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABlockExpr___n_kwend__eq[] = "parser_prod::ABlockExpr::(parser_nodes::ABlockExpr::n_kwend=)";
+void parser___parser_prod___ABlockExpr___n_kwend__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4582;
+  fra.me.meth = LOCATE_parser___parser_prod___ABlockExpr___n_kwend__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4584 */
+  ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4585 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4586 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4586);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABlockExpr___visit_all[] = "parser_prod::ABlockExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -20193,7 +24797,7 @@ void parser___parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3643;
+  fra.me.line = 4591;
   fra.me.meth = LOCATE_parser___parser_prod___ABlockExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20204,17 +24808,17 @@ void parser___parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3643 */
+  /* parser/parser_prod.nit:4591 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3645 */
+  /* parser/parser_prod.nit:4593 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3645);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4593);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABlockExpr___visit_all_1));
-  /* parser/parser_prod.nit:3648 */
+  /* parser/parser_prod.nit:4596 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20230,14 +24834,14 @@ void parser___parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3649 */
+    /* parser/parser_prod.nit:4597 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast TKwend*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3649);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4597);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -20258,20 +24862,20 @@ void parser___parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:3646 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:4594 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AVardeclExpr___empty_init[] = "parser_prod::AVardeclExpr::empty_init";
 void parser___parser_prod___AVardeclExpr___empty_init(val_t p0, int* init_table){
-  int itpos109 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr].i;
+  int itpos108 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos109]) return;
+  if (init_table[itpos108]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3654;
+  fra.me.line = 4602;
   fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -20279,20 +24883,20 @@ void parser___parser_prod___AVardeclExpr___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos109] = 1;
+  init_table[itpos108] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AVardeclExpr___init_avardeclexpr[] = "parser_prod::AVardeclExpr::init_avardeclexpr";
 void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
-  int itpos110 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr].i;
+  int itpos109 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos110]) return;
+  if (init_table[itpos109]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3656;
+  fra.me.line = 4604;
   fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___init_avardeclexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -20312,39 +24916,39 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:3656 */
+  /* parser/parser_prod.nit:4604 */
   fra.me.REG[7] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3665 */
+  /* parser/parser_prod.nit:4613 */
   CALL_parser___parser_prod___AVardeclExpr___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
-  /* parser/parser_prod.nit:3666 */
+  /* parser/parser_prod.nit:4614 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3666);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4614);
   }
   ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[7]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3667 */
+  /* parser/parser_prod.nit:4615 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3667);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4615);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-  /* parser/parser_prod.nit:3668 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+  /* parser/parser_prod.nit:4616 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3668);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4616);
   }
   ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[7]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3669 */
+  /* parser/parser_prod.nit:4617 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3669);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4617);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-  /* parser/parser_prod.nit:3670 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+  /* parser/parser_prod.nit:4618 */
   ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[7]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3671 */
+  /* parser/parser_prod.nit:4619 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -20359,16 +24963,16 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3672 */
+    /* parser/parser_prod.nit:4620 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3672);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4620);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:3674 */
+  /* parser/parser_prod.nit:4622 */
   ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[7]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:3675 */
+  /* parser/parser_prod.nit:4623 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -20383,16 +24987,16 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3676 */
+    /* parser/parser_prod.nit:4624 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3676);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4624);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:3678 */
+  /* parser/parser_prod.nit:4626 */
   ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[7]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:3679 */
+  /* parser/parser_prod.nit:4627 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -20407,16 +25011,16 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3680 */
+    /* parser/parser_prod.nit:4628 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3680);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4628);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:3682 */
+  /* parser/parser_prod.nit:4630 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[7]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:3683 */
+  /* parser/parser_prod.nit:4631 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -20431,18 +25035,18 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3684 */
+    /* parser/parser_prod.nit:4632 */
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3684);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4632);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos110] = 1;
+  init_table[itpos109] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVardeclExpr___replace_child[] = "parser_prod::AVardeclExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AVardeclExpr___replace_child[] = "parser_prod::AVardeclExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AVardeclExpr___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;
@@ -20450,7 +25054,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3688;
+  fra.me.line = 4636;
   fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20462,11 +25066,11 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3690 */
+  /* parser/parser_prod.nit:4638 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 3690);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 4638);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -20476,7 +25080,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3691 */
+    /* parser/parser_prod.nit:4639 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20491,32 +25095,32 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3692 */
+      /* parser/parser_prod.nit:4640 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3692);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4640);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3693 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4641 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast TKwvar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3693);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4641);
       }
-      /* parser/parser_prod.nit:3694 */
+      /* parser/parser_prod.nit:4642 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3696 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3696);
+      /* parser/parser_prod.nit:4644 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4644);
     }
-    /* parser/parser_prod.nit:3698 */
+    /* parser/parser_prod.nit:4646 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3700 */
+  /* parser/parser_prod.nit:4648 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3700);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4648);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -20526,7 +25130,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3701 */
+    /* parser/parser_prod.nit:4649 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20541,28 +25145,28 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3702 */
+      /* parser/parser_prod.nit:4650 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3702);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4650);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3703 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4651 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3703);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4651);
       }
-      /* parser/parser_prod.nit:3704 */
+      /* parser/parser_prod.nit:4652 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3706 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3706);
+      /* parser/parser_prod.nit:4654 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4654);
     }
-    /* parser/parser_prod.nit:3708 */
+    /* parser/parser_prod.nit:4656 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3710 */
+  /* parser/parser_prod.nit:4658 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -20577,7 +25181,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3711 */
+    /* parser/parser_prod.nit:4659 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20592,28 +25196,28 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3712 */
+      /* parser/parser_prod.nit:4660 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3712);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4660);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3713 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4661 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3713);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4661);
       }
-      /* parser/parser_prod.nit:3714 */
+      /* parser/parser_prod.nit:4662 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3716 */
+      /* parser/parser_prod.nit:4664 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3718 */
+    /* parser/parser_prod.nit:4666 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3720 */
+  /* parser/parser_prod.nit:4668 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -20628,7 +25232,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3721 */
+    /* parser/parser_prod.nit:4669 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20643,28 +25247,28 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3722 */
+      /* parser/parser_prod.nit:4670 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3722);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4670);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3723 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4671 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3723);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4671);
       }
-      /* parser/parser_prod.nit:3724 */
+      /* parser/parser_prod.nit:4672 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3726 */
+      /* parser/parser_prod.nit:4674 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3728 */
+    /* parser/parser_prod.nit:4676 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3730 */
+  /* parser/parser_prod.nit:4678 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -20679,7 +25283,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3731 */
+    /* parser/parser_prod.nit:4679 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20694,28 +25298,28 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3732 */
+      /* parser/parser_prod.nit:4680 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3732);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4680);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3733 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4681 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3733);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4681);
       }
-      /* parser/parser_prod.nit:3734 */
+      /* parser/parser_prod.nit:4682 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3736 */
+      /* parser/parser_prod.nit:4684 */
       ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3738 */
+    /* parser/parser_prod.nit:4686 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3740 */
+  /* parser/parser_prod.nit:4688 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -20730,7 +25334,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3741 */
+    /* parser/parser_prod.nit:4689 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -20745,32 +25349,252 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3742 */
+      /* parser/parser_prod.nit:4690 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3742);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4690);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3743 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4691 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3743);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4691);
       }
-      /* parser/parser_prod.nit:3744 */
+      /* parser/parser_prod.nit:4692 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3746 */
+      /* parser/parser_prod.nit:4694 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3748 */
+    /* parser/parser_prod.nit:4696 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVardeclExpr___visit_all[] = "parser_prod::AVardeclExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AVardeclExpr___n_kwvar__eq[] = "parser_prod::AVardeclExpr::(parser_nodes::AVardeclExpr::n_kwvar=)";
+void parser___parser_prod___AVardeclExpr___n_kwvar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4700;
+  fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___n_kwvar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4702 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4703 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVardeclExpr___n_id__eq[] = "parser_prod::AVardeclExpr::(parser_nodes::AVardeclExpr::n_id=)";
+void parser___parser_prod___AVardeclExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4705;
+  fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4707 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4708 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVardeclExpr___n_type__eq[] = "parser_prod::AVardeclExpr::(parser_nodes::AVardeclExpr::n_type=)";
+void parser___parser_prod___AVardeclExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4710;
+  fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4712 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4713 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4714 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4714);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVardeclExpr___n_assign__eq[] = "parser_prod::AVardeclExpr::(parser_nodes::AVardeclExpr::n_assign=)";
+void parser___parser_prod___AVardeclExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4717;
+  fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4719 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4720 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4721 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4721);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVardeclExpr___n_expr__eq[] = "parser_prod::AVardeclExpr::(parser_nodes::AVardeclExpr::n_expr=)";
+void parser___parser_prod___AVardeclExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4724;
+  fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4726 */
+  ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4727 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4728 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4728);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVardeclExpr___n_annotations__eq[] = "parser_prod::AVardeclExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AVardeclExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4731;
+  fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4733 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4734 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4735 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4735);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVardeclExpr___visit_all[] = "parser_prod::AVardeclExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -20778,7 +25602,7 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3752;
+  fra.me.line = 4740;
   fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20789,25 +25613,25 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3752 */
+  /* parser/parser_prod.nit:4740 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3754 */
+  /* parser/parser_prod.nit:4742 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 3754);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_parser___parser_prod, 4742);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3755 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4743 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 3755);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 4743);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3756 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4744 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20823,16 +25647,16 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3757 */
+    /* parser/parser_prod.nit:4745 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3757);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4745);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3759 */
+  /* parser/parser_prod.nit:4747 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20848,16 +25672,16 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3760 */
+    /* parser/parser_prod.nit:4748 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3760);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4748);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3762 */
+  /* parser/parser_prod.nit:4750 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20873,16 +25697,16 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3763 */
+    /* parser/parser_prod.nit:4751 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3763);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4751);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3765 */
+  /* parser/parser_prod.nit:4753 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20898,27 +25722,27 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3766 */
+    /* parser/parser_prod.nit:4754 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3766);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4754);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AReturnExpr___empty_init[] = "parser_prod::AReturnExpr::empty_init";
 void parser___parser_prod___AReturnExpr___empty_init(val_t p0, int* init_table){
-  int itpos111 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReturnExpr].i;
+  int itpos110 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReturnExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos111]) return;
+  if (init_table[itpos110]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3771;
+  fra.me.line = 4759;
   fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -20926,20 +25750,20 @@ void parser___parser_prod___AReturnExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos111] = 1;
+  init_table[itpos110] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AReturnExpr___init_areturnexpr[] = "parser_prod::AReturnExpr::init_areturnexpr";
 void parser___parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos112 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReturnExpr].i;
+  int itpos111 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AReturnExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos112]) return;
+  if (init_table[itpos111]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3773;
+  fra.me.line = 4761;
   fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___init_areturnexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -20950,11 +25774,11 @@ void parser___parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3778 */
+  /* parser/parser_prod.nit:4766 */
   CALL_parser___parser_prod___AReturnExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* parser/parser_prod.nit:3779 */
+  /* parser/parser_prod.nit:4767 */
   ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3780 */
+  /* parser/parser_prod.nit:4768 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -20969,16 +25793,16 @@ void parser___parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3781 */
+    /* parser/parser_prod.nit:4769 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3781);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4769);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* parser/parser_prod.nit:3783 */
+  /* parser/parser_prod.nit:4771 */
   ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3784 */
+  /* parser/parser_prod.nit:4772 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -20993,18 +25817,18 @@ void parser___parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3785 */
+    /* parser/parser_prod.nit:4773 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3785);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4773);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos112] = 1;
+  init_table[itpos111] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AReturnExpr___replace_child[] = "parser_prod::AReturnExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AReturnExpr___replace_child[] = "parser_prod::AReturnExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AReturnExpr___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;
@@ -21012,7 +25836,7 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3789;
+  fra.me.line = 4777;
   fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21024,7 +25848,7 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3791 */
+  /* parser/parser_prod.nit:4779 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21039,7 +25863,7 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3792 */
+    /* parser/parser_prod.nit:4780 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21054,28 +25878,28 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3793 */
+      /* parser/parser_prod.nit:4781 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3793);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4781);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3794 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4782 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast TKwreturn*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3794);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4782);
       }
-      /* parser/parser_prod.nit:3795 */
+      /* parser/parser_prod.nit:4783 */
       ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3797 */
+      /* parser/parser_prod.nit:4785 */
       ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3799 */
+    /* parser/parser_prod.nit:4787 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3801 */
+  /* parser/parser_prod.nit:4789 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21090,7 +25914,7 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3802 */
+    /* parser/parser_prod.nit:4790 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21105,32 +25929,120 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3803 */
+      /* parser/parser_prod.nit:4791 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3803);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4791);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3804 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4792 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3804);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4792);
       }
-      /* parser/parser_prod.nit:3805 */
+      /* parser/parser_prod.nit:4793 */
       ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3807 */
+      /* parser/parser_prod.nit:4795 */
       ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3809 */
+    /* parser/parser_prod.nit:4797 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AReturnExpr___visit_all[] = "parser_prod::AReturnExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AReturnExpr___n_kwreturn__eq[] = "parser_prod::AReturnExpr::(parser_nodes::AReturnExpr::n_kwreturn=)";
+void parser___parser_prod___AReturnExpr___n_kwreturn__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4801;
+  fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___n_kwreturn__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4803 */
+  ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4804 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4805 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4805);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AReturnExpr___n_expr__eq[] = "parser_prod::AReturnExpr::(parser_nodes::AReturnExpr::n_expr=)";
+void parser___parser_prod___AReturnExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4808;
+  fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4810 */
+  ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4811 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4812 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4812);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AReturnExpr___visit_all[] = "parser_prod::AReturnExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -21138,7 +26050,7 @@ void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3813;
+  fra.me.line = 4817;
   fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21149,9 +26061,9 @@ void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3813 */
+  /* parser/parser_prod.nit:4817 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3815 */
+  /* parser/parser_prod.nit:4819 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21167,16 +26079,16 @@ void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3816 */
+    /* parser/parser_prod.nit:4820 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast TKwreturn*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3816);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4820);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3818 */
+  /* parser/parser_prod.nit:4822 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21192,27 +26104,27 @@ void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3819 */
+    /* parser/parser_prod.nit:4823 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3819);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4823);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABreakExpr___empty_init[] = "parser_prod::ABreakExpr::empty_init";
 void parser___parser_prod___ABreakExpr___empty_init(val_t p0, int* init_table){
-  int itpos113 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakExpr].i;
+  int itpos112 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos113]) return;
+  if (init_table[itpos112]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3824;
+  fra.me.line = 4828;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -21220,20 +26132,20 @@ void parser___parser_prod___ABreakExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos113] = 1;
+  init_table[itpos112] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABreakExpr___init_abreakexpr[] = "parser_prod::ABreakExpr::init_abreakexpr";
 void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos114 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakExpr].i;
+  int itpos113 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos114]) return;
+  if (init_table[itpos113]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3826;
+  fra.me.line = 4830;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___init_abreakexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -21247,26 +26159,26 @@ void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:3826 */
+  /* parser/parser_prod.nit:4830 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3832 */
+  /* parser/parser_prod.nit:4836 */
   CALL_parser___parser_prod___ABreakExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:3833 */
+  /* parser/parser_prod.nit:4837 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3833);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4837);
   }
   ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3834 */
+  /* parser/parser_prod.nit:4838 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3834);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4838);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:3835 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:4839 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3836 */
+  /* parser/parser_prod.nit:4840 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -21281,16 +26193,16 @@ void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3837 */
+    /* parser/parser_prod.nit:4841 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3837);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4841);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:3839 */
+  /* parser/parser_prod.nit:4843 */
   ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3840 */
+  /* parser/parser_prod.nit:4844 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -21305,18 +26217,18 @@ void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3841 */
+    /* parser/parser_prod.nit:4845 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3841);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4845);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos114] = 1;
+  init_table[itpos113] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABreakExpr___replace_child[] = "parser_prod::ABreakExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABreakExpr___replace_child[] = "parser_prod::ABreakExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABreakExpr___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;
@@ -21324,7 +26236,7 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3845;
+  fra.me.line = 4849;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21336,11 +26248,11 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3847 */
+  /* parser/parser_prod.nit:4851 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 3847);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 4851);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -21350,7 +26262,7 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3848 */
+    /* parser/parser_prod.nit:4852 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21365,28 +26277,28 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3849 */
+      /* parser/parser_prod.nit:4853 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3849);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4853);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3850 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4854 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast TKwbreak*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3850);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4854);
       }
-      /* parser/parser_prod.nit:3851 */
+      /* parser/parser_prod.nit:4855 */
       ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3853 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3853);
+      /* parser/parser_prod.nit:4857 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4857);
     }
-    /* parser/parser_prod.nit:3855 */
+    /* parser/parser_prod.nit:4859 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3857 */
+  /* parser/parser_prod.nit:4861 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21401,7 +26313,7 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3858 */
+    /* parser/parser_prod.nit:4862 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21416,28 +26328,28 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3859 */
+      /* parser/parser_prod.nit:4863 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3859);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4863);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3860 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4864 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3860);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4864);
       }
-      /* parser/parser_prod.nit:3861 */
+      /* parser/parser_prod.nit:4865 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3863 */
+      /* parser/parser_prod.nit:4867 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3865 */
+    /* parser/parser_prod.nit:4869 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3867 */
+  /* parser/parser_prod.nit:4871 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21452,7 +26364,7 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3868 */
+    /* parser/parser_prod.nit:4872 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21467,32 +26379,142 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3869 */
+      /* parser/parser_prod.nit:4873 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3869);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4873);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3870 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4874 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3870);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4874);
       }
-      /* parser/parser_prod.nit:3871 */
+      /* parser/parser_prod.nit:4875 */
       ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3873 */
+      /* parser/parser_prod.nit:4877 */
       ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3875 */
+    /* parser/parser_prod.nit:4879 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABreakExpr___visit_all[] = "parser_prod::ABreakExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABreakExpr___n_kwbreak__eq[] = "parser_prod::ABreakExpr::(parser_nodes::ABreakExpr::n_kwbreak=)";
+void parser___parser_prod___ABreakExpr___n_kwbreak__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4883;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___n_kwbreak__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4885 */
+  ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4886 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABreakExpr___n_label__eq[] = "parser_prod::ABreakExpr::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___ABreakExpr___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4888;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4890 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4891 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4892 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4892);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABreakExpr___n_expr__eq[] = "parser_prod::ABreakExpr::(parser_nodes::ABreakExpr::n_expr=)";
+void parser___parser_prod___ABreakExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4895;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4897 */
+  ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4898 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:4899 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4899);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABreakExpr___visit_all[] = "parser_prod::ABreakExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -21500,7 +26522,7 @@ void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3879;
+  fra.me.line = 4904;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21511,17 +26533,17 @@ void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3879 */
+  /* parser/parser_prod.nit:4904 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3881 */
+  /* parser/parser_prod.nit:4906 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 3881);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 4906);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:3882 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:4907 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21537,16 +26559,16 @@ void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3883 */
+    /* parser/parser_prod.nit:4908 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3883);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4908);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3885 */
+  /* parser/parser_prod.nit:4910 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21562,27 +26584,27 @@ void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3886 */
+    /* parser/parser_prod.nit:4911 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3886);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4911);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAbortExpr___empty_init[] = "parser_prod::AAbortExpr::empty_init";
 void parser___parser_prod___AAbortExpr___empty_init(val_t p0, int* init_table){
-  int itpos115 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbortExpr].i;
+  int itpos114 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbortExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos115]) return;
+  if (init_table[itpos114]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3891;
+  fra.me.line = 4916;
   fra.me.meth = LOCATE_parser___parser_prod___AAbortExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -21590,19 +26612,19 @@ void parser___parser_prod___AAbortExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos115] = 1;
+  init_table[itpos114] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAbortExpr___init_aabortexpr[] = "parser_prod::AAbortExpr::init_aabortexpr";
 void parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p0, val_t p1, int* init_table){
-  int itpos116 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbortExpr].i;
+  int itpos115 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAbortExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos116]) return;
+  if (init_table[itpos115]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3893;
+  fra.me.line = 4918;
   fra.me.meth = LOCATE_parser___parser_prod___AAbortExpr___init_aabortexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -21612,28 +26634,28 @@ void parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p0, val_t p1, int
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3893 */
+  /* parser/parser_prod.nit:4918 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3897 */
+  /* parser/parser_prod.nit:4922 */
   CALL_parser___parser_prod___AAbortExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:3898 */
+  /* parser/parser_prod.nit:4923 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3898);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4923);
   }
   ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3899 */
+  /* parser/parser_prod.nit:4924 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3899);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4924);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos116] = 1;
+  init_table[itpos115] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAbortExpr___replace_child[] = "parser_prod::AAbortExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAbortExpr___replace_child[] = "parser_prod::AAbortExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAbortExpr___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;
@@ -21641,7 +26663,7 @@ void parser___parser_prod___AAbortExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3902;
+  fra.me.line = 4927;
   fra.me.meth = LOCATE_parser___parser_prod___AAbortExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21653,11 +26675,11 @@ void parser___parser_prod___AAbortExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3904 */
+  /* parser/parser_prod.nit:4929 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser___parser_prod, 3904);
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser___parser_prod, 4929);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -21667,7 +26689,7 @@ void parser___parser_prod___AAbortExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3905 */
+    /* parser/parser_prod.nit:4930 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21682,39 +26704,61 @@ void parser___parser_prod___AAbortExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3906 */
+      /* parser/parser_prod.nit:4931 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3906);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4931);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3907 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4932 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwabort, ID_parser___parser_nodes___TKwabort)) /*cast TKwabort*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3907);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4932);
       }
-      /* parser/parser_prod.nit:3908 */
+      /* parser/parser_prod.nit:4933 */
       ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3910 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 3910);
+      /* parser/parser_prod.nit:4935 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4935);
     }
-    /* parser/parser_prod.nit:3912 */
+    /* parser/parser_prod.nit:4937 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAbortExpr___visit_all[] = "parser_prod::AAbortExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAbortExpr___n_kwabort__eq[] = "parser_prod::AAbortExpr::(parser_nodes::AAbortExpr::n_kwabort=)";
+void parser___parser_prod___AAbortExpr___n_kwabort__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 4941;
+  fra.me.meth = LOCATE_parser___parser_prod___AAbortExpr___n_kwabort__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4943 */
+  ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:4944 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAbortExpr___visit_all[] = "parser_prod::AAbortExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAbortExpr___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___parser_prod;
-  fra.me.line = 3916;
+  fra.me.line = 4948;
   fra.me.meth = LOCATE_parser___parser_prod___AAbortExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21723,26 +26767,26 @@ void parser___parser_prod___AAbortExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3918 */
+  /* parser/parser_prod.nit:4950 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser___parser_prod, 3918);
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_parser___parser_prod, 4950);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AContinueExpr___empty_init[] = "parser_prod::AContinueExpr::empty_init";
 void parser___parser_prod___AContinueExpr___empty_init(val_t p0, int* init_table){
-  int itpos117 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AContinueExpr].i;
+  int itpos116 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AContinueExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos117]) return;
+  if (init_table[itpos116]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3922;
+  fra.me.line = 4954;
   fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -21750,20 +26794,20 @@ void parser___parser_prod___AContinueExpr___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos117] = 1;
+  init_table[itpos116] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AContinueExpr___init_acontinueexpr[] = "parser_prod::AContinueExpr::init_acontinueexpr";
 void parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos118 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AContinueExpr].i;
+  int itpos117 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AContinueExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos118]) return;
+  if (init_table[itpos117]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3924;
+  fra.me.line = 4956;
   fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___init_acontinueexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21776,11 +26820,11 @@ void parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:3930 */
+  /* parser/parser_prod.nit:4962 */
   CALL_parser___parser_prod___AContinueExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* parser/parser_prod.nit:3931 */
+  /* parser/parser_prod.nit:4963 */
   ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:3932 */
+  /* parser/parser_prod.nit:4964 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -21795,16 +26839,16 @@ void parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3933 */
+    /* parser/parser_prod.nit:4965 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3933);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4965);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* parser/parser_prod.nit:3935 */
+  /* parser/parser_prod.nit:4967 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:3936 */
+  /* parser/parser_prod.nit:4968 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -21819,16 +26863,16 @@ void parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3937 */
+    /* parser/parser_prod.nit:4969 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3937);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4969);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
-  /* parser/parser_prod.nit:3939 */
+  /* parser/parser_prod.nit:4971 */
   ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:3940 */
+  /* parser/parser_prod.nit:4972 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -21843,18 +26887,18 @@ void parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3941 */
+    /* parser/parser_prod.nit:4973 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3941);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4973);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos118] = 1;
+  init_table[itpos117] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AContinueExpr___replace_child[] = "parser_prod::AContinueExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AContinueExpr___replace_child[] = "parser_prod::AContinueExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AContinueExpr___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;
@@ -21862,7 +26906,7 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3945;
+  fra.me.line = 4977;
   fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21874,7 +26918,7 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:3947 */
+  /* parser/parser_prod.nit:4979 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21889,7 +26933,7 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3948 */
+    /* parser/parser_prod.nit:4980 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21904,28 +26948,28 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3949 */
+      /* parser/parser_prod.nit:4981 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3949);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4981);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3950 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4982 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast TKwcontinue*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3950);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4982);
       }
-      /* parser/parser_prod.nit:3951 */
+      /* parser/parser_prod.nit:4983 */
       ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3953 */
+      /* parser/parser_prod.nit:4985 */
       ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3955 */
+    /* parser/parser_prod.nit:4987 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3957 */
+  /* parser/parser_prod.nit:4989 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21940,7 +26984,7 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3958 */
+    /* parser/parser_prod.nit:4990 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -21955,28 +26999,28 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3959 */
+      /* parser/parser_prod.nit:4991 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3959);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4991);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3960 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:4992 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3960);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4992);
       }
-      /* parser/parser_prod.nit:3961 */
+      /* parser/parser_prod.nit:4993 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3963 */
+      /* parser/parser_prod.nit:4995 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3965 */
+    /* parser/parser_prod.nit:4997 */
     goto label1;
   }
-  /* parser/parser_prod.nit:3967 */
+  /* parser/parser_prod.nit:4999 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -21991,7 +27035,7 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3968 */
+    /* parser/parser_prod.nit:5000 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22006,32 +27050,164 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:3969 */
+      /* parser/parser_prod.nit:5001 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3969);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5001);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:3970 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5002 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3970);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5002);
       }
-      /* parser/parser_prod.nit:3971 */
+      /* parser/parser_prod.nit:5003 */
       ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:3973 */
+      /* parser/parser_prod.nit:5005 */
       ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:3975 */
+    /* parser/parser_prod.nit:5007 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AContinueExpr___visit_all[] = "parser_prod::AContinueExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AContinueExpr___n_kwcontinue__eq[] = "parser_prod::AContinueExpr::(parser_nodes::AContinueExpr::n_kwcontinue=)";
+void parser___parser_prod___AContinueExpr___n_kwcontinue__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5011;
+  fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___n_kwcontinue__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5013 */
+  ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5014 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5015 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5015);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AContinueExpr___n_label__eq[] = "parser_prod::AContinueExpr::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___AContinueExpr___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5018;
+  fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5020 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5021 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5022 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5022);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AContinueExpr___n_expr__eq[] = "parser_prod::AContinueExpr::(parser_nodes::AContinueExpr::n_expr=)";
+void parser___parser_prod___AContinueExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5025;
+  fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5027 */
+  ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5028 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5029 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5029);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AContinueExpr___visit_all[] = "parser_prod::AContinueExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -22039,7 +27215,7 @@ void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3979;
+  fra.me.line = 5034;
   fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -22050,9 +27226,9 @@ void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:3979 */
+  /* parser/parser_prod.nit:5034 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:3981 */
+  /* parser/parser_prod.nit:5036 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22068,16 +27244,16 @@ void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3982 */
+    /* parser/parser_prod.nit:5037 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast TKwcontinue*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3982);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5037);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3984 */
+  /* parser/parser_prod.nit:5039 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22093,16 +27269,16 @@ void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3985 */
+    /* parser/parser_prod.nit:5040 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3985);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5040);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:3987 */
+  /* parser/parser_prod.nit:5042 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22118,27 +27294,27 @@ void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:3988 */
+    /* parser/parser_prod.nit:5043 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3988);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5043);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADoExpr___empty_init[] = "parser_prod::ADoExpr::empty_init";
 void parser___parser_prod___ADoExpr___empty_init(val_t p0, int* init_table){
-  int itpos119 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoExpr].i;
+  int itpos118 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos119]) return;
+  if (init_table[itpos118]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3993;
+  fra.me.line = 5048;
   fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -22146,20 +27322,20 @@ void parser___parser_prod___ADoExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos119] = 1;
+  init_table[itpos118] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADoExpr___init_adoexpr[] = "parser_prod::ADoExpr::init_adoexpr";
 void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos120 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoExpr].i;
+  int itpos119 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos120]) return;
+  if (init_table[itpos119]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 3995;
+  fra.me.line = 5050;
   fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___init_adoexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -22173,26 +27349,26 @@ void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:3995 */
+  /* parser/parser_prod.nit:5050 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4001 */
+  /* parser/parser_prod.nit:5056 */
   CALL_parser___parser_prod___ADoExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:4002 */
+  /* parser/parser_prod.nit:5057 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4002);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5057);
   }
   ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4003 */
+  /* parser/parser_prod.nit:5058 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4003);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5058);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:4004 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:5059 */
   ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4005 */
+  /* parser/parser_prod.nit:5060 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -22207,16 +27383,16 @@ void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4006 */
+    /* parser/parser_prod.nit:5061 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4006);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5061);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:4008 */
+  /* parser/parser_prod.nit:5063 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4009 */
+  /* parser/parser_prod.nit:5064 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -22231,18 +27407,18 @@ void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4010 */
+    /* parser/parser_prod.nit:5065 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4010);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5065);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos120] = 1;
+  init_table[itpos119] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADoExpr___replace_child[] = "parser_prod::ADoExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ADoExpr___replace_child[] = "parser_prod::ADoExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ADoExpr___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;
@@ -22250,7 +27426,7 @@ void parser___parser_prod___ADoExpr___replace_child(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___parser_prod;
-  fra.me.line = 4014;
+  fra.me.line = 5069;
   fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -22262,11 +27438,11 @@ void parser___parser_prod___ADoExpr___replace_child(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_prod.nit:4016 */
+  /* parser/parser_prod.nit:5071 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 4016);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 5071);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -22276,7 +27452,7 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4017 */
+    /* parser/parser_prod.nit:5072 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22291,28 +27467,28 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4018 */
+      /* parser/parser_prod.nit:5073 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4018);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5073);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4019 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5074 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast TKwdo*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4019);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5074);
       }
-      /* parser/parser_prod.nit:4020 */
+      /* parser/parser_prod.nit:5075 */
       ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4022 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4022);
+      /* parser/parser_prod.nit:5077 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5077);
     }
-    /* parser/parser_prod.nit:4024 */
+    /* parser/parser_prod.nit:5079 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4026 */
+  /* parser/parser_prod.nit:5081 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -22327,7 +27503,7 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4027 */
+    /* parser/parser_prod.nit:5082 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22342,28 +27518,28 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4028 */
+      /* parser/parser_prod.nit:5083 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4028);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5083);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4029 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5084 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4029);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5084);
       }
-      /* parser/parser_prod.nit:4030 */
+      /* parser/parser_prod.nit:5085 */
       ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4032 */
+      /* parser/parser_prod.nit:5087 */
       ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4034 */
+    /* parser/parser_prod.nit:5089 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4036 */
+  /* parser/parser_prod.nit:5091 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -22378,7 +27554,7 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4037 */
+    /* parser/parser_prod.nit:5092 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22393,32 +27569,142 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4038 */
+      /* parser/parser_prod.nit:5093 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4038);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5093);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4039 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5094 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4039);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5094);
       }
-      /* parser/parser_prod.nit:4040 */
+      /* parser/parser_prod.nit:5095 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4042 */
+      /* parser/parser_prod.nit:5097 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4044 */
+    /* parser/parser_prod.nit:5099 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADoExpr___visit_all[] = "parser_prod::ADoExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ADoExpr___n_kwdo__eq[] = "parser_prod::ADoExpr::(parser_nodes::ADoExpr::n_kwdo=)";
+void parser___parser_prod___ADoExpr___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5103;
+  fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5105 */
+  ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5106 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADoExpr___n_block__eq[] = "parser_prod::ADoExpr::(parser_nodes::ADoExpr::n_block=)";
+void parser___parser_prod___ADoExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5108;
+  fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5110 */
+  ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5111 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5112 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5112);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADoExpr___n_label__eq[] = "parser_prod::ADoExpr::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___ADoExpr___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5115;
+  fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5117 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5118 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5119 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5119);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADoExpr___visit_all[] = "parser_prod::ADoExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -22426,7 +27712,7 @@ void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4048;
+  fra.me.line = 5124;
   fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -22437,17 +27723,17 @@ void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4048 */
+  /* parser/parser_prod.nit:5124 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4050 */
+  /* parser/parser_prod.nit:5126 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 4050);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 5126);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4051 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5127 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22463,16 +27749,16 @@ void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4052 */
+    /* parser/parser_prod.nit:5128 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4052);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5128);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:4054 */
+  /* parser/parser_prod.nit:5130 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22488,27 +27774,27 @@ void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4055 */
+    /* parser/parser_prod.nit:5131 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4055);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5131);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIfExpr___empty_init[] = "parser_prod::AIfExpr::empty_init";
 void parser___parser_prod___AIfExpr___empty_init(val_t p0, int* init_table){
-  int itpos121 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfExpr].i;
+  int itpos120 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos121]) return;
+  if (init_table[itpos120]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4060;
+  fra.me.line = 5136;
   fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -22516,20 +27802,20 @@ void parser___parser_prod___AIfExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos121] = 1;
+  init_table[itpos120] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIfExpr___init_aifexpr[] = "parser_prod::AIfExpr::init_aifexpr";
 void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos122 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfExpr].i;
+  int itpos121 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos122]) return;
+  if (init_table[itpos121]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4062;
+  fra.me.line = 5138;
   fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___init_aifexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22545,39 +27831,39 @@ void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2,
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:4062 */
+  /* parser/parser_prod.nit:5138 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4069 */
+  /* parser/parser_prod.nit:5145 */
   CALL_parser___parser_prod___AIfExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:4070 */
+  /* parser/parser_prod.nit:5146 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4070);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5146);
   }
   ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4071 */
+  /* parser/parser_prod.nit:5147 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4071);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5147);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:4072 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:5148 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4072);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5148);
   }
   ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4073 */
+  /* parser/parser_prod.nit:5149 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4073);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5149);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:4074 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:5150 */
   ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4075 */
+  /* parser/parser_prod.nit:5151 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -22592,16 +27878,16 @@ void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4076 */
+    /* parser/parser_prod.nit:5152 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4076);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5152);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:4078 */
+  /* parser/parser_prod.nit:5154 */
   ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:4079 */
+  /* parser/parser_prod.nit:5155 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -22616,18 +27902,18 @@ void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4080 */
+    /* parser/parser_prod.nit:5156 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4080);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5156);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos122] = 1;
+  init_table[itpos121] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIfExpr___replace_child[] = "parser_prod::AIfExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIfExpr___replace_child[] = "parser_prod::AIfExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIfExpr___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;
@@ -22635,7 +27921,7 @@ void parser___parser_prod___AIfExpr___replace_child(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___parser_prod;
-  fra.me.line = 4084;
+  fra.me.line = 5160;
   fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -22647,11 +27933,11 @@ void parser___parser_prod___AIfExpr___replace_child(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_prod.nit:4086 */
+  /* parser/parser_prod.nit:5162 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 4086);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 5162);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -22661,7 +27947,7 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4087 */
+    /* parser/parser_prod.nit:5163 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22676,32 +27962,32 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4088 */
+      /* parser/parser_prod.nit:5164 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4088);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5164);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4089 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5165 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast TKwif*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4089);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5165);
       }
-      /* parser/parser_prod.nit:4090 */
+      /* parser/parser_prod.nit:5166 */
       ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4092 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4092);
+      /* parser/parser_prod.nit:5168 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5168);
     }
-    /* parser/parser_prod.nit:4094 */
+    /* parser/parser_prod.nit:5170 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4096 */
+  /* parser/parser_prod.nit:5172 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4096);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5172);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -22711,7 +27997,7 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4097 */
+    /* parser/parser_prod.nit:5173 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22726,28 +28012,28 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4098 */
+      /* parser/parser_prod.nit:5174 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4098);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5174);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4099 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5175 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4099);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5175);
       }
-      /* parser/parser_prod.nit:4100 */
+      /* parser/parser_prod.nit:5176 */
       ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4102 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4102);
+      /* parser/parser_prod.nit:5178 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5178);
     }
-    /* parser/parser_prod.nit:4104 */
+    /* parser/parser_prod.nit:5180 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4106 */
+  /* parser/parser_prod.nit:5182 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -22762,7 +28048,7 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4107 */
+    /* parser/parser_prod.nit:5183 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22777,28 +28063,28 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4108 */
+      /* parser/parser_prod.nit:5184 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4108);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5184);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4109 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5185 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4109);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5185);
       }
-      /* parser/parser_prod.nit:4110 */
+      /* parser/parser_prod.nit:5186 */
       ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4112 */
+      /* parser/parser_prod.nit:5188 */
       ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4114 */
+    /* parser/parser_prod.nit:5190 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4116 */
+  /* parser/parser_prod.nit:5192 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -22813,7 +28099,7 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4117 */
+    /* parser/parser_prod.nit:5193 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -22828,32 +28114,164 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4118 */
+      /* parser/parser_prod.nit:5194 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4118);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5194);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4119 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5195 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4119);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5195);
       }
-      /* parser/parser_prod.nit:4120 */
+      /* parser/parser_prod.nit:5196 */
       ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4122 */
+      /* parser/parser_prod.nit:5198 */
       ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4124 */
+    /* parser/parser_prod.nit:5200 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIfExpr___visit_all[] = "parser_prod::AIfExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIfExpr___n_kwif__eq[] = "parser_prod::AIfExpr::(parser_nodes::AIfExpr::n_kwif=)";
+void parser___parser_prod___AIfExpr___n_kwif__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5204;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___n_kwif__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5206 */
+  ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5207 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfExpr___n_expr__eq[] = "parser_prod::AIfExpr::(parser_nodes::AIfExpr::n_expr=)";
+void parser___parser_prod___AIfExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5209;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5211 */
+  ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5212 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfExpr___n_then__eq[] = "parser_prod::AIfExpr::(parser_nodes::AIfExpr::n_then=)";
+void parser___parser_prod___AIfExpr___n_then__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5214;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___n_then__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5216 */
+  ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5217 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5218 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5218);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfExpr___n_else__eq[] = "parser_prod::AIfExpr::(parser_nodes::AIfExpr::n_else=)";
+void parser___parser_prod___AIfExpr___n_else__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5221;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___n_else__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5223 */
+  ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5224 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5225 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5225);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfExpr___visit_all[] = "parser_prod::AIfExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -22861,7 +28279,7 @@ void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4128;
+  fra.me.line = 5230;
   fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -22872,25 +28290,25 @@ void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4128 */
+  /* parser/parser_prod.nit:5230 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4130 */
+  /* parser/parser_prod.nit:5232 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 4130);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 5232);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4131 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5233 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4131);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5233);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4132 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5234 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22906,16 +28324,16 @@ void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4133 */
+    /* parser/parser_prod.nit:5235 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4133);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5235);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:4135 */
+  /* parser/parser_prod.nit:5237 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22931,27 +28349,27 @@ void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4136 */
+    /* parser/parser_prod.nit:5238 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4136);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5238);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIfexprExpr___empty_init[] = "parser_prod::AIfexprExpr::empty_init";
 void parser___parser_prod___AIfexprExpr___empty_init(val_t p0, int* init_table){
-  int itpos123 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfexprExpr].i;
+  int itpos122 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfexprExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos123]) return;
+  if (init_table[itpos122]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4141;
+  fra.me.line = 5243;
   fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -22959,19 +28377,19 @@ void parser___parser_prod___AIfexprExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos123] = 1;
+  init_table[itpos122] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIfexprExpr___init_aifexprexpr[] = "parser_prod::AIfexprExpr::init_aifexprexpr";
 void parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
-  int itpos124 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfexprExpr].i;
+  int itpos123 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIfexprExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos124]) return;
+  if (init_table[itpos123]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4143;
+  fra.me.line = 5245;
   fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___init_aifexprexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -22991,93 +28409,93 @@ void parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, v
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:4143 */
+  /* parser/parser_prod.nit:5245 */
   fra.me.REG[7] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4152 */
+  /* parser/parser_prod.nit:5254 */
   CALL_parser___parser_prod___AIfexprExpr___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
-  /* parser/parser_prod.nit:4153 */
+  /* parser/parser_prod.nit:5255 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4153);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5255);
   }
   ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[7]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4154 */
+  /* parser/parser_prod.nit:5256 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4154);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5256);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4155 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5257 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4155);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5257);
   }
   ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[7]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4156 */
+  /* parser/parser_prod.nit:5258 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4156);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5258);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4157 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5259 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4157);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5259);
   }
   ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[7]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4158 */
+  /* parser/parser_prod.nit:5260 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4158);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5260);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4159 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5261 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4159);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5261);
   }
   ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[7]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:4160 */
+  /* parser/parser_prod.nit:5262 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4160);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5262);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4161 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5263 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4161);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5263);
   }
   ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[7]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:4162 */
+  /* parser/parser_prod.nit:5264 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4162);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5264);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4163 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5265 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4163);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5265);
   }
   ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[7]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:4164 */
+  /* parser/parser_prod.nit:5266 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4164);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5266);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos124] = 1;
+  init_table[itpos123] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIfexprExpr___replace_child[] = "parser_prod::AIfexprExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIfexprExpr___replace_child[] = "parser_prod::AIfexprExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIfexprExpr___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;
@@ -23085,7 +28503,7 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4167;
+  fra.me.line = 5269;
   fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23097,11 +28515,11 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4169 */
+  /* parser/parser_prod.nit:5271 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 4169);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 5271);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23111,7 +28529,57 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4170 */
+    /* parser/parser_prod.nit:5272 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:5273 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5273);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5274 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast TKwif*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5274);
+      }
+      /* parser/parser_prod.nit:5275 */
+      ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:5277 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5277);
+    }
+    /* parser/parser_prod.nit:5279 */
+    goto label1;
+  }
+  /* parser/parser_prod.nit:5281 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5281);
+  }
+  fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5282 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23126,82 +28594,32 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4171 */
+      /* parser/parser_prod.nit:5283 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4171);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5283);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4172 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast TKwif*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4172);
-      }
-      /* parser/parser_prod.nit:4173 */
-      ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:4175 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4175);
-    }
-    /* parser/parser_prod.nit:4177 */
-    goto label1;
-  }
-  /* parser/parser_prod.nit:4179 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4179);
-  }
-  fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4180 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4181 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4181);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4182 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5284 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4182);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5284);
       }
-      /* parser/parser_prod.nit:4183 */
+      /* parser/parser_prod.nit:5285 */
       ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4185 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4185);
+      /* parser/parser_prod.nit:5287 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5287);
     }
-    /* parser/parser_prod.nit:4187 */
+    /* parser/parser_prod.nit:5289 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4189 */
+  /* parser/parser_prod.nit:5291 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser___parser_prod, 4189);
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser___parser_prod, 5291);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23211,7 +28629,7 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4190 */
+    /* parser/parser_prod.nit:5292 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23226,32 +28644,32 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4191 */
+      /* parser/parser_prod.nit:5293 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4191);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5293);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4192 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5294 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwthen, ID_parser___parser_nodes___TKwthen)) /*cast TKwthen*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4192);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5294);
       }
-      /* parser/parser_prod.nit:4193 */
+      /* parser/parser_prod.nit:5295 */
       ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4195 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4195);
+      /* parser/parser_prod.nit:5297 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5297);
     }
-    /* parser/parser_prod.nit:4197 */
+    /* parser/parser_prod.nit:5299 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4199 */
+  /* parser/parser_prod.nit:5301 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser___parser_prod, 4199);
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser___parser_prod, 5301);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23261,7 +28679,7 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4200 */
+    /* parser/parser_prod.nit:5302 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23276,32 +28694,32 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4201 */
+      /* parser/parser_prod.nit:5303 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4201);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5303);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4202 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5304 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4202);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5304);
       }
-      /* parser/parser_prod.nit:4203 */
+      /* parser/parser_prod.nit:5305 */
       ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4205 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4205);
+      /* parser/parser_prod.nit:5307 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5307);
     }
-    /* parser/parser_prod.nit:4207 */
+    /* parser/parser_prod.nit:5309 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4209 */
+  /* parser/parser_prod.nit:5311 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser___parser_prod, 4209);
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser___parser_prod, 5311);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23311,7 +28729,7 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4210 */
+    /* parser/parser_prod.nit:5312 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23326,32 +28744,32 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4211 */
+      /* parser/parser_prod.nit:5313 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4211);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5313);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4212 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5314 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwelse, ID_parser___parser_nodes___TKwelse)) /*cast TKwelse*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4212);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5314);
       }
-      /* parser/parser_prod.nit:4213 */
+      /* parser/parser_prod.nit:5315 */
       ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4215 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4215);
+      /* parser/parser_prod.nit:5317 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5317);
     }
-    /* parser/parser_prod.nit:4217 */
+    /* parser/parser_prod.nit:5319 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4219 */
+  /* parser/parser_prod.nit:5321 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser___parser_prod, 4219);
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser___parser_prod, 5321);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23361,7 +28779,7 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4220 */
+    /* parser/parser_prod.nit:5322 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23376,39 +28794,171 @@ void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4221 */
+      /* parser/parser_prod.nit:5323 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4221);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5323);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4222 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5324 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4222);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5324);
       }
-      /* parser/parser_prod.nit:4223 */
+      /* parser/parser_prod.nit:5325 */
       ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4225 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4225);
+      /* parser/parser_prod.nit:5327 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5327);
     }
-    /* parser/parser_prod.nit:4227 */
+    /* parser/parser_prod.nit:5329 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIfexprExpr___visit_all[] = "parser_prod::AIfexprExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIfexprExpr___n_kwif__eq[] = "parser_prod::AIfexprExpr::(parser_nodes::AIfexprExpr::n_kwif=)";
+void parser___parser_prod___AIfexprExpr___n_kwif__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5333;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___n_kwif__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5335 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5336 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfexprExpr___n_expr__eq[] = "parser_prod::AIfexprExpr::(parser_nodes::AIfexprExpr::n_expr=)";
+void parser___parser_prod___AIfexprExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5338;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5340 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5341 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfexprExpr___n_kwthen__eq[] = "parser_prod::AIfexprExpr::(parser_nodes::AIfexprExpr::n_kwthen=)";
+void parser___parser_prod___AIfexprExpr___n_kwthen__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5343;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___n_kwthen__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5345 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5346 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfexprExpr___n_then__eq[] = "parser_prod::AIfexprExpr::(parser_nodes::AIfexprExpr::n_then=)";
+void parser___parser_prod___AIfexprExpr___n_then__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5348;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___n_then__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5350 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5351 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfexprExpr___n_kwelse__eq[] = "parser_prod::AIfexprExpr::(parser_nodes::AIfexprExpr::n_kwelse=)";
+void parser___parser_prod___AIfexprExpr___n_kwelse__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5353;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___n_kwelse__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5355 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5356 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfexprExpr___n_else__eq[] = "parser_prod::AIfexprExpr::(parser_nodes::AIfexprExpr::n_else=)";
+void parser___parser_prod___AIfexprExpr___n_else__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5358;
+  fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___n_else__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5360 */
+  ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5361 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIfexprExpr___visit_all[] = "parser_prod::AIfexprExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIfexprExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4231;
+  fra.me.line = 5365;
   fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -23418,66 +28968,66 @@ void parser___parser_prod___AIfexprExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4233 */
+  /* parser/parser_prod.nit:5367 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 4233);
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_parser___parser_prod, 5367);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4234 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5368 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4234);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5368);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4235 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5369 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser___parser_prod, 4235);
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_parser___parser_prod, 5369);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4236 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5370 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser___parser_prod, 4236);
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_parser___parser_prod, 5370);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4237 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5371 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser___parser_prod, 4237);
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_parser___parser_prod, 5371);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4238 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5372 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser___parser_prod, 4238);
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_parser___parser_prod, 5372);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AWhileExpr___empty_init[] = "parser_prod::AWhileExpr::empty_init";
 void parser___parser_prod___AWhileExpr___empty_init(val_t p0, int* init_table){
-  int itpos125 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWhileExpr].i;
+  int itpos124 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWhileExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos125]) return;
+  if (init_table[itpos124]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4242;
+  fra.me.line = 5376;
   fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -23485,20 +29035,20 @@ void parser___parser_prod___AWhileExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos125] = 1;
+  init_table[itpos124] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AWhileExpr___init_awhileexpr[] = "parser_prod::AWhileExpr::init_awhileexpr";
 void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos126 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWhileExpr].i;
+  int itpos125 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AWhileExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos126]) return;
+  if (init_table[itpos125]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4244;
+  fra.me.line = 5378;
   fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___init_awhileexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -23516,52 +29066,52 @@ void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:4244 */
+  /* parser/parser_prod.nit:5378 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4252 */
+  /* parser/parser_prod.nit:5386 */
   CALL_parser___parser_prod___AWhileExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:4253 */
+  /* parser/parser_prod.nit:5387 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4253);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5387);
   }
   ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4254 */
+  /* parser/parser_prod.nit:5388 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4254);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5388);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:4255 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:5389 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4255);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5389);
   }
   ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4256 */
+  /* parser/parser_prod.nit:5390 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4256);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5390);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:4257 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:5391 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4257);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5391);
   }
   ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4258 */
+  /* parser/parser_prod.nit:5392 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4258);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5392);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:4259 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:5393 */
   ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:4260 */
+  /* parser/parser_prod.nit:5394 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -23576,16 +29126,16 @@ void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4261 */
+    /* parser/parser_prod.nit:5395 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4261);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5395);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   }
-  /* parser/parser_prod.nit:4263 */
+  /* parser/parser_prod.nit:5397 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:4264 */
+  /* parser/parser_prod.nit:5398 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -23600,18 +29150,18 @@ void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4265 */
+    /* parser/parser_prod.nit:5399 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4265);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5399);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos126] = 1;
+  init_table[itpos125] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AWhileExpr___replace_child[] = "parser_prod::AWhileExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AWhileExpr___replace_child[] = "parser_prod::AWhileExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AWhileExpr___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;
@@ -23619,7 +29169,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4269;
+  fra.me.line = 5403;
   fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23631,11 +29181,11 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4271 */
+  /* parser/parser_prod.nit:5405 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser___parser_prod, 4271);
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser___parser_prod, 5405);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23645,7 +29195,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4272 */
+    /* parser/parser_prod.nit:5406 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23660,32 +29210,32 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4273 */
+      /* parser/parser_prod.nit:5407 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4273);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5407);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4274 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5408 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast TKwwhile*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4274);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5408);
       }
-      /* parser/parser_prod.nit:4275 */
+      /* parser/parser_prod.nit:5409 */
       ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4277 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4277);
+      /* parser/parser_prod.nit:5411 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5411);
     }
-    /* parser/parser_prod.nit:4279 */
+    /* parser/parser_prod.nit:5413 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4281 */
+  /* parser/parser_prod.nit:5415 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4281);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5415);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23695,7 +29245,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4282 */
+    /* parser/parser_prod.nit:5416 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23710,32 +29260,32 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4283 */
+      /* parser/parser_prod.nit:5417 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4283);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5417);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4284 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5418 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4284);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5418);
       }
-      /* parser/parser_prod.nit:4285 */
+      /* parser/parser_prod.nit:5419 */
       ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4287 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4287);
+      /* parser/parser_prod.nit:5421 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5421);
     }
-    /* parser/parser_prod.nit:4289 */
+    /* parser/parser_prod.nit:5423 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4291 */
+  /* parser/parser_prod.nit:5425 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 4291);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 5425);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -23745,7 +29295,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4292 */
+    /* parser/parser_prod.nit:5426 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23760,28 +29310,28 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4293 */
+      /* parser/parser_prod.nit:5427 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4293);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5427);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4294 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5428 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast TKwdo*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4294);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5428);
       }
-      /* parser/parser_prod.nit:4295 */
+      /* parser/parser_prod.nit:5429 */
       ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4297 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4297);
+      /* parser/parser_prod.nit:5431 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5431);
     }
-    /* parser/parser_prod.nit:4299 */
+    /* parser/parser_prod.nit:5433 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4301 */
+  /* parser/parser_prod.nit:5435 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -23796,7 +29346,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4302 */
+    /* parser/parser_prod.nit:5436 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23811,28 +29361,28 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4303 */
+      /* parser/parser_prod.nit:5437 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4303);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5437);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4304 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5438 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4304);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5438);
       }
-      /* parser/parser_prod.nit:4305 */
+      /* parser/parser_prod.nit:5439 */
       ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4307 */
+      /* parser/parser_prod.nit:5441 */
       ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4309 */
+    /* parser/parser_prod.nit:5443 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4311 */
+  /* parser/parser_prod.nit:5445 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -23847,7 +29397,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4312 */
+    /* parser/parser_prod.nit:5446 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -23862,32 +29412,186 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4313 */
+      /* parser/parser_prod.nit:5447 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4313);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5447);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4314 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5448 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4314);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5448);
       }
-      /* parser/parser_prod.nit:4315 */
+      /* parser/parser_prod.nit:5449 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4317 */
+      /* parser/parser_prod.nit:5451 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4319 */
+    /* parser/parser_prod.nit:5453 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AWhileExpr___visit_all[] = "parser_prod::AWhileExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AWhileExpr___n_kwwhile__eq[] = "parser_prod::AWhileExpr::(parser_nodes::AWhileExpr::n_kwwhile=)";
+void parser___parser_prod___AWhileExpr___n_kwwhile__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5457;
+  fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___n_kwwhile__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5459 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5460 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWhileExpr___n_expr__eq[] = "parser_prod::AWhileExpr::(parser_nodes::AWhileExpr::n_expr=)";
+void parser___parser_prod___AWhileExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5462;
+  fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5464 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5465 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWhileExpr___n_kwdo__eq[] = "parser_prod::AWhileExpr::(parser_nodes::AWhileExpr::n_kwdo=)";
+void parser___parser_prod___AWhileExpr___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5467;
+  fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5469 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5470 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWhileExpr___n_block__eq[] = "parser_prod::AWhileExpr::(parser_nodes::AWhileExpr::n_block=)";
+void parser___parser_prod___AWhileExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5472;
+  fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5474 */
+  ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5475 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5476 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5476);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWhileExpr___n_label__eq[] = "parser_prod::AWhileExpr::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___AWhileExpr___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5479;
+  fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5481 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5482 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5483 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5483);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AWhileExpr___visit_all[] = "parser_prod::AWhileExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -23895,7 +29599,7 @@ void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4323;
+  fra.me.line = 5488;
   fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23906,33 +29610,33 @@ void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4323 */
+  /* parser/parser_prod.nit:5488 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4325 */
+  /* parser/parser_prod.nit:5490 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser___parser_prod, 4325);
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_parser___parser_prod, 5490);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4326 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5491 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4326);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5491);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4327 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5492 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 4327);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 5492);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4328 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5493 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -23948,16 +29652,16 @@ void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4329 */
+    /* parser/parser_prod.nit:5494 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4329);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5494);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:4331 */
+  /* parser/parser_prod.nit:5496 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -23973,27 +29677,27 @@ void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4332 */
+    /* parser/parser_prod.nit:5497 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4332);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5497);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALoopExpr___empty_init[] = "parser_prod::ALoopExpr::empty_init";
 void parser___parser_prod___ALoopExpr___empty_init(val_t p0, int* init_table){
-  int itpos127 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALoopExpr].i;
+  int itpos126 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALoopExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos127]) return;
+  if (init_table[itpos126]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4337;
+  fra.me.line = 5502;
   fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -24001,20 +29705,20 @@ void parser___parser_prod___ALoopExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos127] = 1;
+  init_table[itpos126] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALoopExpr___init_aloopexpr[] = "parser_prod::ALoopExpr::init_aloopexpr";
 void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos128 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALoopExpr].i;
+  int itpos127 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALoopExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos128]) return;
+  if (init_table[itpos127]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4339;
+  fra.me.line = 5504;
   fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___init_aloopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -24028,26 +29732,26 @@ void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:4339 */
+  /* parser/parser_prod.nit:5504 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4345 */
+  /* parser/parser_prod.nit:5510 */
   CALL_parser___parser_prod___ALoopExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:4346 */
+  /* parser/parser_prod.nit:5511 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4346);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5511);
   }
   ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4347 */
+  /* parser/parser_prod.nit:5512 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4347);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5512);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:4348 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:5513 */
   ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4349 */
+  /* parser/parser_prod.nit:5514 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -24062,16 +29766,16 @@ void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4350 */
+    /* parser/parser_prod.nit:5515 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4350);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5515);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:4352 */
+  /* parser/parser_prod.nit:5517 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4353 */
+  /* parser/parser_prod.nit:5518 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -24086,18 +29790,18 @@ void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4354 */
+    /* parser/parser_prod.nit:5519 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4354);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5519);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos128] = 1;
+  init_table[itpos127] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALoopExpr___replace_child[] = "parser_prod::ALoopExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALoopExpr___replace_child[] = "parser_prod::ALoopExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALoopExpr___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;
@@ -24105,7 +29809,7 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4358;
+  fra.me.line = 5523;
   fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -24117,11 +29821,11 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4360 */
+  /* parser/parser_prod.nit:5525 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser___parser_prod, 4360);
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser___parser_prod, 5525);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -24131,7 +29835,7 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4361 */
+    /* parser/parser_prod.nit:5526 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24146,28 +29850,28 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4362 */
+      /* parser/parser_prod.nit:5527 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4362);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5527);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4363 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5528 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast TKwloop*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4363);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5528);
       }
-      /* parser/parser_prod.nit:4364 */
+      /* parser/parser_prod.nit:5529 */
       ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4366 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4366);
+      /* parser/parser_prod.nit:5531 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5531);
     }
-    /* parser/parser_prod.nit:4368 */
+    /* parser/parser_prod.nit:5533 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4370 */
+  /* parser/parser_prod.nit:5535 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -24182,7 +29886,7 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4371 */
+    /* parser/parser_prod.nit:5536 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24197,28 +29901,28 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4372 */
+      /* parser/parser_prod.nit:5537 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4372);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5537);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4373 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5538 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4373);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5538);
       }
-      /* parser/parser_prod.nit:4374 */
+      /* parser/parser_prod.nit:5539 */
       ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4376 */
+      /* parser/parser_prod.nit:5541 */
       ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4378 */
+    /* parser/parser_prod.nit:5543 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4380 */
+  /* parser/parser_prod.nit:5545 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -24233,7 +29937,7 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4381 */
+    /* parser/parser_prod.nit:5546 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24248,32 +29952,142 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4382 */
+      /* parser/parser_prod.nit:5547 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4382);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5547);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4383 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5548 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4383);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5548);
       }
-      /* parser/parser_prod.nit:4384 */
+      /* parser/parser_prod.nit:5549 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4386 */
+      /* parser/parser_prod.nit:5551 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4388 */
+    /* parser/parser_prod.nit:5553 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALoopExpr___visit_all[] = "parser_prod::ALoopExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALoopExpr___n_kwloop__eq[] = "parser_prod::ALoopExpr::(parser_nodes::ALoopExpr::n_kwloop=)";
+void parser___parser_prod___ALoopExpr___n_kwloop__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5557;
+  fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___n_kwloop__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5559 */
+  ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5560 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALoopExpr___n_block__eq[] = "parser_prod::ALoopExpr::(parser_nodes::ALoopExpr::n_block=)";
+void parser___parser_prod___ALoopExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5562;
+  fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5564 */
+  ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5565 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5566 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5566);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALoopExpr___n_label__eq[] = "parser_prod::ALoopExpr::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___ALoopExpr___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5569;
+  fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5571 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5572 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5573 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5573);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALoopExpr___visit_all[] = "parser_prod::ALoopExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -24281,7 +30095,7 @@ void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4392;
+  fra.me.line = 5578;
   fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -24292,17 +30106,17 @@ void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4392 */
+  /* parser/parser_prod.nit:5578 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4394 */
+  /* parser/parser_prod.nit:5580 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser___parser_prod, 4394);
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_parser___parser_prod, 5580);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4395 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5581 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -24318,16 +30132,16 @@ void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4396 */
+    /* parser/parser_prod.nit:5582 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4396);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5582);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:4398 */
+  /* parser/parser_prod.nit:5584 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -24343,27 +30157,27 @@ void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4399 */
+    /* parser/parser_prod.nit:5585 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4399);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5585);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AForExpr___empty_init[] = "parser_prod::AForExpr::empty_init";
 void parser___parser_prod___AForExpr___empty_init(val_t p0, int* init_table){
-  int itpos129 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AForExpr].i;
+  int itpos128 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AForExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos129]) return;
+  if (init_table[itpos128]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4404;
+  fra.me.line = 5590;
   fra.me.meth = LOCATE_parser___parser_prod___AForExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -24371,20 +30185,20 @@ void parser___parser_prod___AForExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos129] = 1;
+  init_table[itpos128] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AForExpr___init_aforexpr[] = "parser_prod::AForExpr::init_aforexpr";
 void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
-  int itpos130 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AForExpr].i;
+  int itpos129 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AForExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos130]) return;
+  if (init_table[itpos129]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4406;
+  fra.me.line = 5592;
   fra.me.meth = LOCATE_parser___parser_prod___AForExpr___init_aforexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -24404,53 +30218,53 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:4406 */
+  /* parser/parser_prod.nit:5592 */
   fra.me.REG[7] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4415 */
+  /* parser/parser_prod.nit:5601 */
   CALL_parser___parser_prod___AForExpr___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
-  /* parser/parser_prod.nit:4416 */
+  /* parser/parser_prod.nit:5602 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4416);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5602);
   }
   ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[7]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4417 */
+  /* parser/parser_prod.nit:5603 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4417);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5603);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AForExpr___init_aforexpr_1));
-  /* parser/parser_prod.nit:4423 */
+  /* parser/parser_prod.nit:5609 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4423);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5609);
   }
   ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[7]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4424 */
+  /* parser/parser_prod.nit:5610 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4424);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5610);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4425 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5611 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4425);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5611);
   }
   ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[7]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:4426 */
+  /* parser/parser_prod.nit:5612 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4426);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5612);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-  /* parser/parser_prod.nit:4427 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+  /* parser/parser_prod.nit:5613 */
   ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[7]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:4428 */
+  /* parser/parser_prod.nit:5614 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -24465,16 +30279,16 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4429 */
+    /* parser/parser_prod.nit:5615 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4429);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5615);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:4431 */
+  /* parser/parser_prod.nit:5617 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[7]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:4432 */
+  /* parser/parser_prod.nit:5618 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -24489,15 +30303,15 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4433 */
+    /* parser/parser_prod.nit:5619 */
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4433);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5619);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos130] = 1;
+  init_table[itpos129] = 1;
   return;
 }
   void OC_parser___parser_prod___AForExpr___init_aforexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -24505,7 +30319,7 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:4418 */
+    /* parser/parser_prod.nit:5604 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -24519,26 +30333,26 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:4419 */
+    /* parser/parser_prod.nit:5605 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4419);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5605);
     }
-    /* parser/parser_prod.nit:4420 */
+    /* parser/parser_prod.nit:5606 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(closctx->REG[7])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4420);
+      nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 5606);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AForExpr____n_ids(closctx->REG[7]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:4421 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[7]);
+    /* parser/parser_prod.nit:5607 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[7]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AForExpr___replace_child[] = "parser_prod::AForExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AForExpr___replace_child[] = "parser_prod::AForExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AForExpr___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;
@@ -24549,7 +30363,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4437;
+  fra.me.line = 5623;
   fra.me.meth = LOCATE_parser___parser_prod___AForExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -24561,11 +30375,11 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4439 */
+  /* parser/parser_prod.nit:5625 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser___parser_prod, 4439);
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser___parser_prod, 5625);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -24575,7 +30389,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4440 */
+    /* parser/parser_prod.nit:5626 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24590,71 +30404,65 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4441 */
+      /* parser/parser_prod.nit:5627 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4441);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5627);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4442 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5628 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast TKwfor*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4442);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5628);
       }
-      /* parser/parser_prod.nit:4443 */
+      /* parser/parser_prod.nit:5629 */
       ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4445 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4445);
+      /* parser/parser_prod.nit:5631 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5631);
     }
-    /* parser/parser_prod.nit:4447 */
+    /* parser/parser_prod.nit:5633 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4449 */
+  /* parser/parser_prod.nit:5635 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4449);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 5635);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:4449 */
+      /* parser/parser_prod.nit:5635 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:4450 */
+      /* parser/parser_prod.nit:5636 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4450);
+        nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 5636);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:4451 */
+        /* parser/parser_prod.nit:5637 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -24669,56 +30477,56 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:4452 */
+          /* parser/parser_prod.nit:5638 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4452);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5638);
           }
-          /* parser/parser_prod.nit:4453 */
+          /* parser/parser_prod.nit:5639 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4453);
+            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 5639);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:4454 */
+          /* parser/parser_prod.nit:5640 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4454);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5640);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:4456 */
+          /* parser/parser_prod.nit:5642 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4456);
+            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 5642);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:4458 */
+        /* parser/parser_prod.nit:5644 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:4461 */
+  /* parser/parser_prod.nit:5647 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4461);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5647);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -24728,7 +30536,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4462 */
+    /* parser/parser_prod.nit:5648 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24743,32 +30551,32 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4463 */
+      /* parser/parser_prod.nit:5649 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4463);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5649);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4464 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5650 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4464);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5650);
       }
-      /* parser/parser_prod.nit:4465 */
+      /* parser/parser_prod.nit:5651 */
       ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4467 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4467);
+      /* parser/parser_prod.nit:5653 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5653);
     }
-    /* parser/parser_prod.nit:4469 */
+    /* parser/parser_prod.nit:5655 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4471 */
+  /* parser/parser_prod.nit:5657 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 4471);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 5657);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -24778,7 +30586,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4472 */
+    /* parser/parser_prod.nit:5658 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24793,28 +30601,28 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4473 */
+      /* parser/parser_prod.nit:5659 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4473);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5659);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4474 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5660 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast TKwdo*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4474);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5660);
       }
-      /* parser/parser_prod.nit:4475 */
+      /* parser/parser_prod.nit:5661 */
       ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4477 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4477);
+      /* parser/parser_prod.nit:5663 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5663);
     }
-    /* parser/parser_prod.nit:4479 */
+    /* parser/parser_prod.nit:5665 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4481 */
+  /* parser/parser_prod.nit:5667 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -24829,7 +30637,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4482 */
+    /* parser/parser_prod.nit:5668 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24844,28 +30652,28 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4483 */
+      /* parser/parser_prod.nit:5669 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4483);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5669);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4484 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5670 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4484);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5670);
       }
-      /* parser/parser_prod.nit:4485 */
+      /* parser/parser_prod.nit:5671 */
       ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4487 */
+      /* parser/parser_prod.nit:5673 */
       ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4489 */
+    /* parser/parser_prod.nit:5675 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4491 */
+  /* parser/parser_prod.nit:5677 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -24880,7 +30688,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4492 */
+    /* parser/parser_prod.nit:5678 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -24895,32 +30703,186 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4493 */
+      /* parser/parser_prod.nit:5679 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4493);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5679);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4494 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5680 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4494);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5680);
       }
-      /* parser/parser_prod.nit:4495 */
+      /* parser/parser_prod.nit:5681 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4497 */
+      /* parser/parser_prod.nit:5683 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4499 */
+    /* parser/parser_prod.nit:5685 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AForExpr___visit_all[] = "parser_prod::AForExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AForExpr___n_kwfor__eq[] = "parser_prod::AForExpr::(parser_nodes::AForExpr::n_kwfor=)";
+void parser___parser_prod___AForExpr___n_kwfor__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5689;
+  fra.me.meth = LOCATE_parser___parser_prod___AForExpr___n_kwfor__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5691 */
+  ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5692 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AForExpr___n_expr__eq[] = "parser_prod::AForExpr::(parser_nodes::AForExpr::n_expr=)";
+void parser___parser_prod___AForExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5694;
+  fra.me.meth = LOCATE_parser___parser_prod___AForExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5696 */
+  ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5697 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AForExpr___n_kwdo__eq[] = "parser_prod::AForExpr::(parser_nodes::AForExpr::n_kwdo=)";
+void parser___parser_prod___AForExpr___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5699;
+  fra.me.meth = LOCATE_parser___parser_prod___AForExpr___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5701 */
+  ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5702 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AForExpr___n_block__eq[] = "parser_prod::AForExpr::(parser_nodes::AForExpr::n_block=)";
+void parser___parser_prod___AForExpr___n_block__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5704;
+  fra.me.meth = LOCATE_parser___parser_prod___AForExpr___n_block__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5706 */
+  ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5707 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5708 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5708);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AForExpr___n_label__eq[] = "parser_prod::AForExpr::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___AForExpr___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5711;
+  fra.me.meth = LOCATE_parser___parser_prod___AForExpr___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5713 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5714 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5715 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5715);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AForExpr___visit_all[] = "parser_prod::AForExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -24928,7 +30890,7 @@ void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4503;
+  fra.me.line = 5720;
   fra.me.meth = LOCATE_parser___parser_prod___AForExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -24939,41 +30901,41 @@ void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4503 */
+  /* parser/parser_prod.nit:5720 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4505 */
+  /* parser/parser_prod.nit:5722 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser___parser_prod, 4505);
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_parser___parser_prod, 5722);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4506 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5723 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4506);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 5723);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AForExpr___visit_all_1));
-  /* parser/parser_prod.nit:4509 */
+  /* parser/parser_prod.nit:5726 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4509);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5726);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4510 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5727 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 4510);
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_parser___parser_prod, 5727);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4511 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5728 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -24989,16 +30951,16 @@ void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4512 */
+    /* parser/parser_prod.nit:5729 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4512);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5729);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:4514 */
+  /* parser/parser_prod.nit:5731 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -25014,14 +30976,14 @@ void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4515 */
+    /* parser/parser_prod.nit:5732 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4515);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5732);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -25042,20 +31004,20 @@ void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:4507 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:5724 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AAssertExpr___empty_init[] = "parser_prod::AAssertExpr::empty_init";
 void parser___parser_prod___AAssertExpr___empty_init(val_t p0, int* init_table){
-  int itpos131 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssertExpr].i;
+  int itpos130 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssertExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos131]) return;
+  if (init_table[itpos130]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4520;
+  fra.me.line = 5737;
   fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -25063,20 +31025,20 @@ void parser___parser_prod___AAssertExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos131] = 1;
+  init_table[itpos130] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAssertExpr___init_aassertexpr[] = "parser_prod::AAssertExpr::init_aassertexpr";
 void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos132 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssertExpr].i;
+  int itpos131 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAssertExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos132]) return;
+  if (init_table[itpos131]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4522;
+  fra.me.line = 5739;
   fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___init_aassertexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -25092,26 +31054,26 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:4522 */
+  /* parser/parser_prod.nit:5739 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4529 */
+  /* parser/parser_prod.nit:5746 */
   CALL_parser___parser_prod___AAssertExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:4530 */
+  /* parser/parser_prod.nit:5747 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4530);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5747);
   }
   ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4531 */
+  /* parser/parser_prod.nit:5748 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4531);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5748);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:4532 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:5749 */
   ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4533 */
+  /* parser/parser_prod.nit:5750 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -25126,29 +31088,29 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4534 */
+    /* parser/parser_prod.nit:5751 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4534);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5751);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:4536 */
+  /* parser/parser_prod.nit:5753 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4536);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5753);
   }
   ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:4537 */
+  /* parser/parser_prod.nit:5754 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4537);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5754);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:4538 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:5755 */
   ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:4539 */
+  /* parser/parser_prod.nit:5756 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -25163,18 +31125,18 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4540 */
+    /* parser/parser_prod.nit:5757 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4540);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5757);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos132] = 1;
+  init_table[itpos131] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAssertExpr___replace_child[] = "parser_prod::AAssertExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAssertExpr___replace_child[] = "parser_prod::AAssertExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAssertExpr___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;
@@ -25182,7 +31144,7 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4544;
+  fra.me.line = 5761;
   fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25194,11 +31156,11 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4546 */
+  /* parser/parser_prod.nit:5763 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser___parser_prod, 4546);
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser___parser_prod, 5763);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -25208,7 +31170,7 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4547 */
+    /* parser/parser_prod.nit:5764 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25223,28 +31185,28 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4548 */
+      /* parser/parser_prod.nit:5765 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4548);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5765);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4549 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5766 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast TKwassert*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4549);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5766);
       }
-      /* parser/parser_prod.nit:4550 */
+      /* parser/parser_prod.nit:5767 */
       ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4552 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4552);
+      /* parser/parser_prod.nit:5769 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5769);
     }
-    /* parser/parser_prod.nit:4554 */
+    /* parser/parser_prod.nit:5771 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4556 */
+  /* parser/parser_prod.nit:5773 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -25259,7 +31221,7 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4557 */
+    /* parser/parser_prod.nit:5774 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25274,32 +31236,32 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4558 */
+      /* parser/parser_prod.nit:5775 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4558);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5775);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4559 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5776 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4559);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5776);
       }
-      /* parser/parser_prod.nit:4560 */
+      /* parser/parser_prod.nit:5777 */
       ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4562 */
+      /* parser/parser_prod.nit:5779 */
       ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4564 */
+    /* parser/parser_prod.nit:5781 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4566 */
+  /* parser/parser_prod.nit:5783 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4566);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5783);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -25309,7 +31271,7 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4567 */
+    /* parser/parser_prod.nit:5784 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25324,28 +31286,28 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4568 */
+      /* parser/parser_prod.nit:5785 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4568);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5785);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4569 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5786 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4569);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5786);
       }
-      /* parser/parser_prod.nit:4570 */
+      /* parser/parser_prod.nit:5787 */
       ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4572 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4572);
+      /* parser/parser_prod.nit:5789 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5789);
     }
-    /* parser/parser_prod.nit:4574 */
+    /* parser/parser_prod.nit:5791 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4576 */
+  /* parser/parser_prod.nit:5793 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -25360,7 +31322,7 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4577 */
+    /* parser/parser_prod.nit:5794 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25375,32 +31337,164 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4578 */
+      /* parser/parser_prod.nit:5795 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4578);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5795);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4579 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5796 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4579);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5796);
       }
-      /* parser/parser_prod.nit:4580 */
+      /* parser/parser_prod.nit:5797 */
       ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4582 */
+      /* parser/parser_prod.nit:5799 */
       ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:4584 */
+    /* parser/parser_prod.nit:5801 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAssertExpr___visit_all[] = "parser_prod::AAssertExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAssertExpr___n_kwassert__eq[] = "parser_prod::AAssertExpr::(parser_nodes::AAssertExpr::n_kwassert=)";
+void parser___parser_prod___AAssertExpr___n_kwassert__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5805;
+  fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___n_kwassert__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5807 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5808 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAssertExpr___n_id__eq[] = "parser_prod::AAssertExpr::(parser_nodes::AAssertExpr::n_id=)";
+void parser___parser_prod___AAssertExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5810;
+  fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5812 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5813 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5814 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5814);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAssertExpr___n_expr__eq[] = "parser_prod::AAssertExpr::(parser_nodes::AAssertExpr::n_expr=)";
+void parser___parser_prod___AAssertExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5817;
+  fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5819 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5820 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAssertExpr___n_else__eq[] = "parser_prod::AAssertExpr::(parser_nodes::AAssertExpr::n_else=)";
+void parser___parser_prod___AAssertExpr___n_else__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5822;
+  fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___n_else__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5824 */
+  ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5825 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:5826 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5826);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAssertExpr___visit_all[] = "parser_prod::AAssertExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -25408,7 +31502,7 @@ void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4588;
+  fra.me.line = 5831;
   fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25419,17 +31513,17 @@ void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4588 */
+  /* parser/parser_prod.nit:5831 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4590 */
+  /* parser/parser_prod.nit:5833 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser___parser_prod, 4590);
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_parser___parser_prod, 5833);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4591 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5834 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -25445,24 +31539,24 @@ void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4592 */
+    /* parser/parser_prod.nit:5835 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4592);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5835);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:4594 */
+  /* parser/parser_prod.nit:5837 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4594);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5837);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4595 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5838 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -25478,27 +31572,27 @@ void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4596 */
+    /* parser/parser_prod.nit:5839 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4596);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5839);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOnceExpr___empty_init[] = "parser_prod::AOnceExpr::empty_init";
 void parser___parser_prod___AOnceExpr___empty_init(val_t p0, int* init_table){
-  int itpos133 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOnceExpr].i;
+  int itpos132 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOnceExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos133]) return;
+  if (init_table[itpos132]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4601;
+  fra.me.line = 5844;
   fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -25506,19 +31600,19 @@ void parser___parser_prod___AOnceExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos133] = 1;
+  init_table[itpos132] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOnceExpr___init_aonceexpr[] = "parser_prod::AOnceExpr::init_aonceexpr";
 void parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos134 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOnceExpr].i;
+  int itpos133 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOnceExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos134]) return;
+  if (init_table[itpos133]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4603;
+  fra.me.line = 5846;
   fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___init_aonceexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25530,41 +31624,41 @@ void parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4603 */
+  /* parser/parser_prod.nit:5846 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4608 */
+  /* parser/parser_prod.nit:5851 */
   CALL_parser___parser_prod___AOnceExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4609 */
+  /* parser/parser_prod.nit:5852 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4609);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5852);
   }
   ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4610 */
+  /* parser/parser_prod.nit:5853 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4610);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5853);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4611 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5854 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4611);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5854);
   }
   ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4612 */
+  /* parser/parser_prod.nit:5855 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4612);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5855);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos134] = 1;
+  init_table[itpos133] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOnceExpr___replace_child[] = "parser_prod::AOnceExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AOnceExpr___replace_child[] = "parser_prod::AOnceExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AOnceExpr___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;
@@ -25572,7 +31666,7 @@ void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4615;
+  fra.me.line = 5858;
   fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25584,11 +31678,11 @@ void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4617 */
+  /* parser/parser_prod.nit:5860 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser___parser_prod, 4617);
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser___parser_prod, 5860);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -25598,7 +31692,7 @@ void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4618 */
+    /* parser/parser_prod.nit:5861 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25613,32 +31707,32 @@ void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4619 */
+      /* parser/parser_prod.nit:5862 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4619);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5862);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4620 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5863 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwonce, ID_parser___parser_nodes___TKwonce)) /*cast TKwonce*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4620);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5863);
       }
-      /* parser/parser_prod.nit:4621 */
+      /* parser/parser_prod.nit:5864 */
       ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4623 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4623);
+      /* parser/parser_prod.nit:5866 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5866);
     }
-    /* parser/parser_prod.nit:4625 */
+    /* parser/parser_prod.nit:5868 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4627 */
+  /* parser/parser_prod.nit:5870 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4627);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5870);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -25648,7 +31742,7 @@ void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4628 */
+    /* parser/parser_prod.nit:5871 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25663,39 +31757,83 @@ void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4629 */
+      /* parser/parser_prod.nit:5872 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4629);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5872);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4630 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5873 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4630);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5873);
       }
-      /* parser/parser_prod.nit:4631 */
+      /* parser/parser_prod.nit:5874 */
       ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4633 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4633);
+      /* parser/parser_prod.nit:5876 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5876);
     }
-    /* parser/parser_prod.nit:4635 */
+    /* parser/parser_prod.nit:5878 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOnceExpr___visit_all[] = "parser_prod::AOnceExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AOnceExpr___n_kwonce__eq[] = "parser_prod::AOnceExpr::(parser_nodes::AOnceExpr::n_kwonce=)";
+void parser___parser_prod___AOnceExpr___n_kwonce__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5882;
+  fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___n_kwonce__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5884 */
+  ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5885 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOnceExpr___n_expr__eq[] = "parser_prod::AOnceExpr::(parser_nodes::AProxyExpr::n_expr=)";
+void parser___parser_prod___AOnceExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5887;
+  fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5889 */
+  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5890 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOnceExpr___visit_all[] = "parser_prod::AOnceExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AOnceExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4639;
+  fra.me.line = 5894;
   fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -25705,34 +31843,34 @@ void parser___parser_prod___AOnceExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4641 */
+  /* parser/parser_prod.nit:5896 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser___parser_prod, 4641);
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_parser___parser_prod, 5896);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4642 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5897 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4642);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5897);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASendExpr___empty_init[] = "parser_prod::ASendExpr::empty_init";
 void parser___parser_prod___ASendExpr___empty_init(val_t p0, int* init_table){
-  int itpos135 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASendExpr].i;
+  int itpos134 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASendExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos135]) return;
+  if (init_table[itpos134]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4646;
+  fra.me.line = 5901;
   fra.me.meth = LOCATE_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -25740,19 +31878,19 @@ void parser___parser_prod___ASendExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos135] = 1;
+  init_table[itpos134] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASendExpr___init_asendexpr[] = "parser_prod::ASendExpr::init_asendexpr";
 void parser___parser_prod___ASendExpr___init_asendexpr(val_t p0, val_t p1, int* init_table){
-  int itpos136 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASendExpr].i;
+  int itpos135 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASendExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos136]) return;
+  if (init_table[itpos135]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4648;
+  fra.me.line = 5903;
   fra.me.meth = LOCATE_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -25762,28 +31900,28 @@ void parser___parser_prod___ASendExpr___init_asendexpr(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4648 */
+  /* parser/parser_prod.nit:5903 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4652 */
+  /* parser/parser_prod.nit:5907 */
   CALL_parser___parser_prod___ASendExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:4653 */
+  /* parser/parser_prod.nit:5908 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4653);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5908);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4654 */
+  /* parser/parser_prod.nit:5909 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4654);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5909);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos136] = 1;
+  init_table[itpos135] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASendExpr___replace_child[] = "parser_prod::ASendExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASendExpr___replace_child[] = "parser_prod::ASendExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASendExpr___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;
@@ -25791,7 +31929,7 @@ void parser___parser_prod___ASendExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4657;
+  fra.me.line = 5912;
   fra.me.meth = LOCATE_parser___parser_prod___ASendExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25803,11 +31941,11 @@ void parser___parser_prod___ASendExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4659 */
+  /* parser/parser_prod.nit:5914 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4659);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5914);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -25817,7 +31955,7 @@ void parser___parser_prod___ASendExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4660 */
+    /* parser/parser_prod.nit:5915 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -25832,39 +31970,61 @@ void parser___parser_prod___ASendExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4661 */
+      /* parser/parser_prod.nit:5916 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4661);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5916);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4662 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5917 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4662);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5917);
       }
-      /* parser/parser_prod.nit:4663 */
+      /* parser/parser_prod.nit:5918 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4665 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4665);
+      /* parser/parser_prod.nit:5920 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5920);
     }
-    /* parser/parser_prod.nit:4667 */
+    /* parser/parser_prod.nit:5922 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASendExpr___visit_all[] = "parser_prod::ASendExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASendExpr___n_expr__eq[] = "parser_prod::ASendExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ASendExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5926;
+  fra.me.meth = LOCATE_parser___parser_prod___ASendExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5928 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5929 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASendExpr___visit_all[] = "parser_prod::ASendExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASendExpr___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___parser_prod;
-  fra.me.line = 4671;
+  fra.me.line = 5933;
   fra.me.meth = LOCATE_parser___parser_prod___ASendExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25873,26 +32033,26 @@ void parser___parser_prod___ASendExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4673 */
+  /* parser/parser_prod.nit:5935 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4673);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5935);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABinopExpr___empty_init[] = "parser_prod::ABinopExpr::empty_init";
 void parser___parser_prod___ABinopExpr___empty_init(val_t p0, int* init_table){
-  int itpos137 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABinopExpr].i;
+  int itpos136 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABinopExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos137]) return;
+  if (init_table[itpos136]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4677;
+  fra.me.line = 5939;
   fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -25900,19 +32060,19 @@ void parser___parser_prod___ABinopExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos137] = 1;
+  init_table[itpos136] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "parser_prod::ABinopExpr::init_abinopexpr";
 void parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos138 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABinopExpr].i;
+  int itpos137 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABinopExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos138]) return;
+  if (init_table[itpos137]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4679;
+  fra.me.line = 5941;
   fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25924,41 +32084,41 @@ void parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4679 */
+  /* parser/parser_prod.nit:5941 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4684 */
+  /* parser/parser_prod.nit:5946 */
   CALL_parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4685 */
+  /* parser/parser_prod.nit:5947 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4685);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5947);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4686 */
+  /* parser/parser_prod.nit:5948 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4686);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5948);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4687 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:5949 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4687);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5949);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4688 */
+  /* parser/parser_prod.nit:5950 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4688);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5950);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos138] = 1;
+  init_table[itpos137] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABinopExpr___replace_child[] = "parser_prod::ABinopExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABinopExpr___replace_child[] = "parser_prod::ABinopExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABinopExpr___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;
@@ -25966,7 +32126,7 @@ void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4691;
+  fra.me.line = 5953;
   fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25978,11 +32138,11 @@ void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4693 */
+  /* parser/parser_prod.nit:5955 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4693);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5955);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -25992,7 +32152,7 @@ void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4694 */
+    /* parser/parser_prod.nit:5956 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26007,32 +32167,32 @@ void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4695 */
+      /* parser/parser_prod.nit:5957 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4695);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5957);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4696 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5958 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4696);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5958);
       }
-      /* parser/parser_prod.nit:4697 */
+      /* parser/parser_prod.nit:5959 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4699 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4699);
+      /* parser/parser_prod.nit:5961 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5961);
     }
-    /* parser/parser_prod.nit:4701 */
+    /* parser/parser_prod.nit:5963 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4703 */
+  /* parser/parser_prod.nit:5965 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4703);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5965);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26042,7 +32202,7 @@ void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4704 */
+    /* parser/parser_prod.nit:5966 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26057,39 +32217,83 @@ void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4705 */
+      /* parser/parser_prod.nit:5967 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4705);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5967);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4706 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:5968 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4706);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5968);
       }
-      /* parser/parser_prod.nit:4707 */
+      /* parser/parser_prod.nit:5969 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4709 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4709);
+      /* parser/parser_prod.nit:5971 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5971);
     }
-    /* parser/parser_prod.nit:4711 */
+    /* parser/parser_prod.nit:5973 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABinopExpr___visit_all[] = "parser_prod::ABinopExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABinopExpr___n_expr__eq[] = "parser_prod::ABinopExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ABinopExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5977;
+  fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5979 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5980 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABinopExpr___n_expr2__eq[] = "parser_prod::ABinopExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___ABinopExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 5982;
+  fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5984 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:5985 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABinopExpr___visit_all[] = "parser_prod::ABinopExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABinopExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4715;
+  fra.me.line = 5989;
   fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -26099,34 +32303,34 @@ void parser___parser_prod___ABinopExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4717 */
+  /* parser/parser_prod.nit:5991 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4717);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5991);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4718 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:5992 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4718);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5992);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOrExpr___empty_init[] = "parser_prod::AOrExpr::empty_init";
 void parser___parser_prod___AOrExpr___empty_init(val_t p0, int* init_table){
-  int itpos139 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrExpr].i;
+  int itpos138 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos139]) return;
+  if (init_table[itpos138]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4722;
+  fra.me.line = 5996;
   fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -26134,19 +32338,19 @@ void parser___parser_prod___AOrExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos139] = 1;
+  init_table[itpos138] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOrExpr___init_aorexpr[] = "parser_prod::AOrExpr::init_aorexpr";
 void parser___parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos140 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrExpr].i;
+  int itpos139 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos140]) return;
+  if (init_table[itpos139]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4724;
+  fra.me.line = 5998;
   fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___init_aorexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26158,41 +32362,41 @@ void parser___parser_prod___AOrExpr___init_aorexpr(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_prod.nit:4724 */
+  /* parser/parser_prod.nit:5998 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4729 */
+  /* parser/parser_prod.nit:6003 */
   CALL_parser___parser_prod___AOrExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4730 */
+  /* parser/parser_prod.nit:6004 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4730);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6004);
   }
   ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4731 */
+  /* parser/parser_prod.nit:6005 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4731);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6005);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4732 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6006 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4732);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6006);
   }
   ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4733 */
+  /* parser/parser_prod.nit:6007 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4733);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6007);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos140] = 1;
+  init_table[itpos139] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOrExpr___replace_child[] = "parser_prod::AOrExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AOrExpr___replace_child[] = "parser_prod::AOrExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AOrExpr___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;
@@ -26200,7 +32404,7 @@ void parser___parser_prod___AOrExpr___replace_child(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___parser_prod;
-  fra.me.line = 4736;
+  fra.me.line = 6010;
   fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26212,11 +32416,11 @@ void parser___parser_prod___AOrExpr___replace_child(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_prod.nit:4738 */
+  /* parser/parser_prod.nit:6012 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4738);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6012);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26226,7 +32430,7 @@ void parser___parser_prod___AOrExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4739 */
+    /* parser/parser_prod.nit:6013 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26241,32 +32445,32 @@ void parser___parser_prod___AOrExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4740 */
+      /* parser/parser_prod.nit:6014 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4740);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6014);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4741 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6015 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4741);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6015);
       }
-      /* parser/parser_prod.nit:4742 */
+      /* parser/parser_prod.nit:6016 */
       ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4744 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4744);
+      /* parser/parser_prod.nit:6018 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6018);
     }
-    /* parser/parser_prod.nit:4746 */
+    /* parser/parser_prod.nit:6020 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4748 */
+  /* parser/parser_prod.nit:6022 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4748);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6022);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26276,7 +32480,7 @@ void parser___parser_prod___AOrExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4749 */
+    /* parser/parser_prod.nit:6023 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26291,39 +32495,83 @@ void parser___parser_prod___AOrExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4750 */
+      /* parser/parser_prod.nit:6024 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4750);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6024);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4751 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6025 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4751);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6025);
       }
-      /* parser/parser_prod.nit:4752 */
+      /* parser/parser_prod.nit:6026 */
       ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4754 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4754);
+      /* parser/parser_prod.nit:6028 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6028);
     }
-    /* parser/parser_prod.nit:4756 */
+    /* parser/parser_prod.nit:6030 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOrExpr___visit_all[] = "parser_prod::AOrExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AOrExpr___n_expr__eq[] = "parser_prod::AOrExpr::(parser_nodes::AOrExpr::n_expr=)";
+void parser___parser_prod___AOrExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6034;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6036 */
+  ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6037 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrExpr___n_expr2__eq[] = "parser_prod::AOrExpr::(parser_nodes::AOrExpr::n_expr2=)";
+void parser___parser_prod___AOrExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6039;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6041 */
+  ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6042 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrExpr___visit_all[] = "parser_prod::AOrExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AOrExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4760;
+  fra.me.line = 6046;
   fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -26333,34 +32581,34 @@ void parser___parser_prod___AOrExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4762 */
+  /* parser/parser_prod.nit:6048 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4762);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6048);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4763 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6049 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4763);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6049);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAndExpr___empty_init[] = "parser_prod::AAndExpr::empty_init";
 void parser___parser_prod___AAndExpr___empty_init(val_t p0, int* init_table){
-  int itpos141 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAndExpr].i;
+  int itpos140 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAndExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos141]) return;
+  if (init_table[itpos140]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4767;
+  fra.me.line = 6053;
   fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -26368,19 +32616,19 @@ void parser___parser_prod___AAndExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos141] = 1;
+  init_table[itpos140] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAndExpr___init_aandexpr[] = "parser_prod::AAndExpr::init_aandexpr";
 void parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos142 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAndExpr].i;
+  int itpos141 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAndExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos142]) return;
+  if (init_table[itpos141]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4769;
+  fra.me.line = 6055;
   fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___init_aandexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26392,41 +32640,41 @@ void parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4769 */
+  /* parser/parser_prod.nit:6055 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4774 */
+  /* parser/parser_prod.nit:6060 */
   CALL_parser___parser_prod___AAndExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4775 */
+  /* parser/parser_prod.nit:6061 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4775);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6061);
   }
   ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4776 */
+  /* parser/parser_prod.nit:6062 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4776);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6062);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4777 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6063 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4777);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6063);
   }
   ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4778 */
+  /* parser/parser_prod.nit:6064 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4778);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6064);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos142] = 1;
+  init_table[itpos141] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAndExpr___replace_child[] = "parser_prod::AAndExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAndExpr___replace_child[] = "parser_prod::AAndExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAndExpr___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;
@@ -26434,7 +32682,7 @@ void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4781;
+  fra.me.line = 6067;
   fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26446,11 +32694,11 @@ void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4783 */
+  /* parser/parser_prod.nit:6069 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4783);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6069);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26460,7 +32708,7 @@ void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4784 */
+    /* parser/parser_prod.nit:6070 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26475,32 +32723,32 @@ void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4785 */
+      /* parser/parser_prod.nit:6071 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4785);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6071);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4786 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6072 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4786);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6072);
       }
-      /* parser/parser_prod.nit:4787 */
+      /* parser/parser_prod.nit:6073 */
       ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4789 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4789);
+      /* parser/parser_prod.nit:6075 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6075);
     }
-    /* parser/parser_prod.nit:4791 */
+    /* parser/parser_prod.nit:6077 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4793 */
+  /* parser/parser_prod.nit:6079 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4793);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6079);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26510,7 +32758,7 @@ void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4794 */
+    /* parser/parser_prod.nit:6080 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26525,39 +32773,83 @@ void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4795 */
+      /* parser/parser_prod.nit:6081 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4795);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6081);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4796 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6082 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4796);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6082);
       }
-      /* parser/parser_prod.nit:4797 */
+      /* parser/parser_prod.nit:6083 */
       ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4799 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4799);
+      /* parser/parser_prod.nit:6085 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6085);
     }
-    /* parser/parser_prod.nit:4801 */
+    /* parser/parser_prod.nit:6087 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAndExpr___visit_all[] = "parser_prod::AAndExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAndExpr___n_expr__eq[] = "parser_prod::AAndExpr::(parser_nodes::AAndExpr::n_expr=)";
+void parser___parser_prod___AAndExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6091;
+  fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6093 */
+  ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6094 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAndExpr___n_expr2__eq[] = "parser_prod::AAndExpr::(parser_nodes::AAndExpr::n_expr2=)";
+void parser___parser_prod___AAndExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6096;
+  fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6098 */
+  ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6099 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAndExpr___visit_all[] = "parser_prod::AAndExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAndExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4805;
+  fra.me.line = 6103;
   fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -26567,34 +32859,34 @@ void parser___parser_prod___AAndExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4807 */
+  /* parser/parser_prod.nit:6105 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4807);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6105);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4808 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6106 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4808);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6106);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOrElseExpr___empty_init[] = "parser_prod::AOrElseExpr::empty_init";
 void parser___parser_prod___AOrElseExpr___empty_init(val_t p0, int* init_table){
-  int itpos143 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrElseExpr].i;
+  int itpos142 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrElseExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos143]) return;
+  if (init_table[itpos142]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4812;
+  fra.me.line = 6110;
   fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -26602,19 +32894,19 @@ void parser___parser_prod___AOrElseExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos143] = 1;
+  init_table[itpos142] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOrElseExpr___init_aorelseexpr[] = "parser_prod::AOrElseExpr::init_aorelseexpr";
 void parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos144 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrElseExpr].i;
+  int itpos143 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrElseExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos144]) return;
+  if (init_table[itpos143]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4814;
+  fra.me.line = 6112;
   fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___init_aorelseexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26626,41 +32918,41 @@ void parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4814 */
+  /* parser/parser_prod.nit:6112 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4819 */
+  /* parser/parser_prod.nit:6117 */
   CALL_parser___parser_prod___AOrElseExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4820 */
+  /* parser/parser_prod.nit:6118 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4820);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6118);
   }
   ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4821 */
+  /* parser/parser_prod.nit:6119 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4821);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6119);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4822 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6120 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4822);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6120);
   }
   ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4823 */
+  /* parser/parser_prod.nit:6121 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4823);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6121);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos144] = 1;
+  init_table[itpos143] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOrElseExpr___replace_child[] = "parser_prod::AOrElseExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AOrElseExpr___replace_child[] = "parser_prod::AOrElseExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AOrElseExpr___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;
@@ -26668,7 +32960,7 @@ void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4826;
+  fra.me.line = 6124;
   fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26680,11 +32972,11 @@ void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4828 */
+  /* parser/parser_prod.nit:6126 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4828);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6126);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26694,7 +32986,7 @@ void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4829 */
+    /* parser/parser_prod.nit:6127 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26709,32 +33001,32 @@ void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4830 */
+      /* parser/parser_prod.nit:6128 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4830);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6128);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4831 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6129 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4831);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6129);
       }
-      /* parser/parser_prod.nit:4832 */
+      /* parser/parser_prod.nit:6130 */
       ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4834 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4834);
+      /* parser/parser_prod.nit:6132 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6132);
     }
-    /* parser/parser_prod.nit:4836 */
+    /* parser/parser_prod.nit:6134 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4838 */
+  /* parser/parser_prod.nit:6136 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4838);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6136);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26744,7 +33036,7 @@ void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4839 */
+    /* parser/parser_prod.nit:6137 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26759,39 +33051,83 @@ void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4840 */
+      /* parser/parser_prod.nit:6138 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4840);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6138);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4841 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6139 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4841);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6139);
       }
-      /* parser/parser_prod.nit:4842 */
+      /* parser/parser_prod.nit:6140 */
       ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4844 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4844);
+      /* parser/parser_prod.nit:6142 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6142);
     }
-    /* parser/parser_prod.nit:4846 */
+    /* parser/parser_prod.nit:6144 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOrElseExpr___visit_all[] = "parser_prod::AOrElseExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AOrElseExpr___n_expr__eq[] = "parser_prod::AOrElseExpr::(parser_nodes::AOrElseExpr::n_expr=)";
+void parser___parser_prod___AOrElseExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6148;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6150 */
+  ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6151 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrElseExpr___n_expr2__eq[] = "parser_prod::AOrElseExpr::(parser_nodes::AOrElseExpr::n_expr2=)";
+void parser___parser_prod___AOrElseExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6153;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6155 */
+  ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6156 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrElseExpr___visit_all[] = "parser_prod::AOrElseExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AOrElseExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4850;
+  fra.me.line = 6160;
   fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -26801,34 +33137,34 @@ void parser___parser_prod___AOrElseExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4852 */
+  /* parser/parser_prod.nit:6162 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4852);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6162);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4853 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6163 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4853);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6163);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANotExpr___empty_init[] = "parser_prod::ANotExpr::empty_init";
 void parser___parser_prod___ANotExpr___empty_init(val_t p0, int* init_table){
-  int itpos145 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANotExpr].i;
+  int itpos144 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANotExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos145]) return;
+  if (init_table[itpos144]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4857;
+  fra.me.line = 6167;
   fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -26836,19 +33172,19 @@ void parser___parser_prod___ANotExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos145] = 1;
+  init_table[itpos144] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANotExpr___init_anotexpr[] = "parser_prod::ANotExpr::init_anotexpr";
 void parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos146 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANotExpr].i;
+  int itpos145 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANotExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos146]) return;
+  if (init_table[itpos145]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4859;
+  fra.me.line = 6169;
   fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___init_anotexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26860,41 +33196,41 @@ void parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4859 */
+  /* parser/parser_prod.nit:6169 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4864 */
+  /* parser/parser_prod.nit:6174 */
   CALL_parser___parser_prod___ANotExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4865 */
+  /* parser/parser_prod.nit:6175 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4865);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6175);
   }
   ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4866 */
+  /* parser/parser_prod.nit:6176 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4866);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6176);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4867 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6177 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4867);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6177);
   }
   ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4868 */
+  /* parser/parser_prod.nit:6178 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4868);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6178);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos146] = 1;
+  init_table[itpos145] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANotExpr___replace_child[] = "parser_prod::ANotExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ANotExpr___replace_child[] = "parser_prod::ANotExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ANotExpr___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;
@@ -26902,7 +33238,7 @@ void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4871;
+  fra.me.line = 6181;
   fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26914,11 +33250,11 @@ void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:4873 */
+  /* parser/parser_prod.nit:6183 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 4873);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 6183);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26928,7 +33264,7 @@ void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4874 */
+    /* parser/parser_prod.nit:6184 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26943,32 +33279,32 @@ void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4875 */
+      /* parser/parser_prod.nit:6185 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4875);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6185);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4876 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6186 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast TKwnot*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4876);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6186);
       }
-      /* parser/parser_prod.nit:4877 */
+      /* parser/parser_prod.nit:6187 */
       ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4879 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4879);
+      /* parser/parser_prod.nit:6189 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6189);
     }
-    /* parser/parser_prod.nit:4881 */
+    /* parser/parser_prod.nit:6191 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4883 */
+  /* parser/parser_prod.nit:6193 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4883);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6193);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -26978,7 +33314,7 @@ void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4884 */
+    /* parser/parser_prod.nit:6194 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -26993,39 +33329,83 @@ void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4885 */
+      /* parser/parser_prod.nit:6195 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4885);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6195);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4886 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6196 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4886);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6196);
       }
-      /* parser/parser_prod.nit:4887 */
+      /* parser/parser_prod.nit:6197 */
       ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4889 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4889);
+      /* parser/parser_prod.nit:6199 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6199);
     }
-    /* parser/parser_prod.nit:4891 */
+    /* parser/parser_prod.nit:6201 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANotExpr___visit_all[] = "parser_prod::ANotExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ANotExpr___n_kwnot__eq[] = "parser_prod::ANotExpr::(parser_nodes::ANotExpr::n_kwnot=)";
+void parser___parser_prod___ANotExpr___n_kwnot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6205;
+  fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___n_kwnot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6207 */
+  ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6208 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANotExpr___n_expr__eq[] = "parser_prod::ANotExpr::(parser_nodes::ANotExpr::n_expr=)";
+void parser___parser_prod___ANotExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6210;
+  fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6212 */
+  ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6213 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANotExpr___visit_all[] = "parser_prod::ANotExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ANotExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4895;
+  fra.me.line = 6217;
   fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -27035,34 +33415,34 @@ void parser___parser_prod___ANotExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4897 */
+  /* parser/parser_prod.nit:6219 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 4897);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 6219);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4898 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6220 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4898);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6220);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEqExpr___empty_init[] = "parser_prod::AEqExpr::empty_init";
 void parser___parser_prod___AEqExpr___empty_init(val_t p0, int* init_table){
-  int itpos147 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqExpr].i;
+  int itpos146 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos147]) return;
+  if (init_table[itpos146]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4902;
+  fra.me.line = 6224;
   fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -27070,19 +33450,19 @@ void parser___parser_prod___AEqExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos147] = 1;
+  init_table[itpos146] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEqExpr___init_aeqexpr[] = "parser_prod::AEqExpr::init_aeqexpr";
 void parser___parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos148 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqExpr].i;
+  int itpos147 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEqExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos148]) return;
+  if (init_table[itpos147]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4904;
+  fra.me.line = 6226;
   fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___init_aeqexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27094,41 +33474,41 @@ void parser___parser_prod___AEqExpr___init_aeqexpr(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_prod.nit:4904 */
+  /* parser/parser_prod.nit:6226 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4909 */
+  /* parser/parser_prod.nit:6231 */
   CALL_parser___parser_prod___AEqExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4910 */
+  /* parser/parser_prod.nit:6232 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4910);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6232);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4911 */
+  /* parser/parser_prod.nit:6233 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4911);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6233);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4912 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6234 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4912);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6234);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4913 */
+  /* parser/parser_prod.nit:6235 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4913);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6235);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos148] = 1;
+  init_table[itpos147] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEqExpr___replace_child[] = "parser_prod::AEqExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AEqExpr___replace_child[] = "parser_prod::AEqExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AEqExpr___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;
@@ -27136,7 +33516,7 @@ void parser___parser_prod___AEqExpr___replace_child(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___parser_prod;
-  fra.me.line = 4916;
+  fra.me.line = 6238;
   fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27148,11 +33528,11 @@ void parser___parser_prod___AEqExpr___replace_child(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_prod.nit:4918 */
+  /* parser/parser_prod.nit:6240 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4918);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6240);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27162,7 +33542,7 @@ void parser___parser_prod___AEqExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4919 */
+    /* parser/parser_prod.nit:6241 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27177,32 +33557,32 @@ void parser___parser_prod___AEqExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4920 */
+      /* parser/parser_prod.nit:6242 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4920);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6242);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4921 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6243 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4921);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6243);
       }
-      /* parser/parser_prod.nit:4922 */
+      /* parser/parser_prod.nit:6244 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4924 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4924);
+      /* parser/parser_prod.nit:6246 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6246);
     }
-    /* parser/parser_prod.nit:4926 */
+    /* parser/parser_prod.nit:6248 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4928 */
+  /* parser/parser_prod.nit:6250 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4928);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6250);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27212,7 +33592,7 @@ void parser___parser_prod___AEqExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4929 */
+    /* parser/parser_prod.nit:6251 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27227,39 +33607,83 @@ void parser___parser_prod___AEqExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4930 */
+      /* parser/parser_prod.nit:6252 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4930);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6252);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4931 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6253 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4931);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6253);
       }
-      /* parser/parser_prod.nit:4932 */
+      /* parser/parser_prod.nit:6254 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4934 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4934);
+      /* parser/parser_prod.nit:6256 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6256);
     }
-    /* parser/parser_prod.nit:4936 */
+    /* parser/parser_prod.nit:6258 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEqExpr___visit_all[] = "parser_prod::AEqExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AEqExpr___n_expr__eq[] = "parser_prod::AEqExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AEqExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6262;
+  fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6264 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6265 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEqExpr___n_expr2__eq[] = "parser_prod::AEqExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AEqExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6267;
+  fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6269 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6270 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEqExpr___visit_all[] = "parser_prod::AEqExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AEqExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4940;
+  fra.me.line = 6274;
   fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -27269,34 +33693,34 @@ void parser___parser_prod___AEqExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4942 */
+  /* parser/parser_prod.nit:6276 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4942);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6276);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4943 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6277 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4943);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6277);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEeExpr___empty_init[] = "parser_prod::AEeExpr::empty_init";
 void parser___parser_prod___AEeExpr___empty_init(val_t p0, int* init_table){
-  int itpos149 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEeExpr].i;
+  int itpos148 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos149]) return;
+  if (init_table[itpos148]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4947;
+  fra.me.line = 6281;
   fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -27304,19 +33728,19 @@ void parser___parser_prod___AEeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos149] = 1;
+  init_table[itpos148] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEeExpr___init_aeeexpr[] = "parser_prod::AEeExpr::init_aeeexpr";
 void parser___parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos150 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEeExpr].i;
+  int itpos149 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos150]) return;
+  if (init_table[itpos149]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4949;
+  fra.me.line = 6283;
   fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___init_aeeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27328,41 +33752,41 @@ void parser___parser_prod___AEeExpr___init_aeeexpr(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_prod.nit:4949 */
+  /* parser/parser_prod.nit:6283 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4954 */
+  /* parser/parser_prod.nit:6288 */
   CALL_parser___parser_prod___AEeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:4955 */
+  /* parser/parser_prod.nit:6289 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4955);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6289);
   }
   ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:4956 */
+  /* parser/parser_prod.nit:6290 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4956);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6290);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:4957 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6291 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4957);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6291);
   }
   ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:4958 */
+  /* parser/parser_prod.nit:6292 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4958);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6292);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos150] = 1;
+  init_table[itpos149] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEeExpr___replace_child[] = "parser_prod::AEeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AEeExpr___replace_child[] = "parser_prod::AEeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AEeExpr___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;
@@ -27370,7 +33794,7 @@ void parser___parser_prod___AEeExpr___replace_child(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___parser_prod;
-  fra.me.line = 4961;
+  fra.me.line = 6295;
   fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27382,11 +33806,11 @@ void parser___parser_prod___AEeExpr___replace_child(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_prod.nit:4963 */
+  /* parser/parser_prod.nit:6297 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4963);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6297);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27396,7 +33820,7 @@ void parser___parser_prod___AEeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4964 */
+    /* parser/parser_prod.nit:6298 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27411,32 +33835,32 @@ void parser___parser_prod___AEeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4965 */
+      /* parser/parser_prod.nit:6299 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4965);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6299);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4966 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6300 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4966);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6300);
       }
-      /* parser/parser_prod.nit:4967 */
+      /* parser/parser_prod.nit:6301 */
       ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4969 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4969);
+      /* parser/parser_prod.nit:6303 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6303);
     }
-    /* parser/parser_prod.nit:4971 */
+    /* parser/parser_prod.nit:6305 */
     goto label1;
   }
-  /* parser/parser_prod.nit:4973 */
+  /* parser/parser_prod.nit:6307 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4973);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6307);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27446,7 +33870,7 @@ void parser___parser_prod___AEeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:4974 */
+    /* parser/parser_prod.nit:6308 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27461,39 +33885,83 @@ void parser___parser_prod___AEeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:4975 */
+      /* parser/parser_prod.nit:6309 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4975);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6309);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:4976 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6310 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4976);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6310);
       }
-      /* parser/parser_prod.nit:4977 */
+      /* parser/parser_prod.nit:6311 */
       ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:4979 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 4979);
+      /* parser/parser_prod.nit:6313 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6313);
     }
-    /* parser/parser_prod.nit:4981 */
+    /* parser/parser_prod.nit:6315 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEeExpr___visit_all[] = "parser_prod::AEeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AEeExpr___n_expr__eq[] = "parser_prod::AEeExpr::(parser_nodes::AEeExpr::n_expr=)";
+void parser___parser_prod___AEeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6319;
+  fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6321 */
+  ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6322 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEeExpr___n_expr2__eq[] = "parser_prod::AEeExpr::(parser_nodes::AEeExpr::n_expr2=)";
+void parser___parser_prod___AEeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6324;
+  fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6326 */
+  ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6327 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEeExpr___visit_all[] = "parser_prod::AEeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AEeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4985;
+  fra.me.line = 6331;
   fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -27503,34 +33971,34 @@ void parser___parser_prod___AEeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:4987 */
+  /* parser/parser_prod.nit:6333 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 4987);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6333);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:4988 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6334 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 4988);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6334);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANeExpr___empty_init[] = "parser_prod::ANeExpr::empty_init";
 void parser___parser_prod___ANeExpr___empty_init(val_t p0, int* init_table){
-  int itpos151 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeExpr].i;
+  int itpos150 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos151]) return;
+  if (init_table[itpos150]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4992;
+  fra.me.line = 6338;
   fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -27538,19 +34006,19 @@ void parser___parser_prod___ANeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos151] = 1;
+  init_table[itpos150] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANeExpr___init_aneexpr[] = "parser_prod::ANeExpr::init_aneexpr";
 void parser___parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos152 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeExpr].i;
+  int itpos151 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos152]) return;
+  if (init_table[itpos151]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 4994;
+  fra.me.line = 6340;
   fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___init_aneexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27562,41 +34030,41 @@ void parser___parser_prod___ANeExpr___init_aneexpr(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_prod.nit:4994 */
+  /* parser/parser_prod.nit:6340 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:4999 */
+  /* parser/parser_prod.nit:6345 */
   CALL_parser___parser_prod___ANeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5000 */
+  /* parser/parser_prod.nit:6346 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5000);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6346);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5001 */
+  /* parser/parser_prod.nit:6347 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5001);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6347);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5002 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6348 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5002);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6348);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5003 */
+  /* parser/parser_prod.nit:6349 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5003);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6349);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos152] = 1;
+  init_table[itpos151] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANeExpr___replace_child[] = "parser_prod::ANeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ANeExpr___replace_child[] = "parser_prod::ANeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ANeExpr___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;
@@ -27604,7 +34072,7 @@ void parser___parser_prod___ANeExpr___replace_child(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___parser_prod;
-  fra.me.line = 5006;
+  fra.me.line = 6352;
   fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27616,11 +34084,11 @@ void parser___parser_prod___ANeExpr___replace_child(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_prod.nit:5008 */
+  /* parser/parser_prod.nit:6354 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5008);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6354);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27630,7 +34098,7 @@ void parser___parser_prod___ANeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5009 */
+    /* parser/parser_prod.nit:6355 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27645,32 +34113,32 @@ void parser___parser_prod___ANeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5010 */
+      /* parser/parser_prod.nit:6356 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5010);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6356);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5011 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6357 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5011);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6357);
       }
-      /* parser/parser_prod.nit:5012 */
+      /* parser/parser_prod.nit:6358 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5014 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5014);
+      /* parser/parser_prod.nit:6360 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6360);
     }
-    /* parser/parser_prod.nit:5016 */
+    /* parser/parser_prod.nit:6362 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5018 */
+  /* parser/parser_prod.nit:6364 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5018);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6364);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27680,7 +34148,7 @@ void parser___parser_prod___ANeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5019 */
+    /* parser/parser_prod.nit:6365 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27695,39 +34163,83 @@ void parser___parser_prod___ANeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5020 */
+      /* parser/parser_prod.nit:6366 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5020);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6366);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5021 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6367 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5021);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6367);
       }
-      /* parser/parser_prod.nit:5022 */
+      /* parser/parser_prod.nit:6368 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5024 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5024);
+      /* parser/parser_prod.nit:6370 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6370);
     }
-    /* parser/parser_prod.nit:5026 */
+    /* parser/parser_prod.nit:6372 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANeExpr___visit_all[] = "parser_prod::ANeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ANeExpr___n_expr__eq[] = "parser_prod::ANeExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ANeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6376;
+  fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6378 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6379 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANeExpr___n_expr2__eq[] = "parser_prod::ANeExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___ANeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6381;
+  fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6383 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6384 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANeExpr___visit_all[] = "parser_prod::ANeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ANeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5030;
+  fra.me.line = 6388;
   fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -27737,34 +34249,34 @@ void parser___parser_prod___ANeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5032 */
+  /* parser/parser_prod.nit:6390 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5032);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6390);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5033 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6391 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5033);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6391);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALtExpr___empty_init[] = "parser_prod::ALtExpr::empty_init";
 void parser___parser_prod___ALtExpr___empty_init(val_t p0, int* init_table){
-  int itpos153 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtExpr].i;
+  int itpos152 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos153]) return;
+  if (init_table[itpos152]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5037;
+  fra.me.line = 6395;
   fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -27772,19 +34284,19 @@ void parser___parser_prod___ALtExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos153] = 1;
+  init_table[itpos152] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALtExpr___init_altexpr[] = "parser_prod::ALtExpr::init_altexpr";
 void parser___parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos154 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtExpr].i;
+  int itpos153 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALtExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos154]) return;
+  if (init_table[itpos153]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5039;
+  fra.me.line = 6397;
   fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___init_altexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27796,41 +34308,41 @@ void parser___parser_prod___ALtExpr___init_altexpr(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_prod.nit:5039 */
+  /* parser/parser_prod.nit:6397 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5044 */
+  /* parser/parser_prod.nit:6402 */
   CALL_parser___parser_prod___ALtExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5045 */
+  /* parser/parser_prod.nit:6403 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5045);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6403);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5046 */
+  /* parser/parser_prod.nit:6404 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5046);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6404);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5047 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6405 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5047);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6405);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5048 */
+  /* parser/parser_prod.nit:6406 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5048);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6406);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos154] = 1;
+  init_table[itpos153] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALtExpr___replace_child[] = "parser_prod::ALtExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALtExpr___replace_child[] = "parser_prod::ALtExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALtExpr___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;
@@ -27838,7 +34350,7 @@ void parser___parser_prod___ALtExpr___replace_child(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___parser_prod;
-  fra.me.line = 5051;
+  fra.me.line = 6409;
   fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -27850,11 +34362,11 @@ void parser___parser_prod___ALtExpr___replace_child(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_prod.nit:5053 */
+  /* parser/parser_prod.nit:6411 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5053);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6411);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27864,7 +34376,7 @@ void parser___parser_prod___ALtExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5054 */
+    /* parser/parser_prod.nit:6412 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27879,32 +34391,32 @@ void parser___parser_prod___ALtExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5055 */
+      /* parser/parser_prod.nit:6413 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5055);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6413);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5056 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6414 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5056);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6414);
       }
-      /* parser/parser_prod.nit:5057 */
+      /* parser/parser_prod.nit:6415 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5059 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5059);
+      /* parser/parser_prod.nit:6417 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6417);
     }
-    /* parser/parser_prod.nit:5061 */
+    /* parser/parser_prod.nit:6419 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5063 */
+  /* parser/parser_prod.nit:6421 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5063);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6421);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -27914,7 +34426,7 @@ void parser___parser_prod___ALtExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5064 */
+    /* parser/parser_prod.nit:6422 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -27929,39 +34441,83 @@ void parser___parser_prod___ALtExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5065 */
+      /* parser/parser_prod.nit:6423 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5065);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6423);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5066 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6424 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5066);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6424);
       }
-      /* parser/parser_prod.nit:5067 */
+      /* parser/parser_prod.nit:6425 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5069 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5069);
+      /* parser/parser_prod.nit:6427 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6427);
     }
-    /* parser/parser_prod.nit:5071 */
+    /* parser/parser_prod.nit:6429 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALtExpr___visit_all[] = "parser_prod::ALtExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALtExpr___n_expr__eq[] = "parser_prod::ALtExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ALtExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6433;
+  fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6435 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6436 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALtExpr___n_expr2__eq[] = "parser_prod::ALtExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___ALtExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6438;
+  fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6440 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6441 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALtExpr___visit_all[] = "parser_prod::ALtExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALtExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5075;
+  fra.me.line = 6445;
   fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -27971,34 +34527,34 @@ void parser___parser_prod___ALtExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5077 */
+  /* parser/parser_prod.nit:6447 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5077);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6447);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5078 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6448 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5078);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6448);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALeExpr___empty_init[] = "parser_prod::ALeExpr::empty_init";
 void parser___parser_prod___ALeExpr___empty_init(val_t p0, int* init_table){
-  int itpos155 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeExpr].i;
+  int itpos154 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos155]) return;
+  if (init_table[itpos154]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5082;
+  fra.me.line = 6452;
   fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -28006,19 +34562,19 @@ void parser___parser_prod___ALeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos155] = 1;
+  init_table[itpos154] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALeExpr___init_aleexpr[] = "parser_prod::ALeExpr::init_aleexpr";
 void parser___parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos156 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeExpr].i;
+  int itpos155 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos156]) return;
+  if (init_table[itpos155]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5084;
+  fra.me.line = 6454;
   fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___init_aleexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28030,41 +34586,41 @@ void parser___parser_prod___ALeExpr___init_aleexpr(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_prod.nit:5084 */
+  /* parser/parser_prod.nit:6454 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5089 */
+  /* parser/parser_prod.nit:6459 */
   CALL_parser___parser_prod___ALeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5090 */
+  /* parser/parser_prod.nit:6460 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5090);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6460);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5091 */
+  /* parser/parser_prod.nit:6461 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5091);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6461);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5092 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6462 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5092);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6462);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5093 */
+  /* parser/parser_prod.nit:6463 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5093);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6463);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos156] = 1;
+  init_table[itpos155] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALeExpr___replace_child[] = "parser_prod::ALeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALeExpr___replace_child[] = "parser_prod::ALeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALeExpr___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;
@@ -28072,7 +34628,7 @@ void parser___parser_prod___ALeExpr___replace_child(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___parser_prod;
-  fra.me.line = 5096;
+  fra.me.line = 6466;
   fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28084,11 +34640,11 @@ void parser___parser_prod___ALeExpr___replace_child(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_prod.nit:5098 */
+  /* parser/parser_prod.nit:6468 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5098);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6468);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28098,7 +34654,7 @@ void parser___parser_prod___ALeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5099 */
+    /* parser/parser_prod.nit:6469 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28113,32 +34669,32 @@ void parser___parser_prod___ALeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5100 */
+      /* parser/parser_prod.nit:6470 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5100);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6470);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5101 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6471 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5101);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6471);
       }
-      /* parser/parser_prod.nit:5102 */
+      /* parser/parser_prod.nit:6472 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5104 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5104);
+      /* parser/parser_prod.nit:6474 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6474);
     }
-    /* parser/parser_prod.nit:5106 */
+    /* parser/parser_prod.nit:6476 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5108 */
+  /* parser/parser_prod.nit:6478 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5108);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6478);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28148,7 +34704,7 @@ void parser___parser_prod___ALeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5109 */
+    /* parser/parser_prod.nit:6479 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28163,39 +34719,83 @@ void parser___parser_prod___ALeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5110 */
+      /* parser/parser_prod.nit:6480 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5110);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6480);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5111 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6481 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5111);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6481);
       }
-      /* parser/parser_prod.nit:5112 */
+      /* parser/parser_prod.nit:6482 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5114 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5114);
+      /* parser/parser_prod.nit:6484 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6484);
     }
-    /* parser/parser_prod.nit:5116 */
+    /* parser/parser_prod.nit:6486 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALeExpr___visit_all[] = "parser_prod::ALeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALeExpr___n_expr__eq[] = "parser_prod::ALeExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ALeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6490;
+  fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6492 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6493 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALeExpr___n_expr2__eq[] = "parser_prod::ALeExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___ALeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6495;
+  fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6497 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6498 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALeExpr___visit_all[] = "parser_prod::ALeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5120;
+  fra.me.line = 6502;
   fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -28205,34 +34805,34 @@ void parser___parser_prod___ALeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5122 */
+  /* parser/parser_prod.nit:6504 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5122);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6504);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5123 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6505 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5123);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6505);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALlExpr___empty_init[] = "parser_prod::ALlExpr::empty_init";
 void parser___parser_prod___ALlExpr___empty_init(val_t p0, int* init_table){
-  int itpos157 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlExpr].i;
+  int itpos156 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos157]) return;
+  if (init_table[itpos156]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5127;
+  fra.me.line = 6509;
   fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -28240,19 +34840,19 @@ void parser___parser_prod___ALlExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos157] = 1;
+  init_table[itpos156] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALlExpr___init_allexpr[] = "parser_prod::ALlExpr::init_allexpr";
 void parser___parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos158 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlExpr].i;
+  int itpos157 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALlExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos158]) return;
+  if (init_table[itpos157]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5129;
+  fra.me.line = 6511;
   fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___init_allexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28264,41 +34864,41 @@ void parser___parser_prod___ALlExpr___init_allexpr(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_prod.nit:5129 */
+  /* parser/parser_prod.nit:6511 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5134 */
+  /* parser/parser_prod.nit:6516 */
   CALL_parser___parser_prod___ALlExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5135 */
+  /* parser/parser_prod.nit:6517 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5135);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6517);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5136 */
+  /* parser/parser_prod.nit:6518 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5136);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6518);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5137 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6519 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5137);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6519);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5138 */
+  /* parser/parser_prod.nit:6520 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5138);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6520);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos158] = 1;
+  init_table[itpos157] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALlExpr___replace_child[] = "parser_prod::ALlExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALlExpr___replace_child[] = "parser_prod::ALlExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALlExpr___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;
@@ -28306,7 +34906,7 @@ void parser___parser_prod___ALlExpr___replace_child(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___parser_prod;
-  fra.me.line = 5141;
+  fra.me.line = 6523;
   fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28318,11 +34918,11 @@ void parser___parser_prod___ALlExpr___replace_child(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_prod.nit:5143 */
+  /* parser/parser_prod.nit:6525 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5143);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6525);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28332,7 +34932,7 @@ void parser___parser_prod___ALlExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5144 */
+    /* parser/parser_prod.nit:6526 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28347,32 +34947,32 @@ void parser___parser_prod___ALlExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5145 */
+      /* parser/parser_prod.nit:6527 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5145);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6527);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5146 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6528 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5146);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6528);
       }
-      /* parser/parser_prod.nit:5147 */
+      /* parser/parser_prod.nit:6529 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5149 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5149);
+      /* parser/parser_prod.nit:6531 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6531);
     }
-    /* parser/parser_prod.nit:5151 */
+    /* parser/parser_prod.nit:6533 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5153 */
+  /* parser/parser_prod.nit:6535 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5153);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6535);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28382,7 +34982,7 @@ void parser___parser_prod___ALlExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5154 */
+    /* parser/parser_prod.nit:6536 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28397,39 +34997,83 @@ void parser___parser_prod___ALlExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5155 */
+      /* parser/parser_prod.nit:6537 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5155);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6537);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5156 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6538 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5156);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6538);
       }
-      /* parser/parser_prod.nit:5157 */
+      /* parser/parser_prod.nit:6539 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5159 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5159);
+      /* parser/parser_prod.nit:6541 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6541);
     }
-    /* parser/parser_prod.nit:5161 */
+    /* parser/parser_prod.nit:6543 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALlExpr___visit_all[] = "parser_prod::ALlExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALlExpr___n_expr__eq[] = "parser_prod::ALlExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ALlExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6547;
+  fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6549 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6550 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALlExpr___n_expr2__eq[] = "parser_prod::ALlExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___ALlExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6552;
+  fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6554 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6555 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALlExpr___visit_all[] = "parser_prod::ALlExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALlExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5165;
+  fra.me.line = 6559;
   fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -28439,34 +35083,34 @@ void parser___parser_prod___ALlExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5167 */
+  /* parser/parser_prod.nit:6561 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5167);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6561);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5168 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6562 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5168);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6562);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGtExpr___empty_init[] = "parser_prod::AGtExpr::empty_init";
 void parser___parser_prod___AGtExpr___empty_init(val_t p0, int* init_table){
-  int itpos159 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtExpr].i;
+  int itpos158 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos159]) return;
+  if (init_table[itpos158]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5172;
+  fra.me.line = 6566;
   fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -28474,19 +35118,19 @@ void parser___parser_prod___AGtExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos159] = 1;
+  init_table[itpos158] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGtExpr___init_agtexpr[] = "parser_prod::AGtExpr::init_agtexpr";
 void parser___parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos160 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtExpr].i;
+  int itpos159 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGtExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos160]) return;
+  if (init_table[itpos159]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5174;
+  fra.me.line = 6568;
   fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___init_agtexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28498,41 +35142,41 @@ void parser___parser_prod___AGtExpr___init_agtexpr(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_prod.nit:5174 */
+  /* parser/parser_prod.nit:6568 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5179 */
+  /* parser/parser_prod.nit:6573 */
   CALL_parser___parser_prod___AGtExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5180 */
+  /* parser/parser_prod.nit:6574 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5180);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6574);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5181 */
+  /* parser/parser_prod.nit:6575 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5181);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6575);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5182 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6576 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5182);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6576);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5183 */
+  /* parser/parser_prod.nit:6577 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5183);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6577);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos160] = 1;
+  init_table[itpos159] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGtExpr___replace_child[] = "parser_prod::AGtExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AGtExpr___replace_child[] = "parser_prod::AGtExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AGtExpr___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;
@@ -28540,7 +35184,7 @@ void parser___parser_prod___AGtExpr___replace_child(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___parser_prod;
-  fra.me.line = 5186;
+  fra.me.line = 6580;
   fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28552,11 +35196,11 @@ void parser___parser_prod___AGtExpr___replace_child(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_prod.nit:5188 */
+  /* parser/parser_prod.nit:6582 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5188);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6582);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28566,7 +35210,7 @@ void parser___parser_prod___AGtExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5189 */
+    /* parser/parser_prod.nit:6583 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28581,32 +35225,32 @@ void parser___parser_prod___AGtExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5190 */
+      /* parser/parser_prod.nit:6584 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5190);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6584);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5191 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6585 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5191);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6585);
       }
-      /* parser/parser_prod.nit:5192 */
+      /* parser/parser_prod.nit:6586 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5194 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5194);
+      /* parser/parser_prod.nit:6588 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6588);
     }
-    /* parser/parser_prod.nit:5196 */
+    /* parser/parser_prod.nit:6590 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5198 */
+  /* parser/parser_prod.nit:6592 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5198);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6592);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28616,7 +35260,7 @@ void parser___parser_prod___AGtExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5199 */
+    /* parser/parser_prod.nit:6593 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28631,39 +35275,83 @@ void parser___parser_prod___AGtExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5200 */
+      /* parser/parser_prod.nit:6594 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5200);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6594);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5201 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6595 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5201);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6595);
       }
-      /* parser/parser_prod.nit:5202 */
+      /* parser/parser_prod.nit:6596 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5204 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5204);
+      /* parser/parser_prod.nit:6598 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6598);
     }
-    /* parser/parser_prod.nit:5206 */
+    /* parser/parser_prod.nit:6600 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGtExpr___visit_all[] = "parser_prod::AGtExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AGtExpr___n_expr__eq[] = "parser_prod::AGtExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AGtExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6604;
+  fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6606 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6607 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGtExpr___n_expr2__eq[] = "parser_prod::AGtExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AGtExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6609;
+  fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6611 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6612 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGtExpr___visit_all[] = "parser_prod::AGtExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AGtExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5210;
+  fra.me.line = 6616;
   fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -28673,34 +35361,34 @@ void parser___parser_prod___AGtExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5212 */
+  /* parser/parser_prod.nit:6618 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5212);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6618);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5213 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6619 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5213);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6619);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGeExpr___empty_init[] = "parser_prod::AGeExpr::empty_init";
 void parser___parser_prod___AGeExpr___empty_init(val_t p0, int* init_table){
-  int itpos161 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeExpr].i;
+  int itpos160 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos161]) return;
+  if (init_table[itpos160]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5217;
+  fra.me.line = 6623;
   fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -28708,19 +35396,19 @@ void parser___parser_prod___AGeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos161] = 1;
+  init_table[itpos160] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGeExpr___init_ageexpr[] = "parser_prod::AGeExpr::init_ageexpr";
 void parser___parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos162 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeExpr].i;
+  int itpos161 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos162]) return;
+  if (init_table[itpos161]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5219;
+  fra.me.line = 6625;
   fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___init_ageexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28732,41 +35420,41 @@ void parser___parser_prod___AGeExpr___init_ageexpr(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_prod.nit:5219 */
+  /* parser/parser_prod.nit:6625 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5224 */
+  /* parser/parser_prod.nit:6630 */
   CALL_parser___parser_prod___AGeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5225 */
+  /* parser/parser_prod.nit:6631 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5225);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6631);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5226 */
+  /* parser/parser_prod.nit:6632 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5226);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6632);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5227 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6633 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5227);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6633);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5228 */
+  /* parser/parser_prod.nit:6634 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5228);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6634);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos162] = 1;
+  init_table[itpos161] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGeExpr___replace_child[] = "parser_prod::AGeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AGeExpr___replace_child[] = "parser_prod::AGeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AGeExpr___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;
@@ -28774,7 +35462,7 @@ void parser___parser_prod___AGeExpr___replace_child(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___parser_prod;
-  fra.me.line = 5231;
+  fra.me.line = 6637;
   fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28786,11 +35474,11 @@ void parser___parser_prod___AGeExpr___replace_child(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_prod.nit:5233 */
+  /* parser/parser_prod.nit:6639 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5233);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6639);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28800,7 +35488,7 @@ void parser___parser_prod___AGeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5234 */
+    /* parser/parser_prod.nit:6640 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28815,32 +35503,32 @@ void parser___parser_prod___AGeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5235 */
+      /* parser/parser_prod.nit:6641 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5235);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6641);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5236 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6642 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5236);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6642);
       }
-      /* parser/parser_prod.nit:5237 */
+      /* parser/parser_prod.nit:6643 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5239 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5239);
+      /* parser/parser_prod.nit:6645 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6645);
     }
-    /* parser/parser_prod.nit:5241 */
+    /* parser/parser_prod.nit:6647 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5243 */
+  /* parser/parser_prod.nit:6649 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5243);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6649);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -28850,7 +35538,7 @@ void parser___parser_prod___AGeExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5244 */
+    /* parser/parser_prod.nit:6650 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -28865,39 +35553,83 @@ void parser___parser_prod___AGeExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5245 */
+      /* parser/parser_prod.nit:6651 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5245);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6651);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5246 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6652 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5246);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6652);
       }
-      /* parser/parser_prod.nit:5247 */
+      /* parser/parser_prod.nit:6653 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5249 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5249);
+      /* parser/parser_prod.nit:6655 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6655);
     }
-    /* parser/parser_prod.nit:5251 */
+    /* parser/parser_prod.nit:6657 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGeExpr___visit_all[] = "parser_prod::AGeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AGeExpr___n_expr__eq[] = "parser_prod::AGeExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AGeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6661;
+  fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6663 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6664 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGeExpr___n_expr2__eq[] = "parser_prod::AGeExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AGeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6666;
+  fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6668 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6669 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGeExpr___visit_all[] = "parser_prod::AGeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AGeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5255;
+  fra.me.line = 6673;
   fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -28907,34 +35639,34 @@ void parser___parser_prod___AGeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5257 */
+  /* parser/parser_prod.nit:6675 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5257);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6675);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5258 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6676 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5258);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6676);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGgExpr___empty_init[] = "parser_prod::AGgExpr::empty_init";
 void parser___parser_prod___AGgExpr___empty_init(val_t p0, int* init_table){
-  int itpos163 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgExpr].i;
+  int itpos162 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos163]) return;
+  if (init_table[itpos162]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5262;
+  fra.me.line = 6680;
   fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -28942,19 +35674,19 @@ void parser___parser_prod___AGgExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos163] = 1;
+  init_table[itpos162] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AGgExpr___init_aggexpr[] = "parser_prod::AGgExpr::init_aggexpr";
 void parser___parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos164 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgExpr].i;
+  int itpos163 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AGgExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos164]) return;
+  if (init_table[itpos163]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5264;
+  fra.me.line = 6682;
   fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___init_aggexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28966,41 +35698,41 @@ void parser___parser_prod___AGgExpr___init_aggexpr(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_prod.nit:5264 */
+  /* parser/parser_prod.nit:6682 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5269 */
+  /* parser/parser_prod.nit:6687 */
   CALL_parser___parser_prod___AGgExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5270 */
+  /* parser/parser_prod.nit:6688 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5270);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6688);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5271 */
+  /* parser/parser_prod.nit:6689 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5271);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6689);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5272 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6690 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5272);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6690);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5273 */
+  /* parser/parser_prod.nit:6691 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5273);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6691);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos164] = 1;
+  init_table[itpos163] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGgExpr___replace_child[] = "parser_prod::AGgExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AGgExpr___replace_child[] = "parser_prod::AGgExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AGgExpr___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;
@@ -29008,7 +35740,7 @@ void parser___parser_prod___AGgExpr___replace_child(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___parser_prod;
-  fra.me.line = 5276;
+  fra.me.line = 6694;
   fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29020,11 +35752,11 @@ void parser___parser_prod___AGgExpr___replace_child(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_prod.nit:5278 */
+  /* parser/parser_prod.nit:6696 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5278);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6696);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29034,7 +35766,7 @@ void parser___parser_prod___AGgExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5279 */
+    /* parser/parser_prod.nit:6697 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29049,32 +35781,32 @@ void parser___parser_prod___AGgExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5280 */
+      /* parser/parser_prod.nit:6698 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5280);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6698);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5281 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6699 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5281);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6699);
       }
-      /* parser/parser_prod.nit:5282 */
+      /* parser/parser_prod.nit:6700 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5284 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5284);
+      /* parser/parser_prod.nit:6702 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6702);
     }
-    /* parser/parser_prod.nit:5286 */
+    /* parser/parser_prod.nit:6704 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5288 */
+  /* parser/parser_prod.nit:6706 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5288);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6706);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29084,7 +35816,7 @@ void parser___parser_prod___AGgExpr___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5289 */
+    /* parser/parser_prod.nit:6707 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29099,39 +35831,83 @@ void parser___parser_prod___AGgExpr___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5290 */
+      /* parser/parser_prod.nit:6708 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5290);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6708);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5291 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6709 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5291);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6709);
       }
-      /* parser/parser_prod.nit:5292 */
+      /* parser/parser_prod.nit:6710 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5294 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5294);
+      /* parser/parser_prod.nit:6712 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6712);
     }
-    /* parser/parser_prod.nit:5296 */
+    /* parser/parser_prod.nit:6714 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AGgExpr___visit_all[] = "parser_prod::AGgExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AGgExpr___n_expr__eq[] = "parser_prod::AGgExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AGgExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6718;
+  fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6720 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6721 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGgExpr___n_expr2__eq[] = "parser_prod::AGgExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AGgExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6723;
+  fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6725 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6726 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AGgExpr___visit_all[] = "parser_prod::AGgExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AGgExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5300;
+  fra.me.line = 6730;
   fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -29141,34 +35917,34 @@ void parser___parser_prod___AGgExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5302 */
+  /* parser/parser_prod.nit:6732 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5302);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6732);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5303 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6733 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5303);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6733);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIsaExpr___empty_init[] = "parser_prod::AIsaExpr::empty_init";
 void parser___parser_prod___AIsaExpr___empty_init(val_t p0, int* init_table){
-  int itpos165 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIsaExpr].i;
+  int itpos164 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIsaExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos165]) return;
+  if (init_table[itpos164]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5307;
+  fra.me.line = 6737;
   fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -29176,19 +35952,19 @@ void parser___parser_prod___AIsaExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos165] = 1;
+  init_table[itpos164] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIsaExpr___init_aisaexpr[] = "parser_prod::AIsaExpr::init_aisaexpr";
 void parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos166 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIsaExpr].i;
+  int itpos165 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIsaExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos166]) return;
+  if (init_table[itpos165]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5309;
+  fra.me.line = 6739;
   fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___init_aisaexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29200,41 +35976,41 @@ void parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5309 */
+  /* parser/parser_prod.nit:6739 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5314 */
+  /* parser/parser_prod.nit:6744 */
   CALL_parser___parser_prod___AIsaExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5315 */
+  /* parser/parser_prod.nit:6745 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5315);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6745);
   }
   ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5316 */
+  /* parser/parser_prod.nit:6746 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5316);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6746);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5317 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6747 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5317);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6747);
   }
   ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5318 */
+  /* parser/parser_prod.nit:6748 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5318);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6748);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos166] = 1;
+  init_table[itpos165] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIsaExpr___replace_child[] = "parser_prod::AIsaExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIsaExpr___replace_child[] = "parser_prod::AIsaExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIsaExpr___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;
@@ -29242,7 +36018,7 @@ void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5321;
+  fra.me.line = 6751;
   fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29254,11 +36030,11 @@ void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5323 */
+  /* parser/parser_prod.nit:6753 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5323);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6753);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29268,7 +36044,7 @@ void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5324 */
+    /* parser/parser_prod.nit:6754 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29283,32 +36059,32 @@ void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5325 */
+      /* parser/parser_prod.nit:6755 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5325);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6755);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5326 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6756 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5326);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6756);
       }
-      /* parser/parser_prod.nit:5327 */
+      /* parser/parser_prod.nit:6757 */
       ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5329 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5329);
+      /* parser/parser_prod.nit:6759 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6759);
     }
-    /* parser/parser_prod.nit:5331 */
+    /* parser/parser_prod.nit:6761 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5333 */
+  /* parser/parser_prod.nit:6763 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 5333);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 6763);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29318,7 +36094,7 @@ void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5334 */
+    /* parser/parser_prod.nit:6764 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29333,39 +36109,83 @@ void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5335 */
+      /* parser/parser_prod.nit:6765 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5335);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6765);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5336 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6766 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5336);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6766);
       }
-      /* parser/parser_prod.nit:5337 */
+      /* parser/parser_prod.nit:6767 */
       ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5339 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5339);
+      /* parser/parser_prod.nit:6769 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6769);
     }
-    /* parser/parser_prod.nit:5341 */
+    /* parser/parser_prod.nit:6771 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIsaExpr___visit_all[] = "parser_prod::AIsaExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIsaExpr___n_expr__eq[] = "parser_prod::AIsaExpr::(parser_nodes::AIsaExpr::n_expr=)";
+void parser___parser_prod___AIsaExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6775;
+  fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6777 */
+  ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6778 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIsaExpr___n_type__eq[] = "parser_prod::AIsaExpr::(parser_nodes::AIsaExpr::n_type=)";
+void parser___parser_prod___AIsaExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6780;
+  fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6782 */
+  ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6783 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIsaExpr___visit_all[] = "parser_prod::AIsaExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIsaExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5345;
+  fra.me.line = 6787;
   fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -29375,34 +36195,34 @@ void parser___parser_prod___AIsaExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5347 */
+  /* parser/parser_prod.nit:6789 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5347);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6789);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5348 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6790 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 5348);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 6790);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___APlusExpr___empty_init[] = "parser_prod::APlusExpr::empty_init";
 void parser___parser_prod___APlusExpr___empty_init(val_t p0, int* init_table){
-  int itpos167 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusExpr].i;
+  int itpos166 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos167]) return;
+  if (init_table[itpos166]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5352;
+  fra.me.line = 6794;
   fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -29410,19 +36230,19 @@ void parser___parser_prod___APlusExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos167] = 1;
+  init_table[itpos166] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APlusExpr___init_aplusexpr[] = "parser_prod::APlusExpr::init_aplusexpr";
 void parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos168 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusExpr].i;
+  int itpos167 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos168]) return;
+  if (init_table[itpos167]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5354;
+  fra.me.line = 6796;
   fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___init_aplusexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29434,41 +36254,41 @@ void parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5354 */
+  /* parser/parser_prod.nit:6796 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5359 */
+  /* parser/parser_prod.nit:6801 */
   CALL_parser___parser_prod___APlusExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5360 */
+  /* parser/parser_prod.nit:6802 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5360);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6802);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5361 */
+  /* parser/parser_prod.nit:6803 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5361);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6803);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5362 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6804 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5362);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6804);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5363 */
+  /* parser/parser_prod.nit:6805 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5363);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6805);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos168] = 1;
+  init_table[itpos167] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APlusExpr___replace_child[] = "parser_prod::APlusExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APlusExpr___replace_child[] = "parser_prod::APlusExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APlusExpr___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;
@@ -29476,7 +36296,7 @@ void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5366;
+  fra.me.line = 6808;
   fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29488,11 +36308,11 @@ void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5368 */
+  /* parser/parser_prod.nit:6810 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5368);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6810);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29502,7 +36322,7 @@ void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5369 */
+    /* parser/parser_prod.nit:6811 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29517,32 +36337,32 @@ void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5370 */
+      /* parser/parser_prod.nit:6812 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5370);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6812);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5371 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6813 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5371);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6813);
       }
-      /* parser/parser_prod.nit:5372 */
+      /* parser/parser_prod.nit:6814 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5374 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5374);
+      /* parser/parser_prod.nit:6816 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6816);
     }
-    /* parser/parser_prod.nit:5376 */
+    /* parser/parser_prod.nit:6818 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5378 */
+  /* parser/parser_prod.nit:6820 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5378);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6820);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29552,7 +36372,7 @@ void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5379 */
+    /* parser/parser_prod.nit:6821 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29567,39 +36387,83 @@ void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5380 */
+      /* parser/parser_prod.nit:6822 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5380);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6822);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5381 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6823 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5381);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6823);
       }
-      /* parser/parser_prod.nit:5382 */
+      /* parser/parser_prod.nit:6824 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5384 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5384);
+      /* parser/parser_prod.nit:6826 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6826);
     }
-    /* parser/parser_prod.nit:5386 */
+    /* parser/parser_prod.nit:6828 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APlusExpr___visit_all[] = "parser_prod::APlusExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APlusExpr___n_expr__eq[] = "parser_prod::APlusExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___APlusExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6832;
+  fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6834 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6835 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APlusExpr___n_expr2__eq[] = "parser_prod::APlusExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___APlusExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6837;
+  fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6839 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6840 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APlusExpr___visit_all[] = "parser_prod::APlusExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APlusExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5390;
+  fra.me.line = 6844;
   fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -29609,34 +36473,34 @@ void parser___parser_prod___APlusExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5392 */
+  /* parser/parser_prod.nit:6846 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5392);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6846);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5393 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6847 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5393);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6847);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMinusExpr___empty_init[] = "parser_prod::AMinusExpr::empty_init";
 void parser___parser_prod___AMinusExpr___empty_init(val_t p0, int* init_table){
-  int itpos169 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusExpr].i;
+  int itpos168 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos169]) return;
+  if (init_table[itpos168]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5397;
+  fra.me.line = 6851;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -29644,19 +36508,19 @@ void parser___parser_prod___AMinusExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos169] = 1;
+  init_table[itpos168] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMinusExpr___init_aminusexpr[] = "parser_prod::AMinusExpr::init_aminusexpr";
 void parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos170 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusExpr].i;
+  int itpos169 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos170]) return;
+  if (init_table[itpos169]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5399;
+  fra.me.line = 6853;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___init_aminusexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29668,41 +36532,41 @@ void parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5399 */
+  /* parser/parser_prod.nit:6853 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5404 */
+  /* parser/parser_prod.nit:6858 */
   CALL_parser___parser_prod___AMinusExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5405 */
+  /* parser/parser_prod.nit:6859 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5405);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6859);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5406 */
+  /* parser/parser_prod.nit:6860 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5406);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6860);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5407 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6861 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5407);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6861);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5408 */
+  /* parser/parser_prod.nit:6862 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5408);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6862);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos170] = 1;
+  init_table[itpos169] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMinusExpr___replace_child[] = "parser_prod::AMinusExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMinusExpr___replace_child[] = "parser_prod::AMinusExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMinusExpr___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;
@@ -29710,7 +36574,7 @@ void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5411;
+  fra.me.line = 6865;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29722,11 +36586,11 @@ void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5413 */
+  /* parser/parser_prod.nit:6867 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5413);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6867);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29736,7 +36600,7 @@ void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5414 */
+    /* parser/parser_prod.nit:6868 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29751,32 +36615,32 @@ void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5415 */
+      /* parser/parser_prod.nit:6869 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5415);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6869);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5416 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6870 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5416);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6870);
       }
-      /* parser/parser_prod.nit:5417 */
+      /* parser/parser_prod.nit:6871 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5419 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5419);
+      /* parser/parser_prod.nit:6873 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6873);
     }
-    /* parser/parser_prod.nit:5421 */
+    /* parser/parser_prod.nit:6875 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5423 */
+  /* parser/parser_prod.nit:6877 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5423);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6877);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29786,7 +36650,7 @@ void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5424 */
+    /* parser/parser_prod.nit:6878 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29801,39 +36665,83 @@ void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5425 */
+      /* parser/parser_prod.nit:6879 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5425);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6879);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5426 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6880 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5426);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6880);
       }
-      /* parser/parser_prod.nit:5427 */
+      /* parser/parser_prod.nit:6881 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5429 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5429);
+      /* parser/parser_prod.nit:6883 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6883);
     }
-    /* parser/parser_prod.nit:5431 */
+    /* parser/parser_prod.nit:6885 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMinusExpr___visit_all[] = "parser_prod::AMinusExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMinusExpr___n_expr__eq[] = "parser_prod::AMinusExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AMinusExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6889;
+  fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6891 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6892 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMinusExpr___n_expr2__eq[] = "parser_prod::AMinusExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AMinusExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6894;
+  fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6896 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6897 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMinusExpr___visit_all[] = "parser_prod::AMinusExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMinusExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5435;
+  fra.me.line = 6901;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -29843,34 +36751,34 @@ void parser___parser_prod___AMinusExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5437 */
+  /* parser/parser_prod.nit:6903 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5437);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6903);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5438 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6904 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5438);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6904);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarshipExpr___empty_init[] = "parser_prod::AStarshipExpr::empty_init";
 void parser___parser_prod___AStarshipExpr___empty_init(val_t p0, int* init_table){
-  int itpos171 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipExpr].i;
+  int itpos170 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos171]) return;
+  if (init_table[itpos170]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5442;
+  fra.me.line = 6908;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -29878,19 +36786,19 @@ void parser___parser_prod___AStarshipExpr___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos171] = 1;
+  init_table[itpos170] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarshipExpr___init_astarshipexpr[] = "parser_prod::AStarshipExpr::init_astarshipexpr";
 void parser___parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos172 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipExpr].i;
+  int itpos171 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarshipExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos172]) return;
+  if (init_table[itpos171]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5444;
+  fra.me.line = 6910;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___init_astarshipexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29902,41 +36810,41 @@ void parser___parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5444 */
+  /* parser/parser_prod.nit:6910 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5449 */
+  /* parser/parser_prod.nit:6915 */
   CALL_parser___parser_prod___AStarshipExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5450 */
+  /* parser/parser_prod.nit:6916 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5450);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6916);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5451 */
+  /* parser/parser_prod.nit:6917 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5451);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6917);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5452 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6918 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5452);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6918);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5453 */
+  /* parser/parser_prod.nit:6919 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5453);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6919);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos172] = 1;
+  init_table[itpos171] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarshipExpr___replace_child[] = "parser_prod::AStarshipExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStarshipExpr___replace_child[] = "parser_prod::AStarshipExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStarshipExpr___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;
@@ -29944,7 +36852,7 @@ void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5456;
+  fra.me.line = 6922;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29956,11 +36864,11 @@ void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5458 */
+  /* parser/parser_prod.nit:6924 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5458);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6924);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -29970,7 +36878,7 @@ void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5459 */
+    /* parser/parser_prod.nit:6925 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -29985,32 +36893,32 @@ void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5460 */
+      /* parser/parser_prod.nit:6926 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5460);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6926);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5461 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6927 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5461);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6927);
       }
-      /* parser/parser_prod.nit:5462 */
+      /* parser/parser_prod.nit:6928 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5464 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5464);
+      /* parser/parser_prod.nit:6930 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6930);
     }
-    /* parser/parser_prod.nit:5466 */
+    /* parser/parser_prod.nit:6932 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5468 */
+  /* parser/parser_prod.nit:6934 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5468);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6934);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30020,7 +36928,7 @@ void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5469 */
+    /* parser/parser_prod.nit:6935 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30035,39 +36943,83 @@ void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5470 */
+      /* parser/parser_prod.nit:6936 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5470);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6936);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5471 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6937 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5471);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6937);
       }
-      /* parser/parser_prod.nit:5472 */
+      /* parser/parser_prod.nit:6938 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5474 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5474);
+      /* parser/parser_prod.nit:6940 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6940);
     }
-    /* parser/parser_prod.nit:5476 */
+    /* parser/parser_prod.nit:6942 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarshipExpr___visit_all[] = "parser_prod::AStarshipExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStarshipExpr___n_expr__eq[] = "parser_prod::AStarshipExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AStarshipExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6946;
+  fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6948 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6949 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStarshipExpr___n_expr2__eq[] = "parser_prod::AStarshipExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AStarshipExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 6951;
+  fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:6953 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:6954 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStarshipExpr___visit_all[] = "parser_prod::AStarshipExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStarshipExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5480;
+  fra.me.line = 6958;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -30077,34 +37029,34 @@ void parser___parser_prod___AStarshipExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5482 */
+  /* parser/parser_prod.nit:6960 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5482);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6960);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5483 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:6961 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5483);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6961);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarExpr___empty_init[] = "parser_prod::AStarExpr::empty_init";
 void parser___parser_prod___AStarExpr___empty_init(val_t p0, int* init_table){
-  int itpos173 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarExpr].i;
+  int itpos172 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos173]) return;
+  if (init_table[itpos172]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5487;
+  fra.me.line = 6965;
   fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -30112,19 +37064,19 @@ void parser___parser_prod___AStarExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos173] = 1;
+  init_table[itpos172] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStarExpr___init_astarexpr[] = "parser_prod::AStarExpr::init_astarexpr";
 void parser___parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos174 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarExpr].i;
+  int itpos173 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStarExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos174]) return;
+  if (init_table[itpos173]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5489;
+  fra.me.line = 6967;
   fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___init_astarexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30136,41 +37088,41 @@ void parser___parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5489 */
+  /* parser/parser_prod.nit:6967 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5494 */
+  /* parser/parser_prod.nit:6972 */
   CALL_parser___parser_prod___AStarExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5495 */
+  /* parser/parser_prod.nit:6973 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5495);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6973);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5496 */
+  /* parser/parser_prod.nit:6974 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5496);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6974);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5497 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:6975 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5497);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6975);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5498 */
+  /* parser/parser_prod.nit:6976 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5498);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6976);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos174] = 1;
+  init_table[itpos173] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarExpr___replace_child[] = "parser_prod::AStarExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStarExpr___replace_child[] = "parser_prod::AStarExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStarExpr___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;
@@ -30178,7 +37130,7 @@ void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5501;
+  fra.me.line = 6979;
   fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30190,11 +37142,11 @@ void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5503 */
+  /* parser/parser_prod.nit:6981 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5503);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6981);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30204,7 +37156,7 @@ void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5504 */
+    /* parser/parser_prod.nit:6982 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30219,32 +37171,32 @@ void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5505 */
+      /* parser/parser_prod.nit:6983 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5505);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6983);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5506 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6984 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5506);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6984);
       }
-      /* parser/parser_prod.nit:5507 */
+      /* parser/parser_prod.nit:6985 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5509 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5509);
+      /* parser/parser_prod.nit:6987 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6987);
     }
-    /* parser/parser_prod.nit:5511 */
+    /* parser/parser_prod.nit:6989 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5513 */
+  /* parser/parser_prod.nit:6991 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5513);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6991);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30254,7 +37206,7 @@ void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5514 */
+    /* parser/parser_prod.nit:6992 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30269,39 +37221,83 @@ void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5515 */
+      /* parser/parser_prod.nit:6993 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5515);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6993);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5516 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:6994 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5516);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6994);
       }
-      /* parser/parser_prod.nit:5517 */
+      /* parser/parser_prod.nit:6995 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5519 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5519);
+      /* parser/parser_prod.nit:6997 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6997);
     }
-    /* parser/parser_prod.nit:5521 */
+    /* parser/parser_prod.nit:6999 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStarExpr___visit_all[] = "parser_prod::AStarExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStarExpr___n_expr__eq[] = "parser_prod::AStarExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AStarExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7003;
+  fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7005 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7006 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStarExpr___n_expr2__eq[] = "parser_prod::AStarExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___AStarExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7008;
+  fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7010 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7011 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStarExpr___visit_all[] = "parser_prod::AStarExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStarExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5525;
+  fra.me.line = 7015;
   fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -30311,34 +37307,34 @@ void parser___parser_prod___AStarExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5527 */
+  /* parser/parser_prod.nit:7017 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5527);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7017);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5528 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7018 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5528);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 7018);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASlashExpr___empty_init[] = "parser_prod::ASlashExpr::empty_init";
 void parser___parser_prod___ASlashExpr___empty_init(val_t p0, int* init_table){
-  int itpos175 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashExpr].i;
+  int itpos174 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos175]) return;
+  if (init_table[itpos174]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5532;
+  fra.me.line = 7022;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -30346,19 +37342,19 @@ void parser___parser_prod___ASlashExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos175] = 1;
+  init_table[itpos174] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASlashExpr___init_aslashexpr[] = "parser_prod::ASlashExpr::init_aslashexpr";
 void parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos176 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashExpr].i;
+  int itpos175 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASlashExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos176]) return;
+  if (init_table[itpos175]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5534;
+  fra.me.line = 7024;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___init_aslashexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30370,41 +37366,41 @@ void parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5534 */
+  /* parser/parser_prod.nit:7024 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5539 */
+  /* parser/parser_prod.nit:7029 */
   CALL_parser___parser_prod___ASlashExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5540 */
+  /* parser/parser_prod.nit:7030 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5540);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7030);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5541 */
+  /* parser/parser_prod.nit:7031 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5541);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7031);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5542 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7032 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5542);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7032);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5543 */
+  /* parser/parser_prod.nit:7033 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5543);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7033);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos176] = 1;
+  init_table[itpos175] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASlashExpr___replace_child[] = "parser_prod::ASlashExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASlashExpr___replace_child[] = "parser_prod::ASlashExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASlashExpr___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;
@@ -30412,7 +37408,7 @@ void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5546;
+  fra.me.line = 7036;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30424,11 +37420,11 @@ void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5548 */
+  /* parser/parser_prod.nit:7038 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5548);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7038);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30438,7 +37434,7 @@ void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5549 */
+    /* parser/parser_prod.nit:7039 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30453,32 +37449,32 @@ void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5550 */
+      /* parser/parser_prod.nit:7040 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5550);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7040);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5551 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7041 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5551);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7041);
       }
-      /* parser/parser_prod.nit:5552 */
+      /* parser/parser_prod.nit:7042 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5554 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5554);
+      /* parser/parser_prod.nit:7044 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7044);
     }
-    /* parser/parser_prod.nit:5556 */
+    /* parser/parser_prod.nit:7046 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5558 */
+  /* parser/parser_prod.nit:7048 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5558);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 7048);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30488,7 +37484,7 @@ void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5559 */
+    /* parser/parser_prod.nit:7049 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30503,39 +37499,83 @@ void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5560 */
+      /* parser/parser_prod.nit:7050 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5560);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7050);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5561 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7051 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5561);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7051);
       }
-      /* parser/parser_prod.nit:5562 */
+      /* parser/parser_prod.nit:7052 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5564 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5564);
+      /* parser/parser_prod.nit:7054 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7054);
     }
-    /* parser/parser_prod.nit:5566 */
+    /* parser/parser_prod.nit:7056 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASlashExpr___visit_all[] = "parser_prod::ASlashExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASlashExpr___n_expr__eq[] = "parser_prod::ASlashExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ASlashExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7060;
+  fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7062 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7063 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASlashExpr___n_expr2__eq[] = "parser_prod::ASlashExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___ASlashExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7065;
+  fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7067 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7068 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASlashExpr___visit_all[] = "parser_prod::ASlashExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASlashExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5570;
+  fra.me.line = 7072;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -30545,34 +37585,34 @@ void parser___parser_prod___ASlashExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5572 */
+  /* parser/parser_prod.nit:7074 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5572);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7074);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5573 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7075 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5573);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 7075);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___APercentExpr___empty_init[] = "parser_prod::APercentExpr::empty_init";
 void parser___parser_prod___APercentExpr___empty_init(val_t p0, int* init_table){
-  int itpos177 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentExpr].i;
+  int itpos176 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos177]) return;
+  if (init_table[itpos176]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5577;
+  fra.me.line = 7079;
   fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -30580,19 +37620,19 @@ void parser___parser_prod___APercentExpr___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos177] = 1;
+  init_table[itpos176] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APercentExpr___init_apercentexpr[] = "parser_prod::APercentExpr::init_apercentexpr";
 void parser___parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos178 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentExpr].i;
+  int itpos177 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APercentExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos178]) return;
+  if (init_table[itpos177]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5579;
+  fra.me.line = 7081;
   fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___init_apercentexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30604,41 +37644,41 @@ void parser___parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5579 */
+  /* parser/parser_prod.nit:7081 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5584 */
+  /* parser/parser_prod.nit:7086 */
   CALL_parser___parser_prod___APercentExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5585 */
+  /* parser/parser_prod.nit:7087 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5585);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7087);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5586 */
+  /* parser/parser_prod.nit:7088 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5586);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7088);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5587 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7089 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5587);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7089);
   }
   ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5588 */
+  /* parser/parser_prod.nit:7090 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5588);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7090);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos178] = 1;
+  init_table[itpos177] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APercentExpr___replace_child[] = "parser_prod::APercentExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APercentExpr___replace_child[] = "parser_prod::APercentExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APercentExpr___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;
@@ -30646,7 +37686,7 @@ void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5591;
+  fra.me.line = 7093;
   fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30658,11 +37698,11 @@ void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5593 */
+  /* parser/parser_prod.nit:7095 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5593);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7095);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30672,7 +37712,7 @@ void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5594 */
+    /* parser/parser_prod.nit:7096 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30687,32 +37727,32 @@ void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5595 */
+      /* parser/parser_prod.nit:7097 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5595);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7097);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5596 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7098 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5596);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7098);
       }
-      /* parser/parser_prod.nit:5597 */
+      /* parser/parser_prod.nit:7099 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5599 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5599);
+      /* parser/parser_prod.nit:7101 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7101);
     }
-    /* parser/parser_prod.nit:5601 */
+    /* parser/parser_prod.nit:7103 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5603 */
+  /* parser/parser_prod.nit:7105 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5603);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 7105);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30722,7 +37762,7 @@ void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5604 */
+    /* parser/parser_prod.nit:7106 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30737,39 +37777,83 @@ void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5605 */
+      /* parser/parser_prod.nit:7107 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5605);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7107);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5606 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7108 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5606);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7108);
       }
-      /* parser/parser_prod.nit:5607 */
+      /* parser/parser_prod.nit:7109 */
       ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5609 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5609);
+      /* parser/parser_prod.nit:7111 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7111);
     }
-    /* parser/parser_prod.nit:5611 */
+    /* parser/parser_prod.nit:7113 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APercentExpr___visit_all[] = "parser_prod::APercentExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APercentExpr___n_expr__eq[] = "parser_prod::APercentExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___APercentExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7117;
+  fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7119 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7120 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APercentExpr___n_expr2__eq[] = "parser_prod::APercentExpr::(parser_nodes::ABinopExpr::n_expr2=)";
+void parser___parser_prod___APercentExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7122;
+  fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7124 */
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7125 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APercentExpr___visit_all[] = "parser_prod::APercentExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APercentExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5615;
+  fra.me.line = 7129;
   fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -30779,34 +37863,34 @@ void parser___parser_prod___APercentExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5617 */
+  /* parser/parser_prod.nit:7131 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5617);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7131);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5618 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7132 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 5618);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 7132);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AUminusExpr___empty_init[] = "parser_prod::AUminusExpr::empty_init";
 void parser___parser_prod___AUminusExpr___empty_init(val_t p0, int* init_table){
-  int itpos179 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AUminusExpr].i;
+  int itpos178 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AUminusExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos179]) return;
+  if (init_table[itpos178]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5622;
+  fra.me.line = 7136;
   fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -30814,19 +37898,19 @@ void parser___parser_prod___AUminusExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos179] = 1;
+  init_table[itpos178] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AUminusExpr___init_auminusexpr[] = "parser_prod::AUminusExpr::init_auminusexpr";
 void parser___parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos180 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AUminusExpr].i;
+  int itpos179 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AUminusExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos180]) return;
+  if (init_table[itpos179]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5624;
+  fra.me.line = 7138;
   fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___init_auminusexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30838,41 +37922,41 @@ void parser___parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5624 */
+  /* parser/parser_prod.nit:7138 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5629 */
+  /* parser/parser_prod.nit:7143 */
   CALL_parser___parser_prod___AUminusExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5630 */
+  /* parser/parser_prod.nit:7144 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5630);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7144);
   }
   ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5631 */
+  /* parser/parser_prod.nit:7145 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5631);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7145);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5632 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7146 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5632);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7146);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5633 */
+  /* parser/parser_prod.nit:7147 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5633);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7147);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos180] = 1;
+  init_table[itpos179] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AUminusExpr___replace_child[] = "parser_prod::AUminusExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AUminusExpr___replace_child[] = "parser_prod::AUminusExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AUminusExpr___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;
@@ -30880,7 +37964,7 @@ void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5636;
+  fra.me.line = 7150;
   fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30892,11 +37976,11 @@ void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5638 */
+  /* parser/parser_prod.nit:7152 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 5638);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 7152);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30906,7 +37990,7 @@ void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5639 */
+    /* parser/parser_prod.nit:7153 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30921,32 +38005,32 @@ void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5640 */
+      /* parser/parser_prod.nit:7154 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5640);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7154);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5641 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7155 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast TMinus*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5641);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7155);
       }
-      /* parser/parser_prod.nit:5642 */
+      /* parser/parser_prod.nit:7156 */
       ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5644 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5644);
+      /* parser/parser_prod.nit:7158 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7158);
     }
-    /* parser/parser_prod.nit:5646 */
+    /* parser/parser_prod.nit:7160 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5648 */
+  /* parser/parser_prod.nit:7162 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5648);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7162);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -30956,7 +38040,7 @@ void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5649 */
+    /* parser/parser_prod.nit:7163 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -30971,39 +38055,83 @@ void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5650 */
+      /* parser/parser_prod.nit:7164 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5650);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7164);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5651 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7165 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5651);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7165);
       }
-      /* parser/parser_prod.nit:5652 */
+      /* parser/parser_prod.nit:7166 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5654 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5654);
+      /* parser/parser_prod.nit:7168 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7168);
     }
-    /* parser/parser_prod.nit:5656 */
+    /* parser/parser_prod.nit:7170 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AUminusExpr___visit_all[] = "parser_prod::AUminusExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AUminusExpr___n_minus__eq[] = "parser_prod::AUminusExpr::(parser_nodes::AUminusExpr::n_minus=)";
+void parser___parser_prod___AUminusExpr___n_minus__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7174;
+  fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___n_minus__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7176 */
+  ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7177 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AUminusExpr___n_expr__eq[] = "parser_prod::AUminusExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AUminusExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7179;
+  fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7181 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7182 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AUminusExpr___visit_all[] = "parser_prod::AUminusExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AUminusExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5660;
+  fra.me.line = 7186;
   fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -31013,34 +38141,34 @@ void parser___parser_prod___AUminusExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5662 */
+  /* parser/parser_prod.nit:7188 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 5662);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_parser___parser_prod, 7188);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5663 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7189 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5663);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7189);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANewExpr___empty_init[] = "parser_prod::ANewExpr::empty_init";
 void parser___parser_prod___ANewExpr___empty_init(val_t p0, int* init_table){
-  int itpos181 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANewExpr].i;
+  int itpos180 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANewExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos181]) return;
+  if (init_table[itpos180]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5667;
+  fra.me.line = 7193;
   fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -31048,20 +38176,20 @@ void parser___parser_prod___ANewExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos181] = 1;
+  init_table[itpos180] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANewExpr___init_anewexpr[] = "parser_prod::ANewExpr::init_anewexpr";
 void parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos182 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANewExpr].i;
+  int itpos181 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANewExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos182]) return;
+  if (init_table[itpos181]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5669;
+  fra.me.line = 7195;
   fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___init_anewexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -31077,39 +38205,39 @@ void parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:5669 */
+  /* parser/parser_prod.nit:7195 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5676 */
+  /* parser/parser_prod.nit:7202 */
   CALL_parser___parser_prod___ANewExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:5677 */
+  /* parser/parser_prod.nit:7203 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5677);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7203);
   }
   ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5678 */
+  /* parser/parser_prod.nit:7204 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5678);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7204);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5679 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7205 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5679);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7205);
   }
   ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5680 */
+  /* parser/parser_prod.nit:7206 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5680);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7206);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5681 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7207 */
   ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:5682 */
+  /* parser/parser_prod.nit:7208 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -31124,31 +38252,31 @@ void parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5683 */
+    /* parser/parser_prod.nit:7209 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5683);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7209);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
-  /* parser/parser_prod.nit:5685 */
+  /* parser/parser_prod.nit:7211 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5685);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7211);
   }
   ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:5686 */
+  /* parser/parser_prod.nit:7212 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5686);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7212);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos182] = 1;
+  init_table[itpos181] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANewExpr___replace_child[] = "parser_prod::ANewExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ANewExpr___replace_child[] = "parser_prod::ANewExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ANewExpr___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;
@@ -31156,7 +38284,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5689;
+  fra.me.line = 7215;
   fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -31168,11 +38296,11 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5691 */
+  /* parser/parser_prod.nit:7217 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 5691);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 7217);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31182,7 +38310,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5692 */
+    /* parser/parser_prod.nit:7218 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31197,32 +38325,32 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5693 */
+      /* parser/parser_prod.nit:7219 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5693);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7219);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5694 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7220 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast TKwnew*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5694);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7220);
       }
-      /* parser/parser_prod.nit:5695 */
+      /* parser/parser_prod.nit:7221 */
       ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5697 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5697);
+      /* parser/parser_prod.nit:7223 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7223);
     }
-    /* parser/parser_prod.nit:5699 */
+    /* parser/parser_prod.nit:7225 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5701 */
+  /* parser/parser_prod.nit:7227 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 5701);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 7227);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31232,7 +38360,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5702 */
+    /* parser/parser_prod.nit:7228 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31247,28 +38375,28 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5703 */
+      /* parser/parser_prod.nit:7229 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5703);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7229);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5704 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7230 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5704);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7230);
       }
-      /* parser/parser_prod.nit:5705 */
+      /* parser/parser_prod.nit:7231 */
       ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5707 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5707);
+      /* parser/parser_prod.nit:7233 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7233);
     }
-    /* parser/parser_prod.nit:5709 */
+    /* parser/parser_prod.nit:7235 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5711 */
+  /* parser/parser_prod.nit:7237 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -31283,7 +38411,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5712 */
+    /* parser/parser_prod.nit:7238 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31298,32 +38426,32 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5713 */
+      /* parser/parser_prod.nit:7239 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5713);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7239);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5714 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7240 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5714);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7240);
       }
-      /* parser/parser_prod.nit:5715 */
+      /* parser/parser_prod.nit:7241 */
       ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5717 */
+      /* parser/parser_prod.nit:7243 */
       ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:5719 */
+    /* parser/parser_prod.nit:7245 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5721 */
+  /* parser/parser_prod.nit:7247 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5721);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7247);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31333,7 +38461,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5722 */
+    /* parser/parser_prod.nit:7248 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31348,32 +38476,142 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5723 */
+      /* parser/parser_prod.nit:7249 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5723);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7249);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5724 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7250 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5724);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7250);
       }
-      /* parser/parser_prod.nit:5725 */
+      /* parser/parser_prod.nit:7251 */
       ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5727 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5727);
+      /* parser/parser_prod.nit:7253 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7253);
     }
-    /* parser/parser_prod.nit:5729 */
+    /* parser/parser_prod.nit:7255 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANewExpr___visit_all[] = "parser_prod::ANewExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ANewExpr___n_kwnew__eq[] = "parser_prod::ANewExpr::(parser_nodes::ANewExpr::n_kwnew=)";
+void parser___parser_prod___ANewExpr___n_kwnew__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7259;
+  fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___n_kwnew__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7261 */
+  ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7262 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANewExpr___n_type__eq[] = "parser_prod::ANewExpr::(parser_nodes::ANewExpr::n_type=)";
+void parser___parser_prod___ANewExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7264;
+  fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7266 */
+  ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7267 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANewExpr___n_id__eq[] = "parser_prod::ANewExpr::(parser_nodes::ANewExpr::n_id=)";
+void parser___parser_prod___ANewExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7269;
+  fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7271 */
+  ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7272 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:7273 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7273);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANewExpr___n_args__eq[] = "parser_prod::ANewExpr::(parser_nodes::ANewExpr::n_args=)";
+void parser___parser_prod___ANewExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7276;
+  fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7278 */
+  ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7279 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANewExpr___visit_all[] = "parser_prod::ANewExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -31381,7 +38619,7 @@ void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5733;
+  fra.me.line = 7283;
   fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -31392,25 +38630,25 @@ void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5733 */
+  /* parser/parser_prod.nit:7283 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5735 */
+  /* parser/parser_prod.nit:7285 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 5735);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_parser___parser_prod, 7285);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5736 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7286 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 5736);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 7286);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5737 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7287 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -31426,35 +38664,35 @@ void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5738 */
+    /* parser/parser_prod.nit:7288 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5738);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7288);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:5740 */
+  /* parser/parser_prod.nit:7290 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5740);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7290);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrExpr___empty_init[] = "parser_prod::AAttrExpr::empty_init";
 void parser___parser_prod___AAttrExpr___empty_init(val_t p0, int* init_table){
-  int itpos183 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrExpr].i;
+  int itpos182 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos183]) return;
+  if (init_table[itpos182]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5744;
+  fra.me.line = 7294;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -31462,19 +38700,19 @@ void parser___parser_prod___AAttrExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos183] = 1;
+  init_table[itpos182] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrExpr___init_aattrexpr[] = "parser_prod::AAttrExpr::init_aattrexpr";
 void parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos184 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrExpr].i;
+  int itpos183 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos184]) return;
+  if (init_table[itpos183]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5746;
+  fra.me.line = 7296;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___init_aattrexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -31486,41 +38724,41 @@ void parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5746 */
+  /* parser/parser_prod.nit:7296 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5751 */
+  /* parser/parser_prod.nit:7301 */
   CALL_parser___parser_prod___AAttrExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:5752 */
+  /* parser/parser_prod.nit:7302 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5752);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7302);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5753 */
+  /* parser/parser_prod.nit:7303 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5753);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7303);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:5754 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7304 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5754);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7304);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5755 */
+  /* parser/parser_prod.nit:7305 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5755);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7305);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos184] = 1;
+  init_table[itpos183] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrExpr___replace_child[] = "parser_prod::AAttrExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAttrExpr___replace_child[] = "parser_prod::AAttrExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAttrExpr___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;
@@ -31528,7 +38766,7 @@ void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5758;
+  fra.me.line = 7308;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -31540,11 +38778,11 @@ void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5760 */
+  /* parser/parser_prod.nit:7310 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5760);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7310);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31554,7 +38792,7 @@ void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5761 */
+    /* parser/parser_prod.nit:7311 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31569,32 +38807,32 @@ void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5762 */
+      /* parser/parser_prod.nit:7312 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5762);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7312);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5763 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7313 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5763);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7313);
       }
-      /* parser/parser_prod.nit:5764 */
+      /* parser/parser_prod.nit:7314 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5766 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5766);
+      /* parser/parser_prod.nit:7316 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7316);
     }
-    /* parser/parser_prod.nit:5768 */
+    /* parser/parser_prod.nit:7318 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5770 */
+  /* parser/parser_prod.nit:7320 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5770);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7320);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31604,7 +38842,7 @@ void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5771 */
+    /* parser/parser_prod.nit:7321 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31619,39 +38857,83 @@ void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5772 */
+      /* parser/parser_prod.nit:7322 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5772);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7322);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5773 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7323 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast TAttrid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5773);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7323);
       }
-      /* parser/parser_prod.nit:5774 */
+      /* parser/parser_prod.nit:7324 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5776 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5776);
+      /* parser/parser_prod.nit:7326 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7326);
     }
-    /* parser/parser_prod.nit:5778 */
+    /* parser/parser_prod.nit:7328 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrExpr___visit_all[] = "parser_prod::AAttrExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAttrExpr___n_expr__eq[] = "parser_prod::AAttrExpr::(parser_nodes::AAttrFormExpr::n_expr=)";
+void parser___parser_prod___AAttrExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7332;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7334 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7335 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrExpr___n_id__eq[] = "parser_prod::AAttrExpr::(parser_nodes::AAttrFormExpr::n_id=)";
+void parser___parser_prod___AAttrExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7337;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7339 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7340 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrExpr___visit_all[] = "parser_prod::AAttrExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAttrExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5782;
+  fra.me.line = 7344;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -31661,34 +38943,34 @@ void parser___parser_prod___AAttrExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5784 */
+  /* parser/parser_prod.nit:7346 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5784);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7346);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5785 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7347 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5785);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7347);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrAssignExpr___empty_init[] = "parser_prod::AAttrAssignExpr::empty_init";
 void parser___parser_prod___AAttrAssignExpr___empty_init(val_t p0, int* init_table){
-  int itpos185 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrAssignExpr].i;
+  int itpos184 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrAssignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos185]) return;
+  if (init_table[itpos184]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5789;
+  fra.me.line = 7351;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -31696,19 +38978,19 @@ void parser___parser_prod___AAttrAssignExpr___empty_init(val_t p0, int* init_tab
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos185] = 1;
+  init_table[itpos184] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr[] = "parser_prod::AAttrAssignExpr::init_aattrassignexpr";
 void parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos186 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrAssignExpr].i;
+  int itpos185 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrAssignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos186]) return;
+  if (init_table[itpos185]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5791;
+  fra.me.line = 7353;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -31724,67 +39006,67 @@ void parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:5791 */
+  /* parser/parser_prod.nit:7353 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5798 */
+  /* parser/parser_prod.nit:7360 */
   CALL_parser___parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:5799 */
+  /* parser/parser_prod.nit:7361 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5799);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7361);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5800 */
+  /* parser/parser_prod.nit:7362 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5800);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7362);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5801 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7363 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5801);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7363);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5802 */
+  /* parser/parser_prod.nit:7364 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5802);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7364);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5803 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7365 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5803);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7365);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:5804 */
+  /* parser/parser_prod.nit:7366 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5804);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7366);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5805 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7367 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5805);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7367);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:5806 */
+  /* parser/parser_prod.nit:7368 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5806);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7368);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos186] = 1;
+  init_table[itpos185] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrAssignExpr___replace_child[] = "parser_prod::AAttrAssignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAttrAssignExpr___replace_child[] = "parser_prod::AAttrAssignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAttrAssignExpr___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;
@@ -31792,7 +39074,7 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5809;
+  fra.me.line = 7371;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -31804,11 +39086,11 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5811 */
+  /* parser/parser_prod.nit:7373 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5811);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7373);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31818,7 +39100,7 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5812 */
+    /* parser/parser_prod.nit:7374 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31833,32 +39115,32 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5813 */
+      /* parser/parser_prod.nit:7375 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5813);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7375);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5814 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7376 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5814);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7376);
       }
-      /* parser/parser_prod.nit:5815 */
+      /* parser/parser_prod.nit:7377 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5817 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5817);
+      /* parser/parser_prod.nit:7379 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7379);
     }
-    /* parser/parser_prod.nit:5819 */
+    /* parser/parser_prod.nit:7381 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5821 */
+  /* parser/parser_prod.nit:7383 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5821);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7383);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31868,7 +39150,7 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5822 */
+    /* parser/parser_prod.nit:7384 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31883,32 +39165,32 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5823 */
+      /* parser/parser_prod.nit:7385 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5823);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7385);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5824 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7386 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast TAttrid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5824);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7386);
       }
-      /* parser/parser_prod.nit:5825 */
+      /* parser/parser_prod.nit:7387 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5827 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5827);
+      /* parser/parser_prod.nit:7389 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7389);
     }
-    /* parser/parser_prod.nit:5829 */
+    /* parser/parser_prod.nit:7391 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5831 */
+  /* parser/parser_prod.nit:7393 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 5831);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 7393);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31918,7 +39200,7 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5832 */
+    /* parser/parser_prod.nit:7394 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31933,32 +39215,32 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5833 */
+      /* parser/parser_prod.nit:7395 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5833);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7395);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5834 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7396 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5834);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7396);
       }
-      /* parser/parser_prod.nit:5835 */
+      /* parser/parser_prod.nit:7397 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5837 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5837);
+      /* parser/parser_prod.nit:7399 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7399);
     }
-    /* parser/parser_prod.nit:5839 */
+    /* parser/parser_prod.nit:7401 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5841 */
+  /* parser/parser_prod.nit:7403 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 5841);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7403);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -31968,7 +39250,7 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5842 */
+    /* parser/parser_prod.nit:7404 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -31983,39 +39265,127 @@ void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5843 */
+      /* parser/parser_prod.nit:7405 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5843);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7405);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5844 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7406 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5844);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7406);
       }
-      /* parser/parser_prod.nit:5845 */
+      /* parser/parser_prod.nit:7407 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5847 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5847);
+      /* parser/parser_prod.nit:7409 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7409);
     }
-    /* parser/parser_prod.nit:5849 */
+    /* parser/parser_prod.nit:7411 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrAssignExpr___visit_all[] = "parser_prod::AAttrAssignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAttrAssignExpr___n_expr__eq[] = "parser_prod::AAttrAssignExpr::(parser_nodes::AAttrFormExpr::n_expr=)";
+void parser___parser_prod___AAttrAssignExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7415;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7417 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7418 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrAssignExpr___n_id__eq[] = "parser_prod::AAttrAssignExpr::(parser_nodes::AAttrFormExpr::n_id=)";
+void parser___parser_prod___AAttrAssignExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7420;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7422 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7423 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrAssignExpr___n_assign__eq[] = "parser_prod::AAttrAssignExpr::(parser_nodes::AAssignFormExpr::n_assign=)";
+void parser___parser_prod___AAttrAssignExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7425;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7427 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7428 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrAssignExpr___n_value__eq[] = "parser_prod::AAttrAssignExpr::(parser_nodes::AAssignFormExpr::n_value=)";
+void parser___parser_prod___AAttrAssignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7430;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7432 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7433 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrAssignExpr___visit_all[] = "parser_prod::AAttrAssignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAttrAssignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5853;
+  fra.me.line = 7437;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -32025,50 +39395,50 @@ void parser___parser_prod___AAttrAssignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5855 */
+  /* parser/parser_prod.nit:7439 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5855);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7439);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5856 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7440 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5856);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7440);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5857 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7441 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 5857);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 7441);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5858 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7442 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 5858);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7442);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrReassignExpr___empty_init[] = "parser_prod::AAttrReassignExpr::empty_init";
 void parser___parser_prod___AAttrReassignExpr___empty_init(val_t p0, int* init_table){
-  int itpos187 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrReassignExpr].i;
+  int itpos186 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrReassignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos187]) return;
+  if (init_table[itpos186]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5862;
+  fra.me.line = 7446;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -32076,19 +39446,19 @@ void parser___parser_prod___AAttrReassignExpr___empty_init(val_t p0, int* init_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos187] = 1;
+  init_table[itpos186] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr[] = "parser_prod::AAttrReassignExpr::init_aattrreassignexpr";
 void parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos188 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrReassignExpr].i;
+  int itpos187 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrReassignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos188]) return;
+  if (init_table[itpos187]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5864;
+  fra.me.line = 7448;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -32104,67 +39474,67 @@ void parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0,
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:5864 */
+  /* parser/parser_prod.nit:7448 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5871 */
+  /* parser/parser_prod.nit:7455 */
   CALL_parser___parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:5872 */
+  /* parser/parser_prod.nit:7456 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5872);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7456);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5873 */
+  /* parser/parser_prod.nit:7457 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5873);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7457);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5874 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7458 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5874);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7458);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5875 */
+  /* parser/parser_prod.nit:7459 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5875);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7459);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5876 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7460 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5876);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7460);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:5877 */
+  /* parser/parser_prod.nit:7461 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5877);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7461);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5878 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7462 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5878);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7462);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:5879 */
+  /* parser/parser_prod.nit:7463 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5879);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7463);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos188] = 1;
+  init_table[itpos187] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrReassignExpr___replace_child[] = "parser_prod::AAttrReassignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAttrReassignExpr___replace_child[] = "parser_prod::AAttrReassignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAttrReassignExpr___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;
@@ -32172,7 +39542,7 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5882;
+  fra.me.line = 7466;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -32184,11 +39554,11 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5884 */
+  /* parser/parser_prod.nit:7468 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5884);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7468);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32198,7 +39568,7 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5885 */
+    /* parser/parser_prod.nit:7469 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32213,32 +39583,32 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5886 */
+      /* parser/parser_prod.nit:7470 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5886);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7470);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5887 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7471 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5887);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7471);
       }
-      /* parser/parser_prod.nit:5888 */
+      /* parser/parser_prod.nit:7472 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5890 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5890);
+      /* parser/parser_prod.nit:7474 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7474);
     }
-    /* parser/parser_prod.nit:5892 */
+    /* parser/parser_prod.nit:7476 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5894 */
+  /* parser/parser_prod.nit:7478 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5894);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7478);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32248,7 +39618,7 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5895 */
+    /* parser/parser_prod.nit:7479 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32263,32 +39633,32 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5896 */
+      /* parser/parser_prod.nit:7480 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5896);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7480);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5897 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7481 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast TAttrid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5897);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7481);
       }
-      /* parser/parser_prod.nit:5898 */
+      /* parser/parser_prod.nit:7482 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5900 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5900);
+      /* parser/parser_prod.nit:7484 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7484);
     }
-    /* parser/parser_prod.nit:5902 */
+    /* parser/parser_prod.nit:7486 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5904 */
+  /* parser/parser_prod.nit:7488 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 5904);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 7488);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32298,7 +39668,7 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5905 */
+    /* parser/parser_prod.nit:7489 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32313,32 +39683,32 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5906 */
+      /* parser/parser_prod.nit:7490 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5906);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7490);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5907 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7491 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast AAssignOp*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5907);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7491);
       }
-      /* parser/parser_prod.nit:5908 */
+      /* parser/parser_prod.nit:7492 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5910 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5910);
+      /* parser/parser_prod.nit:7494 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7494);
     }
-    /* parser/parser_prod.nit:5912 */
+    /* parser/parser_prod.nit:7496 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5914 */
+  /* parser/parser_prod.nit:7498 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 5914);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7498);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32348,7 +39718,7 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5915 */
+    /* parser/parser_prod.nit:7499 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32363,39 +39733,127 @@ void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5916 */
+      /* parser/parser_prod.nit:7500 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5916);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7500);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5917 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7501 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5917);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7501);
       }
-      /* parser/parser_prod.nit:5918 */
+      /* parser/parser_prod.nit:7502 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5920 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5920);
+      /* parser/parser_prod.nit:7504 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7504);
     }
-    /* parser/parser_prod.nit:5922 */
+    /* parser/parser_prod.nit:7506 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAttrReassignExpr___visit_all[] = "parser_prod::AAttrReassignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAttrReassignExpr___n_expr__eq[] = "parser_prod::AAttrReassignExpr::(parser_nodes::AAttrFormExpr::n_expr=)";
+void parser___parser_prod___AAttrReassignExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7510;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7512 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7513 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrReassignExpr___n_id__eq[] = "parser_prod::AAttrReassignExpr::(parser_nodes::AAttrFormExpr::n_id=)";
+void parser___parser_prod___AAttrReassignExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7515;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7517 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7518 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrReassignExpr___n_assign_op__eq[] = "parser_prod::AAttrReassignExpr::(parser_nodes::AReassignFormExpr::n_assign_op=)";
+void parser___parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7520;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___n_assign_op__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7522 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7523 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrReassignExpr___n_value__eq[] = "parser_prod::AAttrReassignExpr::(parser_nodes::AReassignFormExpr::n_value=)";
+void parser___parser_prod___AAttrReassignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7525;
+  fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7527 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7528 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAttrReassignExpr___visit_all[] = "parser_prod::AAttrReassignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAttrReassignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5926;
+  fra.me.line = 7532;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -32405,50 +39863,50 @@ void parser___parser_prod___AAttrReassignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:5928 */
+  /* parser/parser_prod.nit:7534 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5928);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7534);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5929 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7535 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5929);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7535);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5930 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7536 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 5930);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 7536);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:5931 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7537 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 5931);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7537);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACallExpr___empty_init[] = "parser_prod::ACallExpr::empty_init";
 void parser___parser_prod___ACallExpr___empty_init(val_t p0, int* init_table){
-  int itpos189 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallExpr].i;
+  int itpos188 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos189]) return;
+  if (init_table[itpos188]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5935;
+  fra.me.line = 7541;
   fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -32456,19 +39914,19 @@ void parser___parser_prod___ACallExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos189] = 1;
+  init_table[itpos188] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACallExpr___init_acallexpr[] = "parser_prod::ACallExpr::init_acallexpr";
 void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos190 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallExpr].i;
+  int itpos189 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos190]) return;
+  if (init_table[itpos189]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5937;
+  fra.me.line = 7543;
   fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___init_acallexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -32484,52 +39942,52 @@ void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:5937 */
+  /* parser/parser_prod.nit:7543 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:5944 */
+  /* parser/parser_prod.nit:7550 */
   CALL_parser___parser_prod___ACallExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:5945 */
+  /* parser/parser_prod.nit:7551 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5945);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7551);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:5946 */
+  /* parser/parser_prod.nit:7552 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5946);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7552);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5947 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7553 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5947);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7553);
   }
   ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:5948 */
+  /* parser/parser_prod.nit:7554 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5948);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7554);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:5949 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:7555 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5949);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7555);
   }
   ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:5950 */
+  /* parser/parser_prod.nit:7556 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5950);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7556);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ACallExpr___init_acallexpr_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos190] = 1;
+  init_table[itpos189] = 1;
   return;
 }
   void OC_parser___parser_prod___ACallExpr___init_acallexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -32537,7 +39995,7 @@ void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:5951 */
+    /* parser/parser_prod.nit:7557 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -32551,26 +40009,26 @@ void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:5952 */
+    /* parser/parser_prod.nit:7558 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AClosureDef, ID_parser___parser_nodes___AClosureDef)) /*cast AClosureDef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5952);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7558);
     }
-    /* parser/parser_prod.nit:5953 */
+    /* parser/parser_prod.nit:7559 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5953);
+      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 7559);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:5954 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
+    /* parser/parser_prod.nit:7560 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ACallExpr___replace_child[] = "parser_prod::ACallExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ACallExpr___replace_child[] = "parser_prod::ACallExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ACallExpr___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;
@@ -32581,7 +40039,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 5958;
+  fra.me.line = 7564;
   fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -32593,11 +40051,11 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:5960 */
+  /* parser/parser_prod.nit:7566 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 5960);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7566);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32607,7 +40065,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5961 */
+    /* parser/parser_prod.nit:7567 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32622,32 +40080,32 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5962 */
+      /* parser/parser_prod.nit:7568 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5962);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7568);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5963 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7569 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5963);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7569);
       }
-      /* parser/parser_prod.nit:5964 */
+      /* parser/parser_prod.nit:7570 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5966 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5966);
+      /* parser/parser_prod.nit:7572 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7572);
     }
-    /* parser/parser_prod.nit:5968 */
+    /* parser/parser_prod.nit:7574 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5970 */
+  /* parser/parser_prod.nit:7576 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 5970);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7576);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32657,7 +40115,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5971 */
+    /* parser/parser_prod.nit:7577 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32672,32 +40130,32 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5972 */
+      /* parser/parser_prod.nit:7578 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5972);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7578);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5973 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7579 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5973);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7579);
       }
-      /* parser/parser_prod.nit:5974 */
+      /* parser/parser_prod.nit:7580 */
       ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5976 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5976);
+      /* parser/parser_prod.nit:7582 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7582);
     }
-    /* parser/parser_prod.nit:5978 */
+    /* parser/parser_prod.nit:7584 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5980 */
+  /* parser/parser_prod.nit:7586 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5980);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7586);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -32707,7 +40165,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:5981 */
+    /* parser/parser_prod.nit:7587 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -32722,71 +40180,65 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:5982 */
+      /* parser/parser_prod.nit:7588 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5982);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7588);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:5983 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7589 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5983);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7589);
       }
-      /* parser/parser_prod.nit:5984 */
+      /* parser/parser_prod.nit:7590 */
       ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:5986 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 5986);
+      /* parser/parser_prod.nit:7592 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7592);
     }
-    /* parser/parser_prod.nit:5988 */
+    /* parser/parser_prod.nit:7594 */
     goto label1;
   }
-  /* parser/parser_prod.nit:5990 */
+  /* parser/parser_prod.nit:7596 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5990);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 7596);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:5990 */
+      /* parser/parser_prod.nit:7596 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:5991 */
+      /* parser/parser_prod.nit:7597 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5991);
+        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 7597);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:5992 */
+        /* parser/parser_prod.nit:7598 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -32801,47 +40253,47 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:5993 */
+          /* parser/parser_prod.nit:7599 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClosureDef, ID_parser___parser_nodes___AClosureDef)) /*cast AClosureDef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5993);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7599);
           }
-          /* parser/parser_prod.nit:5994 */
+          /* parser/parser_prod.nit:7600 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5994);
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 7600);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:5995 */
+          /* parser/parser_prod.nit:7601 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5995);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7601);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:5997 */
+          /* parser/parser_prod.nit:7603 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5997);
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 7603);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:5999 */
+        /* parser/parser_prod.nit:7605 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -32850,14 +40302,80 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACallExpr___visit_all[] = "parser_prod::ACallExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ACallExpr___n_expr__eq[] = "parser_prod::ACallExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ACallExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7610;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7612 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7613 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallExpr___n_id__eq[] = "parser_prod::ACallExpr::(parser_nodes::ACallFormExpr::n_id=)";
+void parser___parser_prod___ACallExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7615;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7617 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7618 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallExpr___n_args__eq[] = "parser_prod::ACallExpr::(parser_nodes::ACallFormExpr::n_args=)";
+void parser___parser_prod___ACallExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7620;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7622 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7623 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallExpr___visit_all[] = "parser_prod::ACallExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ACallExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6004;
+  fra.me.line = 7627;
   fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -32867,35 +40385,35 @@ void parser___parser_prod___ACallExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6006 */
+  /* parser/parser_prod.nit:7629 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6006);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7629);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6007 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7630 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6007);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7630);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6008 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7631 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6008);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7631);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6009 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7632 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6009);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 7632);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ACallExpr___visit_all_1));
@@ -32918,20 +40436,20 @@ void parser___parser_prod___ACallExpr___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:6010 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:7633 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ACallAssignExpr___empty_init[] = "parser_prod::ACallAssignExpr::empty_init";
 void parser___parser_prod___ACallAssignExpr___empty_init(val_t p0, int* init_table){
-  int itpos191 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallAssignExpr].i;
+  int itpos190 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallAssignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos191]) return;
+  if (init_table[itpos190]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6015;
+  fra.me.line = 7638;
   fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -32939,19 +40457,19 @@ void parser___parser_prod___ACallAssignExpr___empty_init(val_t p0, int* init_tab
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos191] = 1;
+  init_table[itpos190] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACallAssignExpr___init_acallassignexpr[] = "parser_prod::ACallAssignExpr::init_acallassignexpr";
 void parser___parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos192 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallAssignExpr].i;
+  int itpos191 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallAssignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos192]) return;
+  if (init_table[itpos191]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6017;
+  fra.me.line = 7640;
   fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___init_acallassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -32969,80 +40487,80 @@ void parser___parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:6017 */
+  /* parser/parser_prod.nit:7640 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6025 */
+  /* parser/parser_prod.nit:7648 */
   CALL_parser___parser_prod___ACallAssignExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:6026 */
+  /* parser/parser_prod.nit:7649 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6026);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7649);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6027 */
+  /* parser/parser_prod.nit:7650 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6027);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7650);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6028 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7651 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6028);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7651);
   }
   ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6029 */
+  /* parser/parser_prod.nit:7652 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6029);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7652);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6030 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7653 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6030);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7653);
   }
   ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6031 */
+  /* parser/parser_prod.nit:7654 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6031);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7654);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6032 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7655 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6032);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7655);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:6033 */
+  /* parser/parser_prod.nit:7656 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6033);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7656);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6034 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7657 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6034);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7657);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:6035 */
+  /* parser/parser_prod.nit:7658 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6035);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7658);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos192] = 1;
+  init_table[itpos191] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACallAssignExpr___replace_child[] = "parser_prod::ACallAssignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___replace_child[] = "parser_prod::ACallAssignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ACallAssignExpr___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;
@@ -33050,7 +40568,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6038;
+  fra.me.line = 7661;
   fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -33062,11 +40580,11 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6040 */
+  /* parser/parser_prod.nit:7663 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6040);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7663);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33076,7 +40594,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6041 */
+    /* parser/parser_prod.nit:7664 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33091,32 +40609,32 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6042 */
+      /* parser/parser_prod.nit:7665 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6042);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7665);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6043 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7666 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6043);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7666);
       }
-      /* parser/parser_prod.nit:6044 */
+      /* parser/parser_prod.nit:7667 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6046 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6046);
+      /* parser/parser_prod.nit:7669 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7669);
     }
-    /* parser/parser_prod.nit:6048 */
+    /* parser/parser_prod.nit:7671 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6050 */
+  /* parser/parser_prod.nit:7673 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6050);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7673);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33126,7 +40644,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6051 */
+    /* parser/parser_prod.nit:7674 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33141,32 +40659,32 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6052 */
+      /* parser/parser_prod.nit:7675 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6052);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7675);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6053 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7676 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6053);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7676);
       }
-      /* parser/parser_prod.nit:6054 */
+      /* parser/parser_prod.nit:7677 */
       ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6056 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6056);
+      /* parser/parser_prod.nit:7679 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7679);
     }
-    /* parser/parser_prod.nit:6058 */
+    /* parser/parser_prod.nit:7681 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6060 */
+  /* parser/parser_prod.nit:7683 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6060);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7683);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33176,7 +40694,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6061 */
+    /* parser/parser_prod.nit:7684 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33191,32 +40709,32 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6062 */
+      /* parser/parser_prod.nit:7685 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6062);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7685);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6063 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7686 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6063);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7686);
       }
-      /* parser/parser_prod.nit:6064 */
+      /* parser/parser_prod.nit:7687 */
       ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6066 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6066);
+      /* parser/parser_prod.nit:7689 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7689);
     }
-    /* parser/parser_prod.nit:6068 */
+    /* parser/parser_prod.nit:7691 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6070 */
+  /* parser/parser_prod.nit:7693 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 6070);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 7693);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33226,7 +40744,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6071 */
+    /* parser/parser_prod.nit:7694 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33241,32 +40759,32 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6072 */
+      /* parser/parser_prod.nit:7695 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6072);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7695);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6073 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7696 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6073);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7696);
       }
-      /* parser/parser_prod.nit:6074 */
+      /* parser/parser_prod.nit:7697 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6076 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6076);
+      /* parser/parser_prod.nit:7699 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7699);
     }
-    /* parser/parser_prod.nit:6078 */
+    /* parser/parser_prod.nit:7701 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6080 */
+  /* parser/parser_prod.nit:7703 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6080);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7703);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33276,7 +40794,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6081 */
+    /* parser/parser_prod.nit:7704 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33291,39 +40809,149 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6082 */
+      /* parser/parser_prod.nit:7705 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6082);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7705);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6083 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7706 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6083);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7706);
       }
-      /* parser/parser_prod.nit:6084 */
+      /* parser/parser_prod.nit:7707 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6086 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6086);
+      /* parser/parser_prod.nit:7709 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7709);
     }
-    /* parser/parser_prod.nit:6088 */
+    /* parser/parser_prod.nit:7711 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACallAssignExpr___visit_all[] = "parser_prod::ACallAssignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___n_expr__eq[] = "parser_prod::ACallAssignExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ACallAssignExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7715;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7717 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7718 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___n_id__eq[] = "parser_prod::ACallAssignExpr::(parser_nodes::ACallFormExpr::n_id=)";
+void parser___parser_prod___ACallAssignExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7720;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7722 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7723 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___n_args__eq[] = "parser_prod::ACallAssignExpr::(parser_nodes::ACallFormExpr::n_args=)";
+void parser___parser_prod___ACallAssignExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7725;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7727 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7728 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___n_assign__eq[] = "parser_prod::ACallAssignExpr::(parser_nodes::AAssignFormExpr::n_assign=)";
+void parser___parser_prod___ACallAssignExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7730;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7732 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7733 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___n_value__eq[] = "parser_prod::ACallAssignExpr::(parser_nodes::AAssignFormExpr::n_value=)";
+void parser___parser_prod___ACallAssignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7735;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7737 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7738 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallAssignExpr___visit_all[] = "parser_prod::ACallAssignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ACallAssignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6092;
+  fra.me.line = 7742;
   fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -33333,58 +40961,58 @@ void parser___parser_prod___ACallAssignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6094 */
+  /* parser/parser_prod.nit:7744 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6094);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7744);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6095 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7745 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6095);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7745);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6096 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7746 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6096);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7746);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6097 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7747 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 6097);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 7747);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6098 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7748 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6098);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7748);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACallReassignExpr___empty_init[] = "parser_prod::ACallReassignExpr::empty_init";
 void parser___parser_prod___ACallReassignExpr___empty_init(val_t p0, int* init_table){
-  int itpos193 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallReassignExpr].i;
+  int itpos192 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallReassignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos193]) return;
+  if (init_table[itpos192]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6102;
+  fra.me.line = 7752;
   fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -33392,19 +41020,19 @@ void parser___parser_prod___ACallReassignExpr___empty_init(val_t p0, int* init_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos193] = 1;
+  init_table[itpos192] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr[] = "parser_prod::ACallReassignExpr::init_acallreassignexpr";
 void parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos194 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallReassignExpr].i;
+  int itpos193 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACallReassignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos194]) return;
+  if (init_table[itpos193]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6104;
+  fra.me.line = 7754;
   fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -33422,80 +41050,80 @@ void parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0,
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:6104 */
+  /* parser/parser_prod.nit:7754 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6112 */
+  /* parser/parser_prod.nit:7762 */
   CALL_parser___parser_prod___ACallReassignExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:6113 */
+  /* parser/parser_prod.nit:7763 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6113);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7763);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6114 */
+  /* parser/parser_prod.nit:7764 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6114);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7764);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6115 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7765 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6115);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7765);
   }
   ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6116 */
+  /* parser/parser_prod.nit:7766 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6116);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7766);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6117 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7767 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6117);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7767);
   }
   ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6118 */
+  /* parser/parser_prod.nit:7768 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6118);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7768);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6119 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7769 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6119);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7769);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:6120 */
+  /* parser/parser_prod.nit:7770 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6120);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7770);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6121 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:7771 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6121);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7771);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:6122 */
+  /* parser/parser_prod.nit:7772 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6122);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7772);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos194] = 1;
+  init_table[itpos193] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACallReassignExpr___replace_child[] = "parser_prod::ACallReassignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___replace_child[] = "parser_prod::ACallReassignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ACallReassignExpr___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;
@@ -33503,7 +41131,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6125;
+  fra.me.line = 7775;
   fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -33515,11 +41143,11 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6127 */
+  /* parser/parser_prod.nit:7777 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6127);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7777);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33529,7 +41157,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6128 */
+    /* parser/parser_prod.nit:7778 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33544,32 +41172,32 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6129 */
+      /* parser/parser_prod.nit:7779 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6129);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7779);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6130 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7780 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6130);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7780);
       }
-      /* parser/parser_prod.nit:6131 */
+      /* parser/parser_prod.nit:7781 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6133 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6133);
+      /* parser/parser_prod.nit:7783 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7783);
     }
-    /* parser/parser_prod.nit:6135 */
+    /* parser/parser_prod.nit:7785 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6137 */
+  /* parser/parser_prod.nit:7787 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6137);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7787);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33579,7 +41207,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6138 */
+    /* parser/parser_prod.nit:7788 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33594,32 +41222,32 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6139 */
+      /* parser/parser_prod.nit:7789 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6139);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7789);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6140 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7790 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6140);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7790);
       }
-      /* parser/parser_prod.nit:6141 */
+      /* parser/parser_prod.nit:7791 */
       ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6143 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6143);
+      /* parser/parser_prod.nit:7793 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7793);
     }
-    /* parser/parser_prod.nit:6145 */
+    /* parser/parser_prod.nit:7795 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6147 */
+  /* parser/parser_prod.nit:7797 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6147);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7797);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33629,7 +41257,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6148 */
+    /* parser/parser_prod.nit:7798 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33644,32 +41272,32 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6149 */
+      /* parser/parser_prod.nit:7799 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6149);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7799);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6150 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7800 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6150);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7800);
       }
-      /* parser/parser_prod.nit:6151 */
+      /* parser/parser_prod.nit:7801 */
       ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6153 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6153);
+      /* parser/parser_prod.nit:7803 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7803);
     }
-    /* parser/parser_prod.nit:6155 */
+    /* parser/parser_prod.nit:7805 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6157 */
+  /* parser/parser_prod.nit:7807 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 6157);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 7807);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33679,7 +41307,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6158 */
+    /* parser/parser_prod.nit:7808 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33694,32 +41322,32 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6159 */
+      /* parser/parser_prod.nit:7809 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6159);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7809);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6160 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7810 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast AAssignOp*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6160);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7810);
       }
-      /* parser/parser_prod.nit:6161 */
+      /* parser/parser_prod.nit:7811 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6163 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6163);
+      /* parser/parser_prod.nit:7813 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7813);
     }
-    /* parser/parser_prod.nit:6165 */
+    /* parser/parser_prod.nit:7815 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6167 */
+  /* parser/parser_prod.nit:7817 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6167);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7817);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -33729,7 +41357,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6168 */
+    /* parser/parser_prod.nit:7818 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33744,39 +41372,149 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6169 */
+      /* parser/parser_prod.nit:7819 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6169);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7819);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6170 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7820 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6170);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7820);
       }
-      /* parser/parser_prod.nit:6171 */
+      /* parser/parser_prod.nit:7821 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6173 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6173);
+      /* parser/parser_prod.nit:7823 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7823);
     }
-    /* parser/parser_prod.nit:6175 */
+    /* parser/parser_prod.nit:7825 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACallReassignExpr___visit_all[] = "parser_prod::ACallReassignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___n_expr__eq[] = "parser_prod::ACallReassignExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ACallReassignExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7829;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7831 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7832 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___n_id__eq[] = "parser_prod::ACallReassignExpr::(parser_nodes::ACallFormExpr::n_id=)";
+void parser___parser_prod___ACallReassignExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7834;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7836 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7837 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___n_args__eq[] = "parser_prod::ACallReassignExpr::(parser_nodes::ACallFormExpr::n_args=)";
+void parser___parser_prod___ACallReassignExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7839;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7841 */
+  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7842 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___n_assign_op__eq[] = "parser_prod::ACallReassignExpr::(parser_nodes::AReassignFormExpr::n_assign_op=)";
+void parser___parser_prod___ACallReassignExpr___n_assign_op__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7844;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___n_assign_op__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7846 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7847 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___n_value__eq[] = "parser_prod::ACallReassignExpr::(parser_nodes::AReassignFormExpr::n_value=)";
+void parser___parser_prod___ACallReassignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7849;
+  fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7851 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7852 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACallReassignExpr___visit_all[] = "parser_prod::ACallReassignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ACallReassignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6179;
+  fra.me.line = 7856;
   fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -33786,58 +41524,58 @@ void parser___parser_prod___ACallReassignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6181 */
+  /* parser/parser_prod.nit:7858 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6181);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7858);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6182 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7859 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6182);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7859);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6183 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7860 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6183);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7860);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6184 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7861 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 6184);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 7861);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6185 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:7862 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6185);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 7862);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperExpr___empty_init[] = "parser_prod::ASuperExpr::empty_init";
 void parser___parser_prod___ASuperExpr___empty_init(val_t p0, int* init_table){
-  int itpos195 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExpr].i;
+  int itpos194 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos195]) return;
+  if (init_table[itpos194]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6189;
+  fra.me.line = 7866;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -33845,20 +41583,20 @@ void parser___parser_prod___ASuperExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos195] = 1;
+  init_table[itpos194] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperExpr___init_asuperexpr[] = "parser_prod::ASuperExpr::init_asuperexpr";
 void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos196 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExpr].i;
+  int itpos195 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos196]) return;
+  if (init_table[itpos195]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6191;
+  fra.me.line = 7868;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___init_asuperexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33872,13 +41610,13 @@ void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6191 */
+  /* parser/parser_prod.nit:7868 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6197 */
+  /* parser/parser_prod.nit:7874 */
   CALL_parser___parser_prod___ASuperExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6198 */
+  /* parser/parser_prod.nit:7875 */
   ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6199 */
+  /* parser/parser_prod.nit:7876 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -33893,44 +41631,44 @@ void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6200 */
+    /* parser/parser_prod.nit:7877 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6200);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7877);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:6202 */
+  /* parser/parser_prod.nit:7879 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6202);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7879);
   }
   ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6203 */
+  /* parser/parser_prod.nit:7880 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6203);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7880);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6204 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:7881 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6204);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7881);
   }
   ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6205 */
+  /* parser/parser_prod.nit:7882 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6205);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7882);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos196] = 1;
+  init_table[itpos195] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperExpr___replace_child[] = "parser_prod::ASuperExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASuperExpr___replace_child[] = "parser_prod::ASuperExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASuperExpr___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;
@@ -33938,7 +41676,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6208;
+  fra.me.line = 7885;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -33950,7 +41688,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6210 */
+  /* parser/parser_prod.nit:7887 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -33965,7 +41703,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6211 */
+    /* parser/parser_prod.nit:7888 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -33980,32 +41718,32 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6212 */
+      /* parser/parser_prod.nit:7889 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6212);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7889);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6213 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7890 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AQualified, ID_parser___parser_nodes___AQualified)) /*cast AQualified*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6213);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7890);
       }
-      /* parser/parser_prod.nit:6214 */
+      /* parser/parser_prod.nit:7891 */
       ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6216 */
+      /* parser/parser_prod.nit:7893 */
       ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:6218 */
+    /* parser/parser_prod.nit:7895 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6220 */
+  /* parser/parser_prod.nit:7897 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 6220);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 7897);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34015,7 +41753,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6221 */
+    /* parser/parser_prod.nit:7898 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34030,32 +41768,32 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6222 */
+      /* parser/parser_prod.nit:7899 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6222);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7899);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6223 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7900 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast TKwsuper*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6223);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7900);
       }
-      /* parser/parser_prod.nit:6224 */
+      /* parser/parser_prod.nit:7901 */
       ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6226 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6226);
+      /* parser/parser_prod.nit:7903 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7903);
     }
-    /* parser/parser_prod.nit:6228 */
+    /* parser/parser_prod.nit:7905 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6230 */
+  /* parser/parser_prod.nit:7907 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6230);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7907);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34065,7 +41803,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6231 */
+    /* parser/parser_prod.nit:7908 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34080,32 +41818,120 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6232 */
+      /* parser/parser_prod.nit:7909 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6232);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7909);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6233 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7910 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6233);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7910);
       }
-      /* parser/parser_prod.nit:6234 */
+      /* parser/parser_prod.nit:7911 */
       ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6236 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6236);
+      /* parser/parser_prod.nit:7913 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7913);
     }
-    /* parser/parser_prod.nit:6238 */
+    /* parser/parser_prod.nit:7915 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperExpr___visit_all[] = "parser_prod::ASuperExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASuperExpr___n_qualified__eq[] = "parser_prod::ASuperExpr::(parser_nodes::ASuperExpr::n_qualified=)";
+void parser___parser_prod___ASuperExpr___n_qualified__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7919;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___n_qualified__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7921 */
+  ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7922 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:7923 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7923);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperExpr___n_kwsuper__eq[] = "parser_prod::ASuperExpr::(parser_nodes::ASuperExpr::n_kwsuper=)";
+void parser___parser_prod___ASuperExpr___n_kwsuper__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7926;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___n_kwsuper__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7928 */
+  ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7929 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperExpr___n_args__eq[] = "parser_prod::ASuperExpr::(parser_nodes::ASuperExpr::n_args=)";
+void parser___parser_prod___ASuperExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7931;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7933 */
+  ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:7934 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperExpr___visit_all[] = "parser_prod::ASuperExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -34113,7 +41939,7 @@ void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6242;
+  fra.me.line = 7938;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34124,9 +41950,9 @@ void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6242 */
+  /* parser/parser_prod.nit:7938 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6244 */
+  /* parser/parser_prod.nit:7940 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -34142,43 +41968,43 @@ void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6245 */
+    /* parser/parser_prod.nit:7941 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AQualified, ID_parser___parser_nodes___AQualified)) /*cast AQualified*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6245);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7941);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:6247 */
+  /* parser/parser_prod.nit:7943 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 6247);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 7943);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6248 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:7944 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6248);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7944);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInitExpr___empty_init[] = "parser_prod::AInitExpr::empty_init";
 void parser___parser_prod___AInitExpr___empty_init(val_t p0, int* init_table){
-  int itpos197 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitExpr].i;
+  int itpos196 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos197]) return;
+  if (init_table[itpos196]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6252;
+  fra.me.line = 7948;
   fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -34186,19 +42012,19 @@ void parser___parser_prod___AInitExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos197] = 1;
+  init_table[itpos196] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInitExpr___init_ainitexpr[] = "parser_prod::AInitExpr::init_ainitexpr";
 void parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos198 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitExpr].i;
+  int itpos197 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos198]) return;
+  if (init_table[itpos197]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6254;
+  fra.me.line = 7950;
   fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___init_ainitexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -34212,54 +42038,54 @@ void parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6254 */
+  /* parser/parser_prod.nit:7950 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6260 */
+  /* parser/parser_prod.nit:7956 */
   CALL_parser___parser_prod___AInitExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6261 */
+  /* parser/parser_prod.nit:7957 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6261);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7957);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6262 */
+  /* parser/parser_prod.nit:7958 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6262);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7958);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6263 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:7959 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6263);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7959);
   }
   ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6264 */
+  /* parser/parser_prod.nit:7960 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6264);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7960);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6265 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:7961 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6265);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7961);
   }
   ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6266 */
+  /* parser/parser_prod.nit:7962 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6266);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7962);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos198] = 1;
+  init_table[itpos197] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInitExpr___replace_child[] = "parser_prod::AInitExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AInitExpr___replace_child[] = "parser_prod::AInitExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AInitExpr___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;
@@ -34267,7 +42093,7 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6269;
+  fra.me.line = 7965;
   fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34279,11 +42105,11 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6271 */
+  /* parser/parser_prod.nit:7967 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6271);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7967);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34293,7 +42119,7 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6272 */
+    /* parser/parser_prod.nit:7968 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34308,32 +42134,32 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6273 */
+      /* parser/parser_prod.nit:7969 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6273);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7969);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6274 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7970 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6274);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7970);
       }
-      /* parser/parser_prod.nit:6275 */
+      /* parser/parser_prod.nit:7971 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6277 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6277);
+      /* parser/parser_prod.nit:7973 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7973);
     }
-    /* parser/parser_prod.nit:6279 */
+    /* parser/parser_prod.nit:7975 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6281 */
+  /* parser/parser_prod.nit:7977 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 6281);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 7977);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34343,7 +42169,7 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6282 */
+    /* parser/parser_prod.nit:7978 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34358,32 +42184,32 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6283 */
+      /* parser/parser_prod.nit:7979 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6283);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7979);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6284 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7980 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast TKwinit*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6284);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7980);
       }
-      /* parser/parser_prod.nit:6285 */
+      /* parser/parser_prod.nit:7981 */
       ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6287 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6287);
+      /* parser/parser_prod.nit:7983 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7983);
     }
-    /* parser/parser_prod.nit:6289 */
+    /* parser/parser_prod.nit:7985 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6291 */
+  /* parser/parser_prod.nit:7987 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6291);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 7987);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34393,7 +42219,7 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6292 */
+    /* parser/parser_prod.nit:7988 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34408,39 +42234,105 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6293 */
+      /* parser/parser_prod.nit:7989 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6293);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7989);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6294 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:7990 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6294);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7990);
       }
-      /* parser/parser_prod.nit:6295 */
+      /* parser/parser_prod.nit:7991 */
       ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6297 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6297);
+      /* parser/parser_prod.nit:7993 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7993);
     }
-    /* parser/parser_prod.nit:6299 */
+    /* parser/parser_prod.nit:7995 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInitExpr___visit_all[] = "parser_prod::AInitExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AInitExpr___n_expr__eq[] = "parser_prod::AInitExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___AInitExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 7999;
+  fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8001 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8002 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInitExpr___n_kwinit__eq[] = "parser_prod::AInitExpr::(parser_nodes::AInitExpr::n_kwinit=)";
+void parser___parser_prod___AInitExpr___n_kwinit__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8004;
+  fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___n_kwinit__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8006 */
+  ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8007 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInitExpr___n_args__eq[] = "parser_prod::AInitExpr::(parser_nodes::AInitExpr::n_args=)";
+void parser___parser_prod___AInitExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8009;
+  fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8011 */
+  ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8012 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInitExpr___visit_all[] = "parser_prod::AInitExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AInitExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6303;
+  fra.me.line = 8016;
   fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -34450,42 +42342,42 @@ void parser___parser_prod___AInitExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6305 */
+  /* parser/parser_prod.nit:8018 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6305);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8018);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6306 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8019 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 6306);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_parser___parser_prod, 8019);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6307 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8020 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6307);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8020);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraExpr___empty_init[] = "parser_prod::ABraExpr::empty_init";
 void parser___parser_prod___ABraExpr___empty_init(val_t p0, int* init_table){
-  int itpos199 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExpr].i;
+  int itpos198 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos199]) return;
+  if (init_table[itpos198]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6311;
+  fra.me.line = 8024;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -34493,19 +42385,19 @@ void parser___parser_prod___ABraExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos199] = 1;
+  init_table[itpos198] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraExpr___init_abraexpr[] = "parser_prod::ABraExpr::init_abraexpr";
 void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos200 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExpr].i;
+  int itpos199 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos200]) return;
+  if (init_table[itpos199]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6313;
+  fra.me.line = 8026;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___init_abraexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -34519,39 +42411,39 @@ void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6313 */
+  /* parser/parser_prod.nit:8026 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6319 */
+  /* parser/parser_prod.nit:8032 */
   CALL_parser___parser_prod___ABraExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6320 */
+  /* parser/parser_prod.nit:8033 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6320);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8033);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6321 */
+  /* parser/parser_prod.nit:8034 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6321);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8034);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6322 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8035 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6322);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8035);
   }
   ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6323 */
+  /* parser/parser_prod.nit:8036 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6323);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8036);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABraExpr___init_abraexpr_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos200] = 1;
+  init_table[itpos199] = 1;
   return;
 }
   void OC_parser___parser_prod___ABraExpr___init_abraexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -34559,7 +42451,7 @@ void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:6324 */
+    /* parser/parser_prod.nit:8037 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -34573,26 +42465,26 @@ void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:6325 */
+    /* parser/parser_prod.nit:8038 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AClosureDef, ID_parser___parser_nodes___AClosureDef)) /*cast AClosureDef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6325);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8038);
     }
-    /* parser/parser_prod.nit:6326 */
+    /* parser/parser_prod.nit:8039 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6326);
+      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8039);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:6327 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
+    /* parser/parser_prod.nit:8040 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ABraExpr___replace_child[] = "parser_prod::ABraExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABraExpr___replace_child[] = "parser_prod::ABraExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABraExpr___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;
@@ -34603,7 +42495,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6331;
+  fra.me.line = 8044;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34615,11 +42507,11 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6333 */
+  /* parser/parser_prod.nit:8046 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6333);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8046);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34629,7 +42521,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6334 */
+    /* parser/parser_prod.nit:8047 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34644,32 +42536,32 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6335 */
+      /* parser/parser_prod.nit:8048 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6335);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8048);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6336 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8049 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6336);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8049);
       }
-      /* parser/parser_prod.nit:6337 */
+      /* parser/parser_prod.nit:8050 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6339 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6339);
+      /* parser/parser_prod.nit:8052 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8052);
     }
-    /* parser/parser_prod.nit:6341 */
+    /* parser/parser_prod.nit:8054 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6343 */
+  /* parser/parser_prod.nit:8056 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6343);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8056);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -34679,7 +42571,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6344 */
+    /* parser/parser_prod.nit:8057 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -34694,71 +42586,65 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6345 */
+      /* parser/parser_prod.nit:8058 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6345);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8058);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6346 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8059 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6346);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8059);
       }
-      /* parser/parser_prod.nit:6347 */
+      /* parser/parser_prod.nit:8060 */
       ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6349 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6349);
+      /* parser/parser_prod.nit:8062 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8062);
     }
-    /* parser/parser_prod.nit:6351 */
+    /* parser/parser_prod.nit:8064 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6353 */
+  /* parser/parser_prod.nit:8066 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6353);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8066);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:6353 */
+      /* parser/parser_prod.nit:8066 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:6354 */
+      /* parser/parser_prod.nit:8067 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6354);
+        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8067);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:6355 */
+        /* parser/parser_prod.nit:8068 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -34773,47 +42659,47 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:6356 */
+          /* parser/parser_prod.nit:8069 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClosureDef, ID_parser___parser_nodes___AClosureDef)) /*cast AClosureDef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6356);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8069);
           }
-          /* parser/parser_prod.nit:6357 */
+          /* parser/parser_prod.nit:8070 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6357);
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8070);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:6358 */
+          /* parser/parser_prod.nit:8071 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6358);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8071);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:6360 */
+          /* parser/parser_prod.nit:8073 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6360);
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8073);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:6362 */
+        /* parser/parser_prod.nit:8075 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -34822,14 +42708,58 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraExpr___visit_all[] = "parser_prod::ABraExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABraExpr___n_expr__eq[] = "parser_prod::ABraExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ABraExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8080;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8082 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8083 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraExpr___n_args__eq[] = "parser_prod::ABraExpr::(parser_nodes::ABraFormExpr::n_args=)";
+void parser___parser_prod___ABraExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8085;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8087 */
+  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8088 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraExpr___visit_all[] = "parser_prod::ABraExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABraExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6367;
+  fra.me.line = 8092;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -34839,27 +42769,27 @@ void parser___parser_prod___ABraExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6369 */
+  /* parser/parser_prod.nit:8094 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6369);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8094);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6370 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8095 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6370);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8095);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6371 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8096 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6371);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8096);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABraExpr___visit_all_1));
@@ -34882,20 +42812,20 @@ void parser___parser_prod___ABraExpr___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:6372 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:8097 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ABraAssignExpr___empty_init[] = "parser_prod::ABraAssignExpr::empty_init";
 void parser___parser_prod___ABraAssignExpr___empty_init(val_t p0, int* init_table){
-  int itpos201 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraAssignExpr].i;
+  int itpos200 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraAssignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos201]) return;
+  if (init_table[itpos200]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6377;
+  fra.me.line = 8102;
   fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -34903,19 +42833,19 @@ void parser___parser_prod___ABraAssignExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos201] = 1;
+  init_table[itpos200] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraAssignExpr___init_abraassignexpr[] = "parser_prod::ABraAssignExpr::init_abraassignexpr";
 void parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos202 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraAssignExpr].i;
+  int itpos201 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraAssignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos202]) return;
+  if (init_table[itpos201]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6379;
+  fra.me.line = 8104;
   fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___init_abraassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -34931,67 +42861,67 @@ void parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:6379 */
+  /* parser/parser_prod.nit:8104 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6386 */
+  /* parser/parser_prod.nit:8111 */
   CALL_parser___parser_prod___ABraAssignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:6387 */
+  /* parser/parser_prod.nit:8112 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6387);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8112);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6388 */
+  /* parser/parser_prod.nit:8113 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6388);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8113);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:6389 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:8114 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6389);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8114);
   }
   ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6390 */
+  /* parser/parser_prod.nit:8115 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6390);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8115);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:6391 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:8116 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6391);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8116);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6392 */
+  /* parser/parser_prod.nit:8117 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6392);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8117);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:6393 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:8118 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6393);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8118);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:6394 */
+  /* parser/parser_prod.nit:8119 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6394);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8119);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos202] = 1;
+  init_table[itpos201] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraAssignExpr___replace_child[] = "parser_prod::ABraAssignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABraAssignExpr___replace_child[] = "parser_prod::ABraAssignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABraAssignExpr___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;
@@ -34999,7 +42929,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6397;
+  fra.me.line = 8122;
   fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35011,11 +42941,11 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6399 */
+  /* parser/parser_prod.nit:8124 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6399);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8124);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35025,7 +42955,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6400 */
+    /* parser/parser_prod.nit:8125 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35040,32 +42970,32 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6401 */
+      /* parser/parser_prod.nit:8126 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6401);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8126);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6402 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8127 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6402);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8127);
       }
-      /* parser/parser_prod.nit:6403 */
+      /* parser/parser_prod.nit:8128 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6405 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6405);
+      /* parser/parser_prod.nit:8130 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8130);
     }
-    /* parser/parser_prod.nit:6407 */
+    /* parser/parser_prod.nit:8132 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6409 */
+  /* parser/parser_prod.nit:8134 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6409);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8134);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35075,7 +43005,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6410 */
+    /* parser/parser_prod.nit:8135 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35090,32 +43020,32 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6411 */
+      /* parser/parser_prod.nit:8136 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6411);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8136);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6412 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8137 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6412);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8137);
       }
-      /* parser/parser_prod.nit:6413 */
+      /* parser/parser_prod.nit:8138 */
       ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6415 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6415);
+      /* parser/parser_prod.nit:8140 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8140);
     }
-    /* parser/parser_prod.nit:6417 */
+    /* parser/parser_prod.nit:8142 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6419 */
+  /* parser/parser_prod.nit:8144 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 6419);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 8144);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35125,7 +43055,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6420 */
+    /* parser/parser_prod.nit:8145 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35140,32 +43070,32 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6421 */
+      /* parser/parser_prod.nit:8146 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6421);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8146);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6422 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8147 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6422);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8147);
       }
-      /* parser/parser_prod.nit:6423 */
+      /* parser/parser_prod.nit:8148 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6425 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6425);
+      /* parser/parser_prod.nit:8150 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8150);
     }
-    /* parser/parser_prod.nit:6427 */
+    /* parser/parser_prod.nit:8152 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6429 */
+  /* parser/parser_prod.nit:8154 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6429);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8154);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35175,7 +43105,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6430 */
+    /* parser/parser_prod.nit:8155 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35190,39 +43120,127 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6431 */
+      /* parser/parser_prod.nit:8156 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6431);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8156);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6432 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8157 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6432);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8157);
       }
-      /* parser/parser_prod.nit:6433 */
+      /* parser/parser_prod.nit:8158 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6435 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6435);
+      /* parser/parser_prod.nit:8160 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8160);
     }
-    /* parser/parser_prod.nit:6437 */
+    /* parser/parser_prod.nit:8162 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraAssignExpr___visit_all[] = "parser_prod::ABraAssignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABraAssignExpr___n_expr__eq[] = "parser_prod::ABraAssignExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ABraAssignExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8166;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8168 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8169 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraAssignExpr___n_args__eq[] = "parser_prod::ABraAssignExpr::(parser_nodes::ABraFormExpr::n_args=)";
+void parser___parser_prod___ABraAssignExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8171;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8173 */
+  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8174 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraAssignExpr___n_assign__eq[] = "parser_prod::ABraAssignExpr::(parser_nodes::AAssignFormExpr::n_assign=)";
+void parser___parser_prod___ABraAssignExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8176;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8178 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8179 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraAssignExpr___n_value__eq[] = "parser_prod::ABraAssignExpr::(parser_nodes::AAssignFormExpr::n_value=)";
+void parser___parser_prod___ABraAssignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8181;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8183 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8184 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraAssignExpr___visit_all[] = "parser_prod::ABraAssignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABraAssignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6441;
+  fra.me.line = 8188;
   fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -35232,50 +43250,50 @@ void parser___parser_prod___ABraAssignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6443 */
+  /* parser/parser_prod.nit:8190 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6443);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8190);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6444 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8191 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6444);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8191);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6445 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8192 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 6445);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 8192);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6446 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8193 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6446);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8193);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraReassignExpr___empty_init[] = "parser_prod::ABraReassignExpr::empty_init";
 void parser___parser_prod___ABraReassignExpr___empty_init(val_t p0, int* init_table){
-  int itpos203 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraReassignExpr].i;
+  int itpos202 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraReassignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos203]) return;
+  if (init_table[itpos202]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6450;
+  fra.me.line = 8197;
   fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -35283,19 +43301,19 @@ void parser___parser_prod___ABraReassignExpr___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos203] = 1;
+  init_table[itpos202] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr[] = "parser_prod::ABraReassignExpr::init_abrareassignexpr";
 void parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos204 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraReassignExpr].i;
+  int itpos203 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraReassignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos204]) return;
+  if (init_table[itpos203]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6452;
+  fra.me.line = 8199;
   fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -35311,67 +43329,67 @@ void parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, v
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:6452 */
+  /* parser/parser_prod.nit:8199 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6459 */
+  /* parser/parser_prod.nit:8206 */
   CALL_parser___parser_prod___ABraReassignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:6460 */
+  /* parser/parser_prod.nit:8207 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6460);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8207);
   }
   ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6461 */
+  /* parser/parser_prod.nit:8208 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6461);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8208);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:6462 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:8209 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6462);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8209);
   }
   ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6463 */
+  /* parser/parser_prod.nit:8210 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6463);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8210);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:6464 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:8211 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6464);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8211);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6465 */
+  /* parser/parser_prod.nit:8212 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6465);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8212);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:6466 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:8213 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6466);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8213);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:6467 */
+  /* parser/parser_prod.nit:8214 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6467);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8214);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos204] = 1;
+  init_table[itpos203] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraReassignExpr___replace_child[] = "parser_prod::ABraReassignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABraReassignExpr___replace_child[] = "parser_prod::ABraReassignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABraReassignExpr___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;
@@ -35379,7 +43397,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6470;
+  fra.me.line = 8217;
   fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35391,11 +43409,11 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6472 */
+  /* parser/parser_prod.nit:8219 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6472);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8219);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35405,7 +43423,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6473 */
+    /* parser/parser_prod.nit:8220 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35420,32 +43438,32 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6474 */
+      /* parser/parser_prod.nit:8221 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6474);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8221);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6475 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8222 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6475);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8222);
       }
-      /* parser/parser_prod.nit:6476 */
+      /* parser/parser_prod.nit:8223 */
       ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6478 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6478);
+      /* parser/parser_prod.nit:8225 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8225);
     }
-    /* parser/parser_prod.nit:6480 */
+    /* parser/parser_prod.nit:8227 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6482 */
+  /* parser/parser_prod.nit:8229 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6482);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8229);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35455,7 +43473,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6483 */
+    /* parser/parser_prod.nit:8230 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35470,32 +43488,32 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6484 */
+      /* parser/parser_prod.nit:8231 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6484);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8231);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6485 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8232 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6485);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8232);
       }
-      /* parser/parser_prod.nit:6486 */
+      /* parser/parser_prod.nit:8233 */
       ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6488 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6488);
+      /* parser/parser_prod.nit:8235 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8235);
     }
-    /* parser/parser_prod.nit:6490 */
+    /* parser/parser_prod.nit:8237 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6492 */
+  /* parser/parser_prod.nit:8239 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 6492);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 8239);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35505,7 +43523,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6493 */
+    /* parser/parser_prod.nit:8240 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35520,32 +43538,32 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6494 */
+      /* parser/parser_prod.nit:8241 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6494);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8241);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6495 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8242 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast AAssignOp*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6495);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8242);
       }
-      /* parser/parser_prod.nit:6496 */
+      /* parser/parser_prod.nit:8243 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6498 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6498);
+      /* parser/parser_prod.nit:8245 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8245);
     }
-    /* parser/parser_prod.nit:6500 */
+    /* parser/parser_prod.nit:8247 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6502 */
+  /* parser/parser_prod.nit:8249 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6502);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8249);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35555,7 +43573,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6503 */
+    /* parser/parser_prod.nit:8250 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35570,39 +43588,127 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6504 */
+      /* parser/parser_prod.nit:8251 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6504);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8251);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6505 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8252 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6505);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8252);
       }
-      /* parser/parser_prod.nit:6506 */
+      /* parser/parser_prod.nit:8253 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6508 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6508);
+      /* parser/parser_prod.nit:8255 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8255);
     }
-    /* parser/parser_prod.nit:6510 */
+    /* parser/parser_prod.nit:8257 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraReassignExpr___visit_all[] = "parser_prod::ABraReassignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABraReassignExpr___n_expr__eq[] = "parser_prod::ABraReassignExpr::(parser_nodes::ASendExpr::n_expr=)";
+void parser___parser_prod___ABraReassignExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8261;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8263 */
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8264 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraReassignExpr___n_args__eq[] = "parser_prod::ABraReassignExpr::(parser_nodes::ABraFormExpr::n_args=)";
+void parser___parser_prod___ABraReassignExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8266;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8268 */
+  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8269 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraReassignExpr___n_assign_op__eq[] = "parser_prod::ABraReassignExpr::(parser_nodes::AReassignFormExpr::n_assign_op=)";
+void parser___parser_prod___ABraReassignExpr___n_assign_op__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8271;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___n_assign_op__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8273 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8274 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraReassignExpr___n_value__eq[] = "parser_prod::ABraReassignExpr::(parser_nodes::AReassignFormExpr::n_value=)";
+void parser___parser_prod___ABraReassignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8276;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8278 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8279 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraReassignExpr___visit_all[] = "parser_prod::ABraReassignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABraReassignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6514;
+  fra.me.line = 8283;
   fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -35612,50 +43718,50 @@ void parser___parser_prod___ABraReassignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6516 */
+  /* parser/parser_prod.nit:8285 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6516);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8285);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6517 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8286 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6517);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8286);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6518 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8287 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 6518);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 8287);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6519 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8288 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6519);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8288);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AClosureCallExpr___empty_init[] = "parser_prod::AClosureCallExpr::empty_init";
 void parser___parser_prod___AClosureCallExpr___empty_init(val_t p0, int* init_table){
-  int itpos205 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureCallExpr].i;
+  int itpos204 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureCallExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos205]) return;
+  if (init_table[itpos204]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6523;
+  fra.me.line = 8292;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -35663,19 +43769,19 @@ void parser___parser_prod___AClosureCallExpr___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos205] = 1;
+  init_table[itpos204] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr[] = "parser_prod::AClosureCallExpr::init_aclosurecallexpr";
 void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos206 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureCallExpr].i;
+  int itpos205 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureCallExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos206]) return;
+  if (init_table[itpos205]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6525;
+  fra.me.line = 8294;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -35689,39 +43795,39 @@ void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6525 */
+  /* parser/parser_prod.nit:8294 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6531 */
+  /* parser/parser_prod.nit:8300 */
   CALL_parser___parser_prod___AClosureCallExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6532 */
+  /* parser/parser_prod.nit:8301 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6532);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8301);
   }
   ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6533 */
+  /* parser/parser_prod.nit:8302 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6533);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8302);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6534 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8303 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6534);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8303);
   }
   ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6535 */
+  /* parser/parser_prod.nit:8304 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6535);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8304);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos206] = 1;
+  init_table[itpos205] = 1;
   return;
 }
   void OC_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -35729,7 +43835,7 @@ void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, v
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:6536 */
+    /* parser/parser_prod.nit:8305 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -35743,26 +43849,26 @@ void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, v
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:6537 */
+    /* parser/parser_prod.nit:8306 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AClosureDef, ID_parser___parser_nodes___AClosureDef)) /*cast AClosureDef*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6537);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8306);
     }
-    /* parser/parser_prod.nit:6538 */
+    /* parser/parser_prod.nit:8307 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6538);
+      nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8307);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(closctx->REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:6539 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
+    /* parser/parser_prod.nit:8308 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AClosureCallExpr___replace_child[] = "parser_prod::AClosureCallExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AClosureCallExpr___replace_child[] = "parser_prod::AClosureCallExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AClosureCallExpr___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;
@@ -35773,7 +43879,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6543;
+  fra.me.line = 8312;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35785,11 +43891,11 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6545 */
+  /* parser/parser_prod.nit:8314 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6545);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8314);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35799,7 +43905,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6546 */
+    /* parser/parser_prod.nit:8315 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35814,32 +43920,32 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6547 */
+      /* parser/parser_prod.nit:8316 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6547);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8316);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6548 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8317 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6548);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8317);
       }
-      /* parser/parser_prod.nit:6549 */
+      /* parser/parser_prod.nit:8318 */
       ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6551 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6551);
+      /* parser/parser_prod.nit:8320 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8320);
     }
-    /* parser/parser_prod.nit:6553 */
+    /* parser/parser_prod.nit:8322 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6555 */
+  /* parser/parser_prod.nit:8324 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6555);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8324);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -35849,7 +43955,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6556 */
+    /* parser/parser_prod.nit:8325 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -35864,71 +43970,65 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6557 */
+      /* parser/parser_prod.nit:8326 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6557);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8326);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6558 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8327 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6558);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8327);
       }
-      /* parser/parser_prod.nit:6559 */
+      /* parser/parser_prod.nit:8328 */
       ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6561 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6561);
+      /* parser/parser_prod.nit:8330 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8330);
     }
-    /* parser/parser_prod.nit:6563 */
+    /* parser/parser_prod.nit:8332 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6565 */
+  /* parser/parser_prod.nit:8334 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6565);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8334);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:6565 */
+      /* parser/parser_prod.nit:8334 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:6566 */
+      /* parser/parser_prod.nit:8335 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6566);
+        nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8335);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:6567 */
+        /* parser/parser_prod.nit:8336 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -35943,47 +44043,47 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:6568 */
+          /* parser/parser_prod.nit:8337 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClosureDef, ID_parser___parser_nodes___AClosureDef)) /*cast AClosureDef*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6568);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8337);
           }
-          /* parser/parser_prod.nit:6569 */
+          /* parser/parser_prod.nit:8338 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6569);
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8338);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:6570 */
+          /* parser/parser_prod.nit:8339 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6570);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8339);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:6572 */
+          /* parser/parser_prod.nit:8341 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6572);
+            nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8341);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:6574 */
+        /* parser/parser_prod.nit:8343 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -35992,14 +44092,58 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AClosureCallExpr___visit_all[] = "parser_prod::AClosureCallExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AClosureCallExpr___n_id__eq[] = "parser_prod::AClosureCallExpr::(parser_nodes::AClosureCallExpr::n_id=)";
+void parser___parser_prod___AClosureCallExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8348;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8350 */
+  ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8351 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureCallExpr___n_args__eq[] = "parser_prod::AClosureCallExpr::(parser_nodes::AClosureCallExpr::n_args=)";
+void parser___parser_prod___AClosureCallExpr___n_args__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8353;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___n_args__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8355 */
+  ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8356 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureCallExpr___visit_all[] = "parser_prod::AClosureCallExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AClosureCallExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6579;
+  fra.me.line = 8360;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -36009,27 +44153,27 @@ void parser___parser_prod___AClosureCallExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6581 */
+  /* parser/parser_prod.nit:8362 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6581);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8362);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6582 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8363 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6582);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 8363);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6583 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8364 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6583);
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 8364);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AClosureCallExpr___visit_all_1));
@@ -36052,20 +44196,20 @@ void parser___parser_prod___AClosureCallExpr___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:6584 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:8365 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AVarExpr___empty_init[] = "parser_prod::AVarExpr::empty_init";
 void parser___parser_prod___AVarExpr___empty_init(val_t p0, int* init_table){
-  int itpos207 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarExpr].i;
+  int itpos206 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos207]) return;
+  if (init_table[itpos206]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6589;
+  fra.me.line = 8370;
   fra.me.meth = LOCATE_parser___parser_prod___AVarExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -36073,19 +44217,19 @@ void parser___parser_prod___AVarExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos207] = 1;
+  init_table[itpos206] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AVarExpr___init_avarexpr[] = "parser_prod::AVarExpr::init_avarexpr";
 void parser___parser_prod___AVarExpr___init_avarexpr(val_t p0, val_t p1, int* init_table){
-  int itpos208 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarExpr].i;
+  int itpos207 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos208]) return;
+  if (init_table[itpos207]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6591;
+  fra.me.line = 8372;
   fra.me.meth = LOCATE_parser___parser_prod___AVarExpr___init_avarexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -36095,28 +44239,28 @@ void parser___parser_prod___AVarExpr___init_avarexpr(val_t p0, val_t p1, int* in
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6591 */
+  /* parser/parser_prod.nit:8372 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6595 */
+  /* parser/parser_prod.nit:8376 */
   CALL_parser___parser_prod___AVarExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:6596 */
+  /* parser/parser_prod.nit:8377 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6596);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8377);
   }
   ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6597 */
+  /* parser/parser_prod.nit:8378 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6597);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8378);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos208] = 1;
+  init_table[itpos207] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVarExpr___replace_child[] = "parser_prod::AVarExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AVarExpr___replace_child[] = "parser_prod::AVarExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AVarExpr___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;
@@ -36124,7 +44268,7 @@ void parser___parser_prod___AVarExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6600;
+  fra.me.line = 8381;
   fra.me.meth = LOCATE_parser___parser_prod___AVarExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36136,11 +44280,11 @@ void parser___parser_prod___AVarExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6602 */
+  /* parser/parser_prod.nit:8383 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6602);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8383);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36150,7 +44294,7 @@ void parser___parser_prod___AVarExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6603 */
+    /* parser/parser_prod.nit:8384 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36165,39 +44309,61 @@ void parser___parser_prod___AVarExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6604 */
+      /* parser/parser_prod.nit:8385 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6604);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8385);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6605 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8386 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6605);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8386);
       }
-      /* parser/parser_prod.nit:6606 */
+      /* parser/parser_prod.nit:8387 */
       ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6608 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6608);
+      /* parser/parser_prod.nit:8389 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8389);
     }
-    /* parser/parser_prod.nit:6610 */
+    /* parser/parser_prod.nit:8391 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVarExpr___visit_all[] = "parser_prod::AVarExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AVarExpr___n_id__eq[] = "parser_prod::AVarExpr::(parser_nodes::AVarFormExpr::n_id=)";
+void parser___parser_prod___AVarExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8395;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8397 */
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8398 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarExpr___visit_all[] = "parser_prod::AVarExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AVarExpr___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___parser_prod;
-  fra.me.line = 6614;
+  fra.me.line = 8402;
   fra.me.meth = LOCATE_parser___parser_prod___AVarExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36206,26 +44372,26 @@ void parser___parser_prod___AVarExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6616 */
+  /* parser/parser_prod.nit:8404 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6616);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8404);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AVarAssignExpr___empty_init[] = "parser_prod::AVarAssignExpr::empty_init";
 void parser___parser_prod___AVarAssignExpr___empty_init(val_t p0, int* init_table){
-  int itpos209 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarAssignExpr].i;
+  int itpos208 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarAssignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos209]) return;
+  if (init_table[itpos208]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6620;
+  fra.me.line = 8408;
   fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -36233,19 +44399,19 @@ void parser___parser_prod___AVarAssignExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos209] = 1;
+  init_table[itpos208] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AVarAssignExpr___init_avarassignexpr[] = "parser_prod::AVarAssignExpr::init_avarassignexpr";
 void parser___parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos210 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarAssignExpr].i;
+  int itpos209 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarAssignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos210]) return;
+  if (init_table[itpos209]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6622;
+  fra.me.line = 8410;
   fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___init_avarassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36259,54 +44425,54 @@ void parser___parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6622 */
+  /* parser/parser_prod.nit:8410 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6628 */
+  /* parser/parser_prod.nit:8416 */
   CALL_parser___parser_prod___AVarAssignExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6629 */
+  /* parser/parser_prod.nit:8417 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6629);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8417);
   }
   ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6630 */
+  /* parser/parser_prod.nit:8418 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6630);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8418);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6631 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8419 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6631);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8419);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6632 */
+  /* parser/parser_prod.nit:8420 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6632);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8420);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6633 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8421 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6633);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8421);
   }
   ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6634 */
+  /* parser/parser_prod.nit:8422 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6634);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8422);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos210] = 1;
+  init_table[itpos209] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVarAssignExpr___replace_child[] = "parser_prod::AVarAssignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AVarAssignExpr___replace_child[] = "parser_prod::AVarAssignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AVarAssignExpr___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;
@@ -36314,7 +44480,7 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6637;
+  fra.me.line = 8425;
   fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36326,11 +44492,11 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6639 */
+  /* parser/parser_prod.nit:8427 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6639);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8427);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36340,7 +44506,7 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6640 */
+    /* parser/parser_prod.nit:8428 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36355,32 +44521,32 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6641 */
+      /* parser/parser_prod.nit:8429 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6641);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8429);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6642 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8430 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6642);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8430);
       }
-      /* parser/parser_prod.nit:6643 */
+      /* parser/parser_prod.nit:8431 */
       ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6645 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6645);
+      /* parser/parser_prod.nit:8433 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8433);
     }
-    /* parser/parser_prod.nit:6647 */
+    /* parser/parser_prod.nit:8435 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6649 */
+  /* parser/parser_prod.nit:8437 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 6649);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 8437);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36390,7 +44556,7 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6650 */
+    /* parser/parser_prod.nit:8438 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36405,32 +44571,32 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6651 */
+      /* parser/parser_prod.nit:8439 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6651);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8439);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6652 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8440 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast TAssign*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6652);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8440);
       }
-      /* parser/parser_prod.nit:6653 */
+      /* parser/parser_prod.nit:8441 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6655 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6655);
+      /* parser/parser_prod.nit:8443 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8443);
     }
-    /* parser/parser_prod.nit:6657 */
+    /* parser/parser_prod.nit:8445 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6659 */
+  /* parser/parser_prod.nit:8447 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6659);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8447);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36440,7 +44606,7 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6660 */
+    /* parser/parser_prod.nit:8448 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36455,39 +44621,105 @@ void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6661 */
+      /* parser/parser_prod.nit:8449 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6661);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8449);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6662 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8450 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6662);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8450);
       }
-      /* parser/parser_prod.nit:6663 */
+      /* parser/parser_prod.nit:8451 */
       ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6665 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6665);
+      /* parser/parser_prod.nit:8453 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8453);
     }
-    /* parser/parser_prod.nit:6667 */
+    /* parser/parser_prod.nit:8455 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVarAssignExpr___visit_all[] = "parser_prod::AVarAssignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AVarAssignExpr___n_id__eq[] = "parser_prod::AVarAssignExpr::(parser_nodes::AVarFormExpr::n_id=)";
+void parser___parser_prod___AVarAssignExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8459;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8461 */
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8462 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarAssignExpr___n_assign__eq[] = "parser_prod::AVarAssignExpr::(parser_nodes::AAssignFormExpr::n_assign=)";
+void parser___parser_prod___AVarAssignExpr___n_assign__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8464;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___n_assign__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8466 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8467 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarAssignExpr___n_value__eq[] = "parser_prod::AVarAssignExpr::(parser_nodes::AAssignFormExpr::n_value=)";
+void parser___parser_prod___AVarAssignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8469;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8471 */
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8472 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarAssignExpr___visit_all[] = "parser_prod::AVarAssignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AVarAssignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6671;
+  fra.me.line = 8476;
   fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -36497,42 +44729,42 @@ void parser___parser_prod___AVarAssignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6673 */
+  /* parser/parser_prod.nit:8478 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6673);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8478);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6674 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8479 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 6674);
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_parser___parser_prod, 8479);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6675 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8480 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6675);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8480);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AVarReassignExpr___empty_init[] = "parser_prod::AVarReassignExpr::empty_init";
 void parser___parser_prod___AVarReassignExpr___empty_init(val_t p0, int* init_table){
-  int itpos211 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarReassignExpr].i;
+  int itpos210 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarReassignExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos211]) return;
+  if (init_table[itpos210]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6679;
+  fra.me.line = 8484;
   fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -36540,19 +44772,19 @@ void parser___parser_prod___AVarReassignExpr___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos211] = 1;
+  init_table[itpos210] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr[] = "parser_prod::AVarReassignExpr::init_avarreassignexpr";
 void parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos212 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarReassignExpr].i;
+  int itpos211 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVarReassignExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos212]) return;
+  if (init_table[itpos211]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6681;
+  fra.me.line = 8486;
   fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36566,54 +44798,54 @@ void parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6681 */
+  /* parser/parser_prod.nit:8486 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6687 */
+  /* parser/parser_prod.nit:8492 */
   CALL_parser___parser_prod___AVarReassignExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6688 */
+  /* parser/parser_prod.nit:8493 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6688);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8493);
   }
   ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6689 */
+  /* parser/parser_prod.nit:8494 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6689);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8494);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6690 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8495 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6690);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8495);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6691 */
+  /* parser/parser_prod.nit:8496 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6691);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8496);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6692 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8497 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6692);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8497);
   }
   ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6693 */
+  /* parser/parser_prod.nit:8498 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6693);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8498);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos212] = 1;
+  init_table[itpos211] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVarReassignExpr___replace_child[] = "parser_prod::AVarReassignExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AVarReassignExpr___replace_child[] = "parser_prod::AVarReassignExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AVarReassignExpr___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;
@@ -36621,7 +44853,7 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6696;
+  fra.me.line = 8501;
   fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36633,11 +44865,11 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6698 */
+  /* parser/parser_prod.nit:8503 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6698);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8503);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36647,7 +44879,7 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6699 */
+    /* parser/parser_prod.nit:8504 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36662,32 +44894,32 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6700 */
+      /* parser/parser_prod.nit:8505 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6700);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8505);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6701 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8506 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6701);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8506);
       }
-      /* parser/parser_prod.nit:6702 */
+      /* parser/parser_prod.nit:8507 */
       ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6704 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6704);
+      /* parser/parser_prod.nit:8509 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8509);
     }
-    /* parser/parser_prod.nit:6706 */
+    /* parser/parser_prod.nit:8511 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6708 */
+  /* parser/parser_prod.nit:8513 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 6708);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 8513);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36697,7 +44929,7 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6709 */
+    /* parser/parser_prod.nit:8514 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36712,32 +44944,32 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6710 */
+      /* parser/parser_prod.nit:8515 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6710);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8515);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6711 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8516 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast AAssignOp*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6711);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8516);
       }
-      /* parser/parser_prod.nit:6712 */
+      /* parser/parser_prod.nit:8517 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6714 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6714);
+      /* parser/parser_prod.nit:8519 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8519);
     }
-    /* parser/parser_prod.nit:6716 */
+    /* parser/parser_prod.nit:8521 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6718 */
+  /* parser/parser_prod.nit:8523 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6718);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8523);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36747,7 +44979,7 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6719 */
+    /* parser/parser_prod.nit:8524 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36762,39 +44994,105 @@ void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6720 */
+      /* parser/parser_prod.nit:8525 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6720);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8525);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6721 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8526 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6721);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8526);
       }
-      /* parser/parser_prod.nit:6722 */
+      /* parser/parser_prod.nit:8527 */
       ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6724 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6724);
+      /* parser/parser_prod.nit:8529 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8529);
     }
-    /* parser/parser_prod.nit:6726 */
+    /* parser/parser_prod.nit:8531 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AVarReassignExpr___visit_all[] = "parser_prod::AVarReassignExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AVarReassignExpr___n_id__eq[] = "parser_prod::AVarReassignExpr::(parser_nodes::AVarFormExpr::n_id=)";
+void parser___parser_prod___AVarReassignExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8535;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8537 */
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8538 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarReassignExpr___n_assign_op__eq[] = "parser_prod::AVarReassignExpr::(parser_nodes::AReassignFormExpr::n_assign_op=)";
+void parser___parser_prod___AVarReassignExpr___n_assign_op__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8540;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___n_assign_op__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8542 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8543 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarReassignExpr___n_value__eq[] = "parser_prod::AVarReassignExpr::(parser_nodes::AReassignFormExpr::n_value=)";
+void parser___parser_prod___AVarReassignExpr___n_value__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8545;
+  fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___n_value__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8547 */
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8548 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AVarReassignExpr___visit_all[] = "parser_prod::AVarReassignExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AVarReassignExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6730;
+  fra.me.line = 8552;
   fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -36804,42 +45102,42 @@ void parser___parser_prod___AVarReassignExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6732 */
+  /* parser/parser_prod.nit:8554 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 6732);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8554);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6733 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8555 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 6733);
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_parser___parser_prod, 8555);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:6734 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:8556 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 6734);
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_parser___parser_prod, 8556);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ARangeExpr___empty_init[] = "parser_prod::ARangeExpr::empty_init";
 void parser___parser_prod___ARangeExpr___empty_init(val_t p0, int* init_table){
-  int itpos213 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ARangeExpr].i;
+  int itpos212 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ARangeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos213]) return;
+  if (init_table[itpos212]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6738;
+  fra.me.line = 8560;
   fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -36847,20 +45145,20 @@ void parser___parser_prod___ARangeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos213] = 1;
+  init_table[itpos212] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ARangeExpr___init_arangeexpr[] = "parser_prod::ARangeExpr::init_arangeexpr";
 void parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos214 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ARangeExpr].i;
+  int itpos213 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ARangeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos214]) return;
+  if (init_table[itpos213]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6740;
+  fra.me.line = 8562;
   fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___init_arangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36874,39 +45172,39 @@ void parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:6740 */
+  /* parser/parser_prod.nit:8562 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6746 */
+  /* parser/parser_prod.nit:8568 */
   CALL_parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:6747 */
+  /* parser/parser_prod.nit:8569 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6747);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8569);
   }
   ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6748 */
+  /* parser/parser_prod.nit:8570 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6748);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8570);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6749 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8571 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6749);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8571);
   }
   ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6750 */
+  /* parser/parser_prod.nit:8572 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6750);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8572);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:6751 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:8573 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6752 */
+  /* parser/parser_prod.nit:8574 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -36921,18 +45219,18 @@ void parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6753 */
+    /* parser/parser_prod.nit:8575 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6753);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8575);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos214] = 1;
+  init_table[itpos213] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ARangeExpr___replace_child[] = "parser_prod::ARangeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ARangeExpr___replace_child[] = "parser_prod::ARangeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ARangeExpr___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;
@@ -36940,7 +45238,7 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6757;
+  fra.me.line = 8579;
   fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36952,11 +45250,11 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6759 */
+  /* parser/parser_prod.nit:8581 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6759);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8581);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -36966,7 +45264,7 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6760 */
+    /* parser/parser_prod.nit:8582 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -36981,32 +45279,32 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6761 */
+      /* parser/parser_prod.nit:8583 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6761);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8583);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6762 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8584 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6762);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8584);
       }
-      /* parser/parser_prod.nit:6763 */
+      /* parser/parser_prod.nit:8585 */
       ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6765 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6765);
+      /* parser/parser_prod.nit:8587 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8587);
     }
-    /* parser/parser_prod.nit:6767 */
+    /* parser/parser_prod.nit:8589 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6769 */
+  /* parser/parser_prod.nit:8591 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6769);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 8591);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37016,7 +45314,7 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6770 */
+    /* parser/parser_prod.nit:8592 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37031,28 +45329,28 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6771 */
+      /* parser/parser_prod.nit:8593 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6771);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8593);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6772 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8594 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6772);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8594);
       }
-      /* parser/parser_prod.nit:6773 */
+      /* parser/parser_prod.nit:8595 */
       ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6775 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6775);
+      /* parser/parser_prod.nit:8597 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8597);
     }
-    /* parser/parser_prod.nit:6777 */
+    /* parser/parser_prod.nit:8599 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6779 */
+  /* parser/parser_prod.nit:8601 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -37067,7 +45365,7 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6780 */
+    /* parser/parser_prod.nit:8602 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37082,32 +45380,120 @@ void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6781 */
+      /* parser/parser_prod.nit:8603 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6781);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8603);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6782 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8604 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6782);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8604);
       }
-      /* parser/parser_prod.nit:6783 */
+      /* parser/parser_prod.nit:8605 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6785 */
+      /* parser/parser_prod.nit:8607 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:6787 */
+    /* parser/parser_prod.nit:8609 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ARangeExpr___visit_all[] = "parser_prod::ARangeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ARangeExpr___n_expr__eq[] = "parser_prod::ARangeExpr::(parser_nodes::ARangeExpr::n_expr=)";
+void parser___parser_prod___ARangeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8613;
+  fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8615 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8616 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ARangeExpr___n_expr2__eq[] = "parser_prod::ARangeExpr::(parser_nodes::ARangeExpr::n_expr2=)";
+void parser___parser_prod___ARangeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8618;
+  fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8620 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8621 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ARangeExpr___n_annotations__eq[] = "parser_prod::ARangeExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ARangeExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8623;
+  fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8625 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8626 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8627 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8627);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ARangeExpr___visit_all[] = "parser_prod::ARangeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ARangeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -37115,7 +45501,7 @@ void parser___parser_prod___ARangeExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6791;
+  fra.me.line = 8632;
   fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37126,25 +45512,25 @@ void parser___parser_prod___ARangeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6791 */
+  /* parser/parser_prod.nit:8632 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6793 */
+  /* parser/parser_prod.nit:8634 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6793);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8634);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6794 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8635 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6794);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 8635);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6795 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8636 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -37160,27 +45546,27 @@ void parser___parser_prod___ARangeExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6796 */
+    /* parser/parser_prod.nit:8637 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6796);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8637);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACrangeExpr___empty_init[] = "parser_prod::ACrangeExpr::empty_init";
 void parser___parser_prod___ACrangeExpr___empty_init(val_t p0, int* init_table){
-  int itpos215 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr].i;
+  int itpos214 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos215]) return;
+  if (init_table[itpos214]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6801;
+  fra.me.line = 8642;
   fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -37188,20 +45574,20 @@ void parser___parser_prod___ACrangeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos215] = 1;
+  init_table[itpos214] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACrangeExpr___init_acrangeexpr[] = "parser_prod::ACrangeExpr::init_acrangeexpr";
 void parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos216 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr].i;
+  int itpos215 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos216]) return;
+  if (init_table[itpos215]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6803;
+  fra.me.line = 8644;
   fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___init_acrangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -37219,65 +45605,65 @@ void parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, v
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:6803 */
+  /* parser/parser_prod.nit:8644 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6811 */
+  /* parser/parser_prod.nit:8652 */
   CALL_parser___parser_prod___ACrangeExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:6812 */
+  /* parser/parser_prod.nit:8653 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6812);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8653);
   }
   ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6813 */
+  /* parser/parser_prod.nit:8654 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6813);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8654);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6814 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8655 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6814);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8655);
   }
   ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6815 */
+  /* parser/parser_prod.nit:8656 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6815);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8656);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6816 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8657 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6816);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8657);
   }
   ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6817 */
+  /* parser/parser_prod.nit:8658 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6817);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8658);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6818 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8659 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6818);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8659);
   }
   ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:6819 */
+  /* parser/parser_prod.nit:8660 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6819);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8660);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6820 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8661 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:6821 */
+  /* parser/parser_prod.nit:8662 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -37292,18 +45678,18 @@ void parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6822 */
+    /* parser/parser_prod.nit:8663 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6822);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8663);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos216] = 1;
+  init_table[itpos215] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACrangeExpr___replace_child[] = "parser_prod::ACrangeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ACrangeExpr___replace_child[] = "parser_prod::ACrangeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ACrangeExpr___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;
@@ -37311,7 +45697,7 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6826;
+  fra.me.line = 8667;
   fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37323,11 +45709,11 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6828 */
+  /* parser/parser_prod.nit:8669 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 6828);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 8669);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37337,7 +45723,7 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6829 */
+    /* parser/parser_prod.nit:8670 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37352,32 +45738,32 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6830 */
+      /* parser/parser_prod.nit:8671 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6830);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8671);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6831 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8672 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast TObra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6831);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8672);
       }
-      /* parser/parser_prod.nit:6832 */
+      /* parser/parser_prod.nit:8673 */
       ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6834 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6834);
+      /* parser/parser_prod.nit:8675 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8675);
     }
-    /* parser/parser_prod.nit:6836 */
+    /* parser/parser_prod.nit:8677 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6838 */
+  /* parser/parser_prod.nit:8679 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6838);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8679);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37387,7 +45773,7 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6839 */
+    /* parser/parser_prod.nit:8680 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37402,32 +45788,32 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6840 */
+      /* parser/parser_prod.nit:8681 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6840);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8681);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6841 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8682 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6841);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8682);
       }
-      /* parser/parser_prod.nit:6842 */
+      /* parser/parser_prod.nit:8683 */
       ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6844 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6844);
+      /* parser/parser_prod.nit:8685 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8685);
     }
-    /* parser/parser_prod.nit:6846 */
+    /* parser/parser_prod.nit:8687 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6848 */
+  /* parser/parser_prod.nit:8689 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6848);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 8689);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37437,7 +45823,7 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6849 */
+    /* parser/parser_prod.nit:8690 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37452,32 +45838,32 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6850 */
+      /* parser/parser_prod.nit:8691 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6850);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8691);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6851 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8692 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6851);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8692);
       }
-      /* parser/parser_prod.nit:6852 */
+      /* parser/parser_prod.nit:8693 */
       ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6854 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6854);
+      /* parser/parser_prod.nit:8695 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8695);
     }
-    /* parser/parser_prod.nit:6856 */
+    /* parser/parser_prod.nit:8697 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6858 */
+  /* parser/parser_prod.nit:8699 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 6858);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 8699);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37487,7 +45873,7 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6859 */
+    /* parser/parser_prod.nit:8700 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37502,28 +45888,28 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6860 */
+      /* parser/parser_prod.nit:8701 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6860);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8701);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6861 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8702 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast TCbra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6861);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8702);
       }
-      /* parser/parser_prod.nit:6862 */
+      /* parser/parser_prod.nit:8703 */
       ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6864 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6864);
+      /* parser/parser_prod.nit:8705 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8705);
     }
-    /* parser/parser_prod.nit:6866 */
+    /* parser/parser_prod.nit:8707 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6868 */
+  /* parser/parser_prod.nit:8709 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -37538,7 +45924,7 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6869 */
+    /* parser/parser_prod.nit:8710 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37553,32 +45939,164 @@ void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6870 */
+      /* parser/parser_prod.nit:8711 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6870);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8711);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6871 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8712 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6871);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8712);
       }
-      /* parser/parser_prod.nit:6872 */
+      /* parser/parser_prod.nit:8713 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6874 */
+      /* parser/parser_prod.nit:8715 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:6876 */
+    /* parser/parser_prod.nit:8717 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACrangeExpr___visit_all[] = "parser_prod::ACrangeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ACrangeExpr___n_obra__eq[] = "parser_prod::ACrangeExpr::(parser_nodes::ACrangeExpr::n_obra=)";
+void parser___parser_prod___ACrangeExpr___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8721;
+  fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8723 */
+  ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8724 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACrangeExpr___n_expr__eq[] = "parser_prod::ACrangeExpr::(parser_nodes::ARangeExpr::n_expr=)";
+void parser___parser_prod___ACrangeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8726;
+  fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8728 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8729 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACrangeExpr___n_expr2__eq[] = "parser_prod::ACrangeExpr::(parser_nodes::ARangeExpr::n_expr2=)";
+void parser___parser_prod___ACrangeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8731;
+  fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8733 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8734 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACrangeExpr___n_cbra__eq[] = "parser_prod::ACrangeExpr::(parser_nodes::ACrangeExpr::n_cbra=)";
+void parser___parser_prod___ACrangeExpr___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8736;
+  fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8738 */
+  ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8739 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACrangeExpr___n_annotations__eq[] = "parser_prod::ACrangeExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ACrangeExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8741;
+  fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8743 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8744 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8745 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8745);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACrangeExpr___visit_all[] = "parser_prod::ACrangeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ACrangeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -37586,7 +46104,7 @@ void parser___parser_prod___ACrangeExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6880;
+  fra.me.line = 8750;
   fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37597,41 +46115,41 @@ void parser___parser_prod___ACrangeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6880 */
+  /* parser/parser_prod.nit:8750 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6882 */
+  /* parser/parser_prod.nit:8752 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 6882);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 8752);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACrangeExpr____n_obra(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6883 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8753 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6883);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8753);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6884 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8754 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6884);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 8754);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6885 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8755 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 6885);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 8755);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACrangeExpr____n_cbra(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6886 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8756 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -37647,27 +46165,27 @@ void parser___parser_prod___ACrangeExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6887 */
+    /* parser/parser_prod.nit:8757 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6887);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8757);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOrangeExpr___empty_init[] = "parser_prod::AOrangeExpr::empty_init";
 void parser___parser_prod___AOrangeExpr___empty_init(val_t p0, int* init_table){
-  int itpos217 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr].i;
+  int itpos216 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos217]) return;
+  if (init_table[itpos216]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6892;
+  fra.me.line = 8762;
   fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -37675,20 +46193,20 @@ void parser___parser_prod___AOrangeExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos217] = 1;
+  init_table[itpos216] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AOrangeExpr___init_aorangeexpr[] = "parser_prod::AOrangeExpr::init_aorangeexpr";
 void parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos218 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr].i;
+  int itpos217 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos218]) return;
+  if (init_table[itpos217]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6894;
+  fra.me.line = 8764;
   fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___init_aorangeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -37706,65 +46224,65 @@ void parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, v
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:6894 */
+  /* parser/parser_prod.nit:8764 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6902 */
+  /* parser/parser_prod.nit:8772 */
   CALL_parser___parser_prod___AOrangeExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:6903 */
+  /* parser/parser_prod.nit:8773 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6903);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8773);
   }
   ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6904 */
+  /* parser/parser_prod.nit:8774 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6904);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8774);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6905 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8775 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6905);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8775);
   }
   ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6906 */
+  /* parser/parser_prod.nit:8776 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6906);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8776);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6907 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8777 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6907);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8777);
   }
   ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:6908 */
+  /* parser/parser_prod.nit:8778 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6908);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8778);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6909 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8779 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6909);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8779);
   }
   ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:6910 */
+  /* parser/parser_prod.nit:8780 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6910);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8780);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:6911 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:8781 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:6912 */
+  /* parser/parser_prod.nit:8782 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -37779,18 +46297,18 @@ void parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6913 */
+    /* parser/parser_prod.nit:8783 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6913);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8783);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos218] = 1;
+  init_table[itpos217] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOrangeExpr___replace_child[] = "parser_prod::AOrangeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AOrangeExpr___replace_child[] = "parser_prod::AOrangeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AOrangeExpr___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;
@@ -37798,7 +46316,7 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6917;
+  fra.me.line = 8787;
   fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37810,11 +46328,11 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6919 */
+  /* parser/parser_prod.nit:8789 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 6919);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 8789);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37824,7 +46342,7 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6920 */
+    /* parser/parser_prod.nit:8790 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37839,32 +46357,32 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6921 */
+      /* parser/parser_prod.nit:8791 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6921);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8791);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6922 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8792 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast TObra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6922);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8792);
       }
-      /* parser/parser_prod.nit:6923 */
+      /* parser/parser_prod.nit:8793 */
       ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6925 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6925);
+      /* parser/parser_prod.nit:8795 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8795);
     }
-    /* parser/parser_prod.nit:6927 */
+    /* parser/parser_prod.nit:8797 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6929 */
+  /* parser/parser_prod.nit:8799 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6929);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8799);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37874,7 +46392,7 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6930 */
+    /* parser/parser_prod.nit:8800 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37889,32 +46407,32 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6931 */
+      /* parser/parser_prod.nit:8801 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6931);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8801);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6932 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8802 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6932);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8802);
       }
-      /* parser/parser_prod.nit:6933 */
+      /* parser/parser_prod.nit:8803 */
       ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6935 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6935);
+      /* parser/parser_prod.nit:8805 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8805);
     }
-    /* parser/parser_prod.nit:6937 */
+    /* parser/parser_prod.nit:8807 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6939 */
+  /* parser/parser_prod.nit:8809 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6939);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 8809);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37924,7 +46442,7 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6940 */
+    /* parser/parser_prod.nit:8810 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37939,32 +46457,32 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6941 */
+      /* parser/parser_prod.nit:8811 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6941);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8811);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6942 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8812 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6942);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8812);
       }
-      /* parser/parser_prod.nit:6943 */
+      /* parser/parser_prod.nit:8813 */
       ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6945 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6945);
+      /* parser/parser_prod.nit:8815 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8815);
     }
-    /* parser/parser_prod.nit:6947 */
+    /* parser/parser_prod.nit:8817 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6949 */
+  /* parser/parser_prod.nit:8819 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 6949);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 8819);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -37974,7 +46492,7 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6950 */
+    /* parser/parser_prod.nit:8820 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -37989,28 +46507,28 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6951 */
+      /* parser/parser_prod.nit:8821 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6951);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8821);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6952 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8822 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast TObra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6952);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8822);
       }
-      /* parser/parser_prod.nit:6953 */
+      /* parser/parser_prod.nit:8823 */
       ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6955 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 6955);
+      /* parser/parser_prod.nit:8825 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8825);
     }
-    /* parser/parser_prod.nit:6957 */
+    /* parser/parser_prod.nit:8827 */
     goto label1;
   }
-  /* parser/parser_prod.nit:6959 */
+  /* parser/parser_prod.nit:8829 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -38025,7 +46543,7 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6960 */
+    /* parser/parser_prod.nit:8830 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -38040,32 +46558,164 @@ void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:6961 */
+      /* parser/parser_prod.nit:8831 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6961);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8831);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:6962 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8832 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6962);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8832);
       }
-      /* parser/parser_prod.nit:6963 */
+      /* parser/parser_prod.nit:8833 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:6965 */
+      /* parser/parser_prod.nit:8835 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:6967 */
+    /* parser/parser_prod.nit:8837 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AOrangeExpr___visit_all[] = "parser_prod::AOrangeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AOrangeExpr___n_obra__eq[] = "parser_prod::AOrangeExpr::(parser_nodes::AOrangeExpr::n_obra=)";
+void parser___parser_prod___AOrangeExpr___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8841;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8843 */
+  ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8844 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrangeExpr___n_expr__eq[] = "parser_prod::AOrangeExpr::(parser_nodes::ARangeExpr::n_expr=)";
+void parser___parser_prod___AOrangeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8846;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8848 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8849 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrangeExpr___n_expr2__eq[] = "parser_prod::AOrangeExpr::(parser_nodes::ARangeExpr::n_expr2=)";
+void parser___parser_prod___AOrangeExpr___n_expr2__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8851;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___n_expr2__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8853 */
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8854 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrangeExpr___n_cbra__eq[] = "parser_prod::AOrangeExpr::(parser_nodes::AOrangeExpr::n_cbra=)";
+void parser___parser_prod___AOrangeExpr___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8856;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8858 */
+  ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8859 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrangeExpr___n_annotations__eq[] = "parser_prod::AOrangeExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AOrangeExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8861;
+  fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8863 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8864 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8865 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8865);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AOrangeExpr___visit_all[] = "parser_prod::AOrangeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AOrangeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -38073,7 +46723,7 @@ void parser___parser_prod___AOrangeExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6971;
+  fra.me.line = 8870;
   fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38084,41 +46734,41 @@ void parser___parser_prod___AOrangeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:6971 */
+  /* parser/parser_prod.nit:8870 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6973 */
+  /* parser/parser_prod.nit:8872 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 6973);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 8872);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrangeExpr____n_obra(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6974 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8873 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 6974);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 8873);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6975 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8874 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 6975);
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_parser___parser_prod, 8874);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6976 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8875 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 6976);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 8875);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AOrangeExpr____n_cbra(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6977 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8876 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -38134,27 +46784,27 @@ void parser___parser_prod___AOrangeExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6978 */
+    /* parser/parser_prod.nit:8877 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6978);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8877);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AArrayExpr___empty_init[] = "parser_prod::AArrayExpr::empty_init";
 void parser___parser_prod___AArrayExpr___empty_init(val_t p0, int* init_table){
-  int itpos219 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AArrayExpr].i;
+  int itpos218 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AArrayExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos219]) return;
+  if (init_table[itpos218]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6983;
+  fra.me.line = 8882;
   fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -38162,20 +46812,20 @@ void parser___parser_prod___AArrayExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos219] = 1;
+  init_table[itpos218] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AArrayExpr___init_aarrayexpr[] = "parser_prod::AArrayExpr::init_aarrayexpr";
 void parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos220 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AArrayExpr].i;
+  int itpos219 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AArrayExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos220]) return;
+  if (init_table[itpos219]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6985;
+  fra.me.line = 8884;
   fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___init_aarrayexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38187,26 +46837,26 @@ void parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:6985 */
+  /* parser/parser_prod.nit:8884 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:6990 */
+  /* parser/parser_prod.nit:8889 */
   CALL_parser___parser_prod___AArrayExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:6991 */
+  /* parser/parser_prod.nit:8890 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6991);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8890);
   }
   ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:6992 */
+  /* parser/parser_prod.nit:8891 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6992);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8891);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:6993 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8892 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:6994 */
+  /* parser/parser_prod.nit:8893 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38221,18 +46871,18 @@ void parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:6995 */
+    /* parser/parser_prod.nit:8894 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6995);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8894);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos220] = 1;
+  init_table[itpos219] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AArrayExpr___replace_child[] = "parser_prod::AArrayExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AArrayExpr___replace_child[] = "parser_prod::AArrayExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AArrayExpr___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;
@@ -38240,7 +46890,7 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 6999;
+  fra.me.line = 8898;
   fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38252,11 +46902,11 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7001 */
+  /* parser/parser_prod.nit:8900 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7001);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8900);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -38266,7 +46916,7 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7002 */
+    /* parser/parser_prod.nit:8901 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -38281,28 +46931,363 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7003 */
+      /* parser/parser_prod.nit:8902 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7003);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8902);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7004 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8903 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast AExprs*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7004);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8903);
       }
-      /* parser/parser_prod.nit:7005 */
+      /* parser/parser_prod.nit:8904 */
       ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7007 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7007);
+      /* parser/parser_prod.nit:8906 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8906);
     }
-    /* parser/parser_prod.nit:7009 */
+    /* parser/parser_prod.nit:8908 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7011 */
+  /* parser/parser_prod.nit:8910 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8911 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:8912 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8912);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8913 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8913);
+      }
+      /* parser/parser_prod.nit:8914 */
+      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:8916 */
+      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
+    }
+    /* parser/parser_prod.nit:8918 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AArrayExpr___n_exprs__eq[] = "parser_prod::AArrayExpr::(parser_nodes::AArrayExpr::n_exprs=)";
+void parser___parser_prod___AArrayExpr___n_exprs__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8922;
+  fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___n_exprs__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8924 */
+  ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8925 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AArrayExpr___n_annotations__eq[] = "parser_prod::AArrayExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AArrayExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8927;
+  fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8929 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8930 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8931 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8931);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AArrayExpr___visit_all[] = "parser_prod::AArrayExpr::(parser_nodes::ANode::visit_all)";
+void parser___parser_prod___AArrayExpr___visit_all(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8936;
+  fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8936 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* parser/parser_prod.nit:8938 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[2])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8938);
+  }
+  fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8939 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8940 */
+    fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
+    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8940);
+    }
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASelfExpr___empty_init[] = "parser_prod::ASelfExpr::empty_init";
+void parser___parser_prod___ASelfExpr___empty_init(val_t p0, int* init_table){
+  int itpos220 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASelfExpr].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos220]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8945;
+  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos220] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASelfExpr___init_aselfexpr[] = "parser_prod::ASelfExpr::init_aselfexpr";
+void parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos221 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASelfExpr].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos221]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8947;
+  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___init_aselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:8947 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* parser/parser_prod.nit:8952 */
+  CALL_parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
+  /* parser/parser_prod.nit:8953 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8953);
+  }
+  ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[3]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8954 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8954);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:8955 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
+  /* parser/parser_prod.nit:8956 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8957 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8957);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  }
+  stack_frame_head = fra.me.prev;
+  init_table[itpos221] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASelfExpr___replace_child[] = "parser_prod::ASelfExpr::(parser_nodes::ANode::replace_child)";
+void parser___parser_prod___ASelfExpr___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;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 8961;
+  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:8963 */
+  fra.me.REG[3] = ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:8964 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:8965 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8965);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8966 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast TKwself*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8966);
+      }
+      /* parser/parser_prod.nit:8967 */
+      ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:8969 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8969);
+    }
+    /* parser/parser_prod.nit:8971 */
+    goto label1;
+  }
+  /* parser/parser_prod.nit:8973 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -38317,7 +47302,7 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7012 */
+    /* parser/parser_prod.nit:8974 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -38332,301 +47317,103 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7013 */
+      /* parser/parser_prod.nit:8975 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7013);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8975);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7014 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:8976 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7014);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8976);
       }
-      /* parser/parser_prod.nit:7015 */
+      /* parser/parser_prod.nit:8977 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7017 */
+      /* parser/parser_prod.nit:8979 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7019 */
+    /* parser/parser_prod.nit:8981 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AArrayExpr___visit_all[] = "parser_prod::AArrayExpr::(parser_prod::ANode::visit_all)";
-void parser___parser_prod___AArrayExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+static const char LOCATE_parser___parser_prod___ASelfExpr___n_kwself__eq[] = "parser_prod::ASelfExpr::(parser_nodes::ASelfExpr::n_kwself=)";
+void parser___parser_prod___ASelfExpr___n_kwself__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
-  val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7023;
-  fra.me.meth = LOCATE_parser___parser_prod___AArrayExpr___visit_all;
+  fra.me.line = 8985;
+  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___n_kwself__eq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7023 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7025 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7025);
-  }
-  fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7026 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  /* parser/parser_prod.nit:8987 */
+  ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8988 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7027 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
-    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7027);
-    }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8988);
   }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASelfExpr___empty_init[] = "parser_prod::ASelfExpr::empty_init";
-void parser___parser_prod___ASelfExpr___empty_init(val_t p0, int* init_table){
-  int itpos221 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASelfExpr].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos221]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7032;
-  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos221] = 1;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ASelfExpr___init_aselfexpr[] = "parser_prod::ASelfExpr::init_aselfexpr";
-void parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos222 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASelfExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+static const char LOCATE_parser___parser_prod___ASelfExpr___n_annotations__eq[] = "parser_prod::ASelfExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ASelfExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos222]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7034;
-  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___init_aselfexpr;
+  fra.me.line = 8990;
+  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___n_annotations__eq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7034 */
-  fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7039 */
-  CALL_parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7040 */
-  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7040);
-  }
-  ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7041 */
+  /* parser/parser_prod.nit:8992 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:8993 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7041);
-  }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7042 */
-  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7043 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7044 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7044);
-    }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  }
-  stack_frame_head = fra.me.prev;
-  init_table[itpos222] = 1;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ASelfExpr___replace_child[] = "parser_prod::ASelfExpr::(parser_prod::ANode::replace_child)";
-void parser___parser_prod___ASelfExpr___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;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7048;
-  fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___replace_child;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7050 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7051 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7052 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7052);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7053 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast TKwself*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7053);
-      }
-      /* parser/parser_prod.nit:7054 */
-      ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:7056 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7056);
-    }
-    /* parser/parser_prod.nit:7058 */
-    goto label1;
-  }
-  /* parser/parser_prod.nit:7060 */
-  fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      REGB0 = REGB1;
-    }
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7061 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    /* parser/parser_prod.nit:8994 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7062 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7062);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7063 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7063);
-      }
-      /* parser/parser_prod.nit:7064 */
-      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:7066 */
-      ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8994);
     }
-    /* parser/parser_prod.nit:7068 */
-    goto label1;
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASelfExpr___visit_all[] = "parser_prod::ASelfExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASelfExpr___visit_all[] = "parser_prod::ASelfExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASelfExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -38634,7 +47421,7 @@ void parser___parser_prod___ASelfExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7072;
+  fra.me.line = 8999;
   fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38645,12 +47432,12 @@ void parser___parser_prod___ASelfExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7072 */
+  /* parser/parser_prod.nit:8999 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7074 */
+  /* parser/parser_prod.nit:9001 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7075 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9002 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -38666,27 +47453,27 @@ void parser___parser_prod___ASelfExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7076 */
+    /* parser/parser_prod.nit:9003 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7076);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9003);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AImplicitSelfExpr___empty_init[] = "parser_prod::AImplicitSelfExpr::empty_init";
 void parser___parser_prod___AImplicitSelfExpr___empty_init(val_t p0, int* init_table){
-  int itpos223 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AImplicitSelfExpr].i;
+  int itpos222 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AImplicitSelfExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos223]) return;
+  if (init_table[itpos222]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7081;
+  fra.me.line = 9008;
   fra.me.meth = LOCATE_parser___parser_prod___AImplicitSelfExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -38694,37 +47481,37 @@ void parser___parser_prod___AImplicitSelfExpr___empty_init(val_t p0, int* init_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos223] = 1;
+  init_table[itpos222] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr[] = "parser_prod::AImplicitSelfExpr::init_aimplicitselfexpr";
 void parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(val_t p0, int* init_table){
-  int itpos224 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AImplicitSelfExpr].i;
+  int itpos223 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AImplicitSelfExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos224]) return;
+  if (init_table[itpos223]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7083;
+  fra.me.line = 9010;
   fra.me.meth = LOCATE_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:7085 */
+  /* parser/parser_prod.nit:9012 */
   CALL_parser___parser_prod___AImplicitSelfExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
-  init_table[itpos224] = 1;
+  init_table[itpos223] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AImplicitSelfExpr___replace_child[] = "parser_prod::AImplicitSelfExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AImplicitSelfExpr___replace_child[] = "parser_prod::AImplicitSelfExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AImplicitSelfExpr___replace_child(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7088;
+  fra.me.line = 9015;
   fra.me.meth = LOCATE_parser___parser_prod___AImplicitSelfExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -38738,13 +47525,13 @@ void parser___parser_prod___AImplicitSelfExpr___replace_child(val_t p0, val_t p1
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AImplicitSelfExpr___visit_all[] = "parser_prod::AImplicitSelfExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AImplicitSelfExpr___visit_all[] = "parser_prod::AImplicitSelfExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AImplicitSelfExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7092;
+  fra.me.line = 9021;
   fra.me.meth = LOCATE_parser___parser_prod___AImplicitSelfExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38758,13 +47545,13 @@ void parser___parser_prod___AImplicitSelfExpr___visit_all(val_t p0, val_t p1){
 }
 static const char LOCATE_parser___parser_prod___ATrueExpr___empty_init[] = "parser_prod::ATrueExpr::empty_init";
 void parser___parser_prod___ATrueExpr___empty_init(val_t p0, int* init_table){
-  int itpos225 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATrueExpr].i;
+  int itpos224 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATrueExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos225]) return;
+  if (init_table[itpos224]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7097;
+  fra.me.line = 9026;
   fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -38772,20 +47559,20 @@ void parser___parser_prod___ATrueExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos225] = 1;
+  init_table[itpos224] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ATrueExpr___init_atrueexpr[] = "parser_prod::ATrueExpr::init_atrueexpr";
 void parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos226 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATrueExpr].i;
+  int itpos225 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATrueExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos226]) return;
+  if (init_table[itpos225]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7099;
+  fra.me.line = 9028;
   fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___init_atrueexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38797,26 +47584,26 @@ void parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7099 */
+  /* parser/parser_prod.nit:9028 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7104 */
+  /* parser/parser_prod.nit:9033 */
   CALL_parser___parser_prod___ATrueExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7105 */
+  /* parser/parser_prod.nit:9034 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7105);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9034);
   }
   ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7106 */
+  /* parser/parser_prod.nit:9035 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7106);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9035);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7107 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9036 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7108 */
+  /* parser/parser_prod.nit:9037 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38831,18 +47618,18 @@ void parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7109 */
+    /* parser/parser_prod.nit:9038 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7109);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9038);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos226] = 1;
+  init_table[itpos225] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATrueExpr___replace_child[] = "parser_prod::ATrueExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ATrueExpr___replace_child[] = "parser_prod::ATrueExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ATrueExpr___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;
@@ -38850,7 +47637,7 @@ void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7113;
+  fra.me.line = 9042;
   fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38862,11 +47649,11 @@ void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7115 */
+  /* parser/parser_prod.nit:9044 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser___parser_prod, 7115);
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser___parser_prod, 9044);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -38876,7 +47663,7 @@ void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7116 */
+    /* parser/parser_prod.nit:9045 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -38891,28 +47678,28 @@ void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7117 */
+      /* parser/parser_prod.nit:9046 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7117);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9046);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7118 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9047 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwtrue, ID_parser___parser_nodes___TKwtrue)) /*cast TKwtrue*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7118);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9047);
       }
-      /* parser/parser_prod.nit:7119 */
+      /* parser/parser_prod.nit:9048 */
       ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7121 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7121);
+      /* parser/parser_prod.nit:9050 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9050);
     }
-    /* parser/parser_prod.nit:7123 */
+    /* parser/parser_prod.nit:9052 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7125 */
+  /* parser/parser_prod.nit:9054 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -38927,7 +47714,7 @@ void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7126 */
+    /* parser/parser_prod.nit:9055 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -38942,32 +47729,98 @@ void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7127 */
+      /* parser/parser_prod.nit:9056 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7127);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9056);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7128 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9057 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7128);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9057);
       }
-      /* parser/parser_prod.nit:7129 */
+      /* parser/parser_prod.nit:9058 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7131 */
+      /* parser/parser_prod.nit:9060 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7133 */
+    /* parser/parser_prod.nit:9062 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATrueExpr___visit_all[] = "parser_prod::ATrueExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ATrueExpr___n_kwtrue__eq[] = "parser_prod::ATrueExpr::(parser_nodes::ATrueExpr::n_kwtrue=)";
+void parser___parser_prod___ATrueExpr___n_kwtrue__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9066;
+  fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___n_kwtrue__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9068 */
+  ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9069 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATrueExpr___n_annotations__eq[] = "parser_prod::ATrueExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ATrueExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9071;
+  fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9073 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9074 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9075 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9075);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATrueExpr___visit_all[] = "parser_prod::ATrueExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ATrueExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -38975,7 +47828,7 @@ void parser___parser_prod___ATrueExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7137;
+  fra.me.line = 9080;
   fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -38986,17 +47839,17 @@ void parser___parser_prod___ATrueExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7137 */
+  /* parser/parser_prod.nit:9080 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7139 */
+  /* parser/parser_prod.nit:9082 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser___parser_prod, 7139);
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_parser___parser_prod, 9082);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7140 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9083 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -39012,27 +47865,27 @@ void parser___parser_prod___ATrueExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7141 */
+    /* parser/parser_prod.nit:9084 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7141);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9084);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFalseExpr___empty_init[] = "parser_prod::AFalseExpr::empty_init";
 void parser___parser_prod___AFalseExpr___empty_init(val_t p0, int* init_table){
-  int itpos227 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFalseExpr].i;
+  int itpos226 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFalseExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos227]) return;
+  if (init_table[itpos226]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7146;
+  fra.me.line = 9089;
   fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -39040,20 +47893,20 @@ void parser___parser_prod___AFalseExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos227] = 1;
+  init_table[itpos226] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFalseExpr___init_afalseexpr[] = "parser_prod::AFalseExpr::init_afalseexpr";
 void parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos228 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFalseExpr].i;
+  int itpos227 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFalseExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos228]) return;
+  if (init_table[itpos227]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7148;
+  fra.me.line = 9091;
   fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___init_afalseexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39065,26 +47918,26 @@ void parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7148 */
+  /* parser/parser_prod.nit:9091 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7153 */
+  /* parser/parser_prod.nit:9096 */
   CALL_parser___parser_prod___AFalseExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7154 */
+  /* parser/parser_prod.nit:9097 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7154);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9097);
   }
   ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7155 */
+  /* parser/parser_prod.nit:9098 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7155);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9098);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7156 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9099 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7157 */
+  /* parser/parser_prod.nit:9100 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39099,18 +47952,18 @@ void parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7158 */
+    /* parser/parser_prod.nit:9101 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7158);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9101);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos228] = 1;
+  init_table[itpos227] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFalseExpr___replace_child[] = "parser_prod::AFalseExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AFalseExpr___replace_child[] = "parser_prod::AFalseExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AFalseExpr___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;
@@ -39118,7 +47971,7 @@ void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7162;
+  fra.me.line = 9105;
   fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39130,11 +47983,11 @@ void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7164 */
+  /* parser/parser_prod.nit:9107 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser___parser_prod, 7164);
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser___parser_prod, 9107);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -39144,7 +47997,7 @@ void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7165 */
+    /* parser/parser_prod.nit:9108 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39159,28 +48012,28 @@ void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7166 */
+      /* parser/parser_prod.nit:9109 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7166);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9109);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7167 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9110 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwfalse, ID_parser___parser_nodes___TKwfalse)) /*cast TKwfalse*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7167);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9110);
       }
-      /* parser/parser_prod.nit:7168 */
+      /* parser/parser_prod.nit:9111 */
       ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7170 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7170);
+      /* parser/parser_prod.nit:9113 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9113);
     }
-    /* parser/parser_prod.nit:7172 */
+    /* parser/parser_prod.nit:9115 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7174 */
+  /* parser/parser_prod.nit:9117 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -39195,7 +48048,7 @@ void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7175 */
+    /* parser/parser_prod.nit:9118 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39210,32 +48063,98 @@ void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7176 */
+      /* parser/parser_prod.nit:9119 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7176);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9119);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7177 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9120 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7177);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9120);
       }
-      /* parser/parser_prod.nit:7178 */
+      /* parser/parser_prod.nit:9121 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7180 */
+      /* parser/parser_prod.nit:9123 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7182 */
+    /* parser/parser_prod.nit:9125 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFalseExpr___visit_all[] = "parser_prod::AFalseExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AFalseExpr___n_kwfalse__eq[] = "parser_prod::AFalseExpr::(parser_nodes::AFalseExpr::n_kwfalse=)";
+void parser___parser_prod___AFalseExpr___n_kwfalse__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9129;
+  fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___n_kwfalse__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9131 */
+  ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9132 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFalseExpr___n_annotations__eq[] = "parser_prod::AFalseExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AFalseExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9134;
+  fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9136 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9137 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9138 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9138);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFalseExpr___visit_all[] = "parser_prod::AFalseExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AFalseExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -39243,7 +48162,7 @@ void parser___parser_prod___AFalseExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7186;
+  fra.me.line = 9143;
   fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39254,17 +48173,17 @@ void parser___parser_prod___AFalseExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7186 */
+  /* parser/parser_prod.nit:9143 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7188 */
+  /* parser/parser_prod.nit:9145 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser___parser_prod, 7188);
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_parser___parser_prod, 9145);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7189 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9146 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -39280,27 +48199,27 @@ void parser___parser_prod___AFalseExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7190 */
+    /* parser/parser_prod.nit:9147 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7190);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9147);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANullExpr___empty_init[] = "parser_prod::ANullExpr::empty_init";
 void parser___parser_prod___ANullExpr___empty_init(val_t p0, int* init_table){
-  int itpos229 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANullExpr].i;
+  int itpos228 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANullExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos229]) return;
+  if (init_table[itpos228]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7195;
+  fra.me.line = 9152;
   fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -39308,20 +48227,20 @@ void parser___parser_prod___ANullExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos229] = 1;
+  init_table[itpos228] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ANullExpr___init_anullexpr[] = "parser_prod::ANullExpr::init_anullexpr";
 void parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos230 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANullExpr].i;
+  int itpos229 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANullExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos230]) return;
+  if (init_table[itpos229]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7197;
+  fra.me.line = 9154;
   fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___init_anullexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39333,26 +48252,26 @@ void parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7197 */
+  /* parser/parser_prod.nit:9154 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7202 */
+  /* parser/parser_prod.nit:9159 */
   CALL_parser___parser_prod___ANullExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7203 */
+  /* parser/parser_prod.nit:9160 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7203);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9160);
   }
   ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7204 */
+  /* parser/parser_prod.nit:9161 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7204);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9161);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7205 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9162 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7206 */
+  /* parser/parser_prod.nit:9163 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39367,18 +48286,18 @@ void parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7207 */
+    /* parser/parser_prod.nit:9164 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7207);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9164);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos230] = 1;
+  init_table[itpos229] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANullExpr___replace_child[] = "parser_prod::ANullExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ANullExpr___replace_child[] = "parser_prod::ANullExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ANullExpr___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;
@@ -39386,7 +48305,7 @@ void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7211;
+  fra.me.line = 9168;
   fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39398,11 +48317,11 @@ void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7213 */
+  /* parser/parser_prod.nit:9170 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 7213);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 9170);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -39412,7 +48331,7 @@ void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7214 */
+    /* parser/parser_prod.nit:9171 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39427,28 +48346,28 @@ void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7215 */
+      /* parser/parser_prod.nit:9172 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7215);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9172);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7216 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9173 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast TKwnull*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7216);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9173);
       }
-      /* parser/parser_prod.nit:7217 */
+      /* parser/parser_prod.nit:9174 */
       ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7219 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7219);
+      /* parser/parser_prod.nit:9176 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9176);
     }
-    /* parser/parser_prod.nit:7221 */
+    /* parser/parser_prod.nit:9178 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7223 */
+  /* parser/parser_prod.nit:9180 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -39463,7 +48382,7 @@ void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7224 */
+    /* parser/parser_prod.nit:9181 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39478,32 +48397,98 @@ void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7225 */
+      /* parser/parser_prod.nit:9182 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7225);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9182);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7226 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9183 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7226);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9183);
       }
-      /* parser/parser_prod.nit:7227 */
+      /* parser/parser_prod.nit:9184 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7229 */
+      /* parser/parser_prod.nit:9186 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7231 */
+    /* parser/parser_prod.nit:9188 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ANullExpr___visit_all[] = "parser_prod::ANullExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ANullExpr___n_kwnull__eq[] = "parser_prod::ANullExpr::(parser_nodes::ANullExpr::n_kwnull=)";
+void parser___parser_prod___ANullExpr___n_kwnull__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9192;
+  fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___n_kwnull__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9194 */
+  ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9195 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANullExpr___n_annotations__eq[] = "parser_prod::ANullExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ANullExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9197;
+  fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9199 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9200 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9201 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9201);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ANullExpr___visit_all[] = "parser_prod::ANullExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ANullExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -39511,7 +48496,7 @@ void parser___parser_prod___ANullExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7235;
+  fra.me.line = 9206;
   fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39522,17 +48507,17 @@ void parser___parser_prod___ANullExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7235 */
+  /* parser/parser_prod.nit:9206 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7237 */
+  /* parser/parser_prod.nit:9208 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 7237);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 9208);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7238 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9209 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -39548,27 +48533,27 @@ void parser___parser_prod___ANullExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7239 */
+    /* parser/parser_prod.nit:9210 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7239);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9210);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIntExpr___empty_init[] = "parser_prod::AIntExpr::empty_init";
 void parser___parser_prod___AIntExpr___empty_init(val_t p0, int* init_table){
-  int itpos231 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntExpr].i;
+  int itpos230 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos231]) return;
+  if (init_table[itpos230]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7244;
+  fra.me.line = 9215;
   fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -39576,20 +48561,20 @@ void parser___parser_prod___AIntExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos231] = 1;
+  init_table[itpos230] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIntExpr___init_aintexpr[] = "parser_prod::AIntExpr::init_aintexpr";
 void parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos232 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntExpr].i;
+  int itpos231 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos232]) return;
+  if (init_table[itpos231]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7246;
+  fra.me.line = 9217;
   fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___init_aintexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39601,26 +48586,26 @@ void parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7246 */
+  /* parser/parser_prod.nit:9217 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7251 */
+  /* parser/parser_prod.nit:9222 */
   CALL_parser___parser_prod___AIntExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7252 */
+  /* parser/parser_prod.nit:9223 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7252);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9223);
   }
   ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7253 */
+  /* parser/parser_prod.nit:9224 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7253);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9224);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7254 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9225 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7255 */
+  /* parser/parser_prod.nit:9226 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39635,18 +48620,18 @@ void parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7256 */
+    /* parser/parser_prod.nit:9227 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7256);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9227);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos232] = 1;
+  init_table[itpos231] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIntExpr___replace_child[] = "parser_prod::AIntExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIntExpr___replace_child[] = "parser_prod::AIntExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIntExpr___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;
@@ -39654,7 +48639,7 @@ void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7260;
+  fra.me.line = 9231;
   fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39666,11 +48651,11 @@ void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7262 */
+  /* parser/parser_prod.nit:9233 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser___parser_prod, 7262);
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser___parser_prod, 9233);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -39680,7 +48665,7 @@ void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7263 */
+    /* parser/parser_prod.nit:9234 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39695,28 +48680,28 @@ void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7264 */
+      /* parser/parser_prod.nit:9235 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7264);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9235);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7265 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9236 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TNumber, ID_parser___parser_nodes___TNumber)) /*cast TNumber*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7265);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9236);
       }
-      /* parser/parser_prod.nit:7266 */
+      /* parser/parser_prod.nit:9237 */
       ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7268 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7268);
+      /* parser/parser_prod.nit:9239 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9239);
     }
-    /* parser/parser_prod.nit:7270 */
+    /* parser/parser_prod.nit:9241 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7272 */
+  /* parser/parser_prod.nit:9243 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -39731,7 +48716,7 @@ void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7273 */
+    /* parser/parser_prod.nit:9244 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39746,32 +48731,98 @@ void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7274 */
+      /* parser/parser_prod.nit:9245 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7274);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9245);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7275 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9246 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7275);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9246);
       }
-      /* parser/parser_prod.nit:7276 */
+      /* parser/parser_prod.nit:9247 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7278 */
+      /* parser/parser_prod.nit:9249 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7280 */
+    /* parser/parser_prod.nit:9251 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIntExpr___visit_all[] = "parser_prod::AIntExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIntExpr___n_number__eq[] = "parser_prod::AIntExpr::(parser_nodes::AIntExpr::n_number=)";
+void parser___parser_prod___AIntExpr___n_number__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9255;
+  fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___n_number__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9257 */
+  ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9258 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIntExpr___n_annotations__eq[] = "parser_prod::AIntExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AIntExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9260;
+  fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9262 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9263 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9264 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9264);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIntExpr___visit_all[] = "parser_prod::AIntExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIntExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -39779,7 +48830,7 @@ void parser___parser_prod___AIntExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7284;
+  fra.me.line = 9269;
   fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39790,17 +48841,17 @@ void parser___parser_prod___AIntExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7284 */
+  /* parser/parser_prod.nit:9269 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7286 */
+  /* parser/parser_prod.nit:9271 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser___parser_prod, 7286);
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_parser___parser_prod, 9271);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7287 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9272 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -39816,27 +48867,27 @@ void parser___parser_prod___AIntExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7288 */
+    /* parser/parser_prod.nit:9273 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7288);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9273);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFloatExpr___empty_init[] = "parser_prod::AFloatExpr::empty_init";
 void parser___parser_prod___AFloatExpr___empty_init(val_t p0, int* init_table){
-  int itpos233 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFloatExpr].i;
+  int itpos232 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFloatExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos233]) return;
+  if (init_table[itpos232]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7293;
+  fra.me.line = 9278;
   fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -39844,20 +48895,20 @@ void parser___parser_prod___AFloatExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos233] = 1;
+  init_table[itpos232] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFloatExpr___init_afloatexpr[] = "parser_prod::AFloatExpr::init_afloatexpr";
 void parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos234 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFloatExpr].i;
+  int itpos233 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFloatExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos234]) return;
+  if (init_table[itpos233]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7295;
+  fra.me.line = 9280;
   fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___init_afloatexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39869,26 +48920,26 @@ void parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7295 */
+  /* parser/parser_prod.nit:9280 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7300 */
+  /* parser/parser_prod.nit:9285 */
   CALL_parser___parser_prod___AFloatExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7301 */
+  /* parser/parser_prod.nit:9286 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7301);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9286);
   }
   ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7302 */
+  /* parser/parser_prod.nit:9287 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7302);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9287);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7303 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9288 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7304 */
+  /* parser/parser_prod.nit:9289 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39903,18 +48954,18 @@ void parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7305 */
+    /* parser/parser_prod.nit:9290 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7305);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9290);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos234] = 1;
+  init_table[itpos233] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFloatExpr___replace_child[] = "parser_prod::AFloatExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AFloatExpr___replace_child[] = "parser_prod::AFloatExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AFloatExpr___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;
@@ -39922,7 +48973,7 @@ void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7309;
+  fra.me.line = 9294;
   fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -39934,11 +48985,11 @@ void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7311 */
+  /* parser/parser_prod.nit:9296 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser___parser_prod, 7311);
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser___parser_prod, 9296);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -39948,7 +48999,7 @@ void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7312 */
+    /* parser/parser_prod.nit:9297 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -39963,28 +49014,28 @@ void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7313 */
+      /* parser/parser_prod.nit:9298 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7313);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9298);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7314 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9299 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TFloat, ID_parser___parser_nodes___TFloat)) /*cast TFloat*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7314);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9299);
       }
-      /* parser/parser_prod.nit:7315 */
+      /* parser/parser_prod.nit:9300 */
       ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7317 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7317);
+      /* parser/parser_prod.nit:9302 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9302);
     }
-    /* parser/parser_prod.nit:7319 */
+    /* parser/parser_prod.nit:9304 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7321 */
+  /* parser/parser_prod.nit:9306 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -39999,7 +49050,7 @@ void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7322 */
+    /* parser/parser_prod.nit:9307 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40014,32 +49065,98 @@ void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7323 */
+      /* parser/parser_prod.nit:9308 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7323);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9308);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7324 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9309 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7324);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9309);
       }
-      /* parser/parser_prod.nit:7325 */
+      /* parser/parser_prod.nit:9310 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7327 */
+      /* parser/parser_prod.nit:9312 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7329 */
+    /* parser/parser_prod.nit:9314 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFloatExpr___visit_all[] = "parser_prod::AFloatExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AFloatExpr___n_float__eq[] = "parser_prod::AFloatExpr::(parser_nodes::AFloatExpr::n_float=)";
+void parser___parser_prod___AFloatExpr___n_float__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9318;
+  fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___n_float__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9320 */
+  ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9321 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFloatExpr___n_annotations__eq[] = "parser_prod::AFloatExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AFloatExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9323;
+  fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9325 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9326 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9327 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9327);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFloatExpr___visit_all[] = "parser_prod::AFloatExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AFloatExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -40047,7 +49164,7 @@ void parser___parser_prod___AFloatExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7333;
+  fra.me.line = 9332;
   fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40058,17 +49175,17 @@ void parser___parser_prod___AFloatExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7333 */
+  /* parser/parser_prod.nit:9332 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7335 */
+  /* parser/parser_prod.nit:9334 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser___parser_prod, 7335);
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_parser___parser_prod, 9334);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7336 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9335 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -40084,27 +49201,27 @@ void parser___parser_prod___AFloatExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7337 */
+    /* parser/parser_prod.nit:9336 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7337);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9336);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACharExpr___empty_init[] = "parser_prod::ACharExpr::empty_init";
 void parser___parser_prod___ACharExpr___empty_init(val_t p0, int* init_table){
-  int itpos235 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACharExpr].i;
+  int itpos234 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACharExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos235]) return;
+  if (init_table[itpos234]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7342;
+  fra.me.line = 9341;
   fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -40112,20 +49229,20 @@ void parser___parser_prod___ACharExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos235] = 1;
+  init_table[itpos234] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACharExpr___init_acharexpr[] = "parser_prod::ACharExpr::init_acharexpr";
 void parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos236 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACharExpr].i;
+  int itpos235 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACharExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos236]) return;
+  if (init_table[itpos235]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7344;
+  fra.me.line = 9343;
   fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___init_acharexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40137,26 +49254,26 @@ void parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7344 */
+  /* parser/parser_prod.nit:9343 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7349 */
+  /* parser/parser_prod.nit:9348 */
   CALL_parser___parser_prod___ACharExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7350 */
+  /* parser/parser_prod.nit:9349 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7350);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9349);
   }
   ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7351 */
+  /* parser/parser_prod.nit:9350 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7351);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9350);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7352 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9351 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7353 */
+  /* parser/parser_prod.nit:9352 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -40171,18 +49288,18 @@ void parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7354 */
+    /* parser/parser_prod.nit:9353 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7354);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9353);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos236] = 1;
+  init_table[itpos235] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACharExpr___replace_child[] = "parser_prod::ACharExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ACharExpr___replace_child[] = "parser_prod::ACharExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ACharExpr___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;
@@ -40190,7 +49307,7 @@ void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7358;
+  fra.me.line = 9357;
   fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40202,11 +49319,11 @@ void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7360 */
+  /* parser/parser_prod.nit:9359 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser___parser_prod, 7360);
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser___parser_prod, 9359);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -40216,7 +49333,7 @@ void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7361 */
+    /* parser/parser_prod.nit:9360 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40231,28 +49348,28 @@ void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7362 */
+      /* parser/parser_prod.nit:9361 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7362);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9361);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7363 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9362 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TChar, ID_parser___parser_nodes___TChar)) /*cast TChar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7363);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9362);
       }
-      /* parser/parser_prod.nit:7364 */
+      /* parser/parser_prod.nit:9363 */
       ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7366 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7366);
+      /* parser/parser_prod.nit:9365 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9365);
     }
-    /* parser/parser_prod.nit:7368 */
+    /* parser/parser_prod.nit:9367 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7370 */
+  /* parser/parser_prod.nit:9369 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -40267,7 +49384,7 @@ void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7371 */
+    /* parser/parser_prod.nit:9370 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40282,32 +49399,98 @@ void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7372 */
+      /* parser/parser_prod.nit:9371 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7372);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9371);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7373 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9372 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7373);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9372);
       }
-      /* parser/parser_prod.nit:7374 */
+      /* parser/parser_prod.nit:9373 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7376 */
+      /* parser/parser_prod.nit:9375 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7378 */
+    /* parser/parser_prod.nit:9377 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACharExpr___visit_all[] = "parser_prod::ACharExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ACharExpr___n_char__eq[] = "parser_prod::ACharExpr::(parser_nodes::ACharExpr::n_char=)";
+void parser___parser_prod___ACharExpr___n_char__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9381;
+  fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___n_char__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9383 */
+  ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9384 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACharExpr___n_annotations__eq[] = "parser_prod::ACharExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ACharExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9386;
+  fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9388 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9389 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9390 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9390);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACharExpr___visit_all[] = "parser_prod::ACharExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ACharExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -40315,7 +49498,7 @@ void parser___parser_prod___ACharExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7382;
+  fra.me.line = 9395;
   fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40326,17 +49509,17 @@ void parser___parser_prod___ACharExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7382 */
+  /* parser/parser_prod.nit:9395 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7384 */
+  /* parser/parser_prod.nit:9397 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser___parser_prod, 7384);
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_parser___parser_prod, 9397);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7385 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9398 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -40352,27 +49535,27 @@ void parser___parser_prod___ACharExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7386 */
+    /* parser/parser_prod.nit:9399 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7386);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9399);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStringExpr___empty_init[] = "parser_prod::AStringExpr::empty_init";
 void parser___parser_prod___AStringExpr___empty_init(val_t p0, int* init_table){
-  int itpos237 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStringExpr].i;
+  int itpos236 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStringExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos237]) return;
+  if (init_table[itpos236]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7391;
+  fra.me.line = 9404;
   fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -40380,20 +49563,20 @@ void parser___parser_prod___AStringExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos237] = 1;
+  init_table[itpos236] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStringExpr___init_astringexpr[] = "parser_prod::AStringExpr::init_astringexpr";
 void parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos238 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStringExpr].i;
+  int itpos237 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStringExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos238]) return;
+  if (init_table[itpos237]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7393;
+  fra.me.line = 9406;
   fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___init_astringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40405,26 +49588,26 @@ void parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7393 */
+  /* parser/parser_prod.nit:9406 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7398 */
+  /* parser/parser_prod.nit:9411 */
   CALL_parser___parser_prod___AStringExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:7399 */
+  /* parser/parser_prod.nit:9412 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7399);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9412);
   }
   ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7400 */
+  /* parser/parser_prod.nit:9413 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7400);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9413);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7401 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9414 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7402 */
+  /* parser/parser_prod.nit:9415 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -40439,18 +49622,18 @@ void parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7403 */
+    /* parser/parser_prod.nit:9416 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7403);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9416);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos238] = 1;
+  init_table[itpos237] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStringExpr___replace_child[] = "parser_prod::AStringExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStringExpr___replace_child[] = "parser_prod::AStringExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStringExpr___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;
@@ -40458,7 +49641,7 @@ void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7407;
+  fra.me.line = 9420;
   fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40470,11 +49653,11 @@ void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7409 */
+  /* parser/parser_prod.nit:9422 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7409);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9422);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -40484,7 +49667,7 @@ void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7410 */
+    /* parser/parser_prod.nit:9423 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40499,28 +49682,28 @@ void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7411 */
+      /* parser/parser_prod.nit:9424 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7411);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9424);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7412 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9425 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast TString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7412);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9425);
       }
-      /* parser/parser_prod.nit:7413 */
+      /* parser/parser_prod.nit:9426 */
       ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7415 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7415);
+      /* parser/parser_prod.nit:9428 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9428);
     }
-    /* parser/parser_prod.nit:7417 */
+    /* parser/parser_prod.nit:9430 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7419 */
+  /* parser/parser_prod.nit:9432 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -40535,7 +49718,7 @@ void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7420 */
+    /* parser/parser_prod.nit:9433 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40550,32 +49733,98 @@ void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7421 */
+      /* parser/parser_prod.nit:9434 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7421);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9434);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7422 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9435 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7422);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9435);
       }
-      /* parser/parser_prod.nit:7423 */
+      /* parser/parser_prod.nit:9436 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7425 */
+      /* parser/parser_prod.nit:9438 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7427 */
+    /* parser/parser_prod.nit:9440 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStringExpr___visit_all[] = "parser_prod::AStringExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStringExpr___n_string__eq[] = "parser_prod::AStringExpr::(parser_nodes::AStringFormExpr::n_string=)";
+void parser___parser_prod___AStringExpr___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9444;
+  fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9446 */
+  ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9447 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStringExpr___n_annotations__eq[] = "parser_prod::AStringExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AStringExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9449;
+  fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9451 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9452 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9453 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9453);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStringExpr___visit_all[] = "parser_prod::AStringExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStringExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -40583,7 +49832,7 @@ void parser___parser_prod___AStringExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7431;
+  fra.me.line = 9458;
   fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40594,17 +49843,17 @@ void parser___parser_prod___AStringExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7431 */
+  /* parser/parser_prod.nit:9458 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7433 */
+  /* parser/parser_prod.nit:9460 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7433);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9460);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7434 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9461 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -40620,27 +49869,27 @@ void parser___parser_prod___AStringExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7435 */
+    /* parser/parser_prod.nit:9462 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7435);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9462);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStartStringExpr___empty_init[] = "parser_prod::AStartStringExpr::empty_init";
 void parser___parser_prod___AStartStringExpr___empty_init(val_t p0, int* init_table){
-  int itpos239 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStartStringExpr].i;
+  int itpos238 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStartStringExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos239]) return;
+  if (init_table[itpos238]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7440;
+  fra.me.line = 9467;
   fra.me.meth = LOCATE_parser___parser_prod___AStartStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -40648,19 +49897,19 @@ void parser___parser_prod___AStartStringExpr___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos239] = 1;
+  init_table[itpos238] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AStartStringExpr___init_astartstringexpr[] = "parser_prod::AStartStringExpr::init_astartstringexpr";
 void parser___parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0, val_t p1, int* init_table){
-  int itpos240 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStartStringExpr].i;
+  int itpos239 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStartStringExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos240]) return;
+  if (init_table[itpos239]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7442;
+  fra.me.line = 9469;
   fra.me.meth = LOCATE_parser___parser_prod___AStartStringExpr___init_astartstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -40670,28 +49919,28 @@ void parser___parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0, v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7442 */
+  /* parser/parser_prod.nit:9469 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7446 */
+  /* parser/parser_prod.nit:9473 */
   CALL_parser___parser_prod___AStartStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:7447 */
+  /* parser/parser_prod.nit:9474 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7447);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9474);
   }
   ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7448 */
+  /* parser/parser_prod.nit:9475 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7448);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9475);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos240] = 1;
+  init_table[itpos239] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStartStringExpr___replace_child[] = "parser_prod::AStartStringExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AStartStringExpr___replace_child[] = "parser_prod::AStartStringExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AStartStringExpr___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;
@@ -40699,7 +49948,7 @@ void parser___parser_prod___AStartStringExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7451;
+  fra.me.line = 9478;
   fra.me.meth = LOCATE_parser___parser_prod___AStartStringExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40711,11 +49960,11 @@ void parser___parser_prod___AStartStringExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7453 */
+  /* parser/parser_prod.nit:9480 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7453);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9480);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -40725,7 +49974,7 @@ void parser___parser_prod___AStartStringExpr___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7454 */
+    /* parser/parser_prod.nit:9481 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40740,39 +49989,61 @@ void parser___parser_prod___AStartStringExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7455 */
+      /* parser/parser_prod.nit:9482 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7455);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9482);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7456 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9483 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TStartString, ID_parser___parser_nodes___TStartString)) /*cast TStartString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7456);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9483);
       }
-      /* parser/parser_prod.nit:7457 */
+      /* parser/parser_prod.nit:9484 */
       ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7459 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7459);
+      /* parser/parser_prod.nit:9486 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9486);
     }
-    /* parser/parser_prod.nit:7461 */
+    /* parser/parser_prod.nit:9488 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AStartStringExpr___visit_all[] = "parser_prod::AStartStringExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AStartStringExpr___n_string__eq[] = "parser_prod::AStartStringExpr::(parser_nodes::AStringFormExpr::n_string=)";
+void parser___parser_prod___AStartStringExpr___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9492;
+  fra.me.meth = LOCATE_parser___parser_prod___AStartStringExpr___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9494 */
+  ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9495 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AStartStringExpr___visit_all[] = "parser_prod::AStartStringExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AStartStringExpr___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___parser_prod;
-  fra.me.line = 7465;
+  fra.me.line = 9499;
   fra.me.meth = LOCATE_parser___parser_prod___AStartStringExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -40781,26 +50052,26 @@ void parser___parser_prod___AStartStringExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7467 */
+  /* parser/parser_prod.nit:9501 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7467);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9501);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMidStringExpr___empty_init[] = "parser_prod::AMidStringExpr::empty_init";
 void parser___parser_prod___AMidStringExpr___empty_init(val_t p0, int* init_table){
-  int itpos241 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMidStringExpr].i;
+  int itpos240 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMidStringExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos241]) return;
+  if (init_table[itpos240]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7471;
+  fra.me.line = 9505;
   fra.me.meth = LOCATE_parser___parser_prod___AMidStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -40808,19 +50079,19 @@ void parser___parser_prod___AMidStringExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos241] = 1;
+  init_table[itpos240] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMidStringExpr___init_amidstringexpr[] = "parser_prod::AMidStringExpr::init_amidstringexpr";
 void parser___parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0, val_t p1, int* init_table){
-  int itpos242 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMidStringExpr].i;
+  int itpos241 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMidStringExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos242]) return;
+  if (init_table[itpos241]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7473;
+  fra.me.line = 9507;
   fra.me.meth = LOCATE_parser___parser_prod___AMidStringExpr___init_amidstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -40830,28 +50101,28 @@ void parser___parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7473 */
+  /* parser/parser_prod.nit:9507 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7477 */
+  /* parser/parser_prod.nit:9511 */
   CALL_parser___parser_prod___AMidStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:7478 */
+  /* parser/parser_prod.nit:9512 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7478);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9512);
   }
   ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7479 */
+  /* parser/parser_prod.nit:9513 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7479);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9513);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos242] = 1;
+  init_table[itpos241] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMidStringExpr___replace_child[] = "parser_prod::AMidStringExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMidStringExpr___replace_child[] = "parser_prod::AMidStringExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMidStringExpr___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;
@@ -40859,7 +50130,7 @@ void parser___parser_prod___AMidStringExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7482;
+  fra.me.line = 9516;
   fra.me.meth = LOCATE_parser___parser_prod___AMidStringExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -40871,11 +50142,11 @@ void parser___parser_prod___AMidStringExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7484 */
+  /* parser/parser_prod.nit:9518 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7484);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9518);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -40885,7 +50156,7 @@ void parser___parser_prod___AMidStringExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7485 */
+    /* parser/parser_prod.nit:9519 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -40900,39 +50171,61 @@ void parser___parser_prod___AMidStringExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7486 */
+      /* parser/parser_prod.nit:9520 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7486);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9520);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7487 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9521 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TMidString, ID_parser___parser_nodes___TMidString)) /*cast TMidString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7487);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9521);
       }
-      /* parser/parser_prod.nit:7488 */
+      /* parser/parser_prod.nit:9522 */
       ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7490 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7490);
+      /* parser/parser_prod.nit:9524 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9524);
     }
-    /* parser/parser_prod.nit:7492 */
+    /* parser/parser_prod.nit:9526 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMidStringExpr___visit_all[] = "parser_prod::AMidStringExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMidStringExpr___n_string__eq[] = "parser_prod::AMidStringExpr::(parser_nodes::AStringFormExpr::n_string=)";
+void parser___parser_prod___AMidStringExpr___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9530;
+  fra.me.meth = LOCATE_parser___parser_prod___AMidStringExpr___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9532 */
+  ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9533 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMidStringExpr___visit_all[] = "parser_prod::AMidStringExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMidStringExpr___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___parser_prod;
-  fra.me.line = 7496;
+  fra.me.line = 9537;
   fra.me.meth = LOCATE_parser___parser_prod___AMidStringExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -40941,26 +50234,26 @@ void parser___parser_prod___AMidStringExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7498 */
+  /* parser/parser_prod.nit:9539 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7498);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9539);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEndStringExpr___empty_init[] = "parser_prod::AEndStringExpr::empty_init";
 void parser___parser_prod___AEndStringExpr___empty_init(val_t p0, int* init_table){
-  int itpos243 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEndStringExpr].i;
+  int itpos242 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEndStringExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos243]) return;
+  if (init_table[itpos242]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7502;
+  fra.me.line = 9543;
   fra.me.meth = LOCATE_parser___parser_prod___AEndStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -40968,19 +50261,19 @@ void parser___parser_prod___AEndStringExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos243] = 1;
+  init_table[itpos242] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AEndStringExpr___init_aendstringexpr[] = "parser_prod::AEndStringExpr::init_aendstringexpr";
 void parser___parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0, val_t p1, int* init_table){
-  int itpos244 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEndStringExpr].i;
+  int itpos243 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AEndStringExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos244]) return;
+  if (init_table[itpos243]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7504;
+  fra.me.line = 9545;
   fra.me.meth = LOCATE_parser___parser_prod___AEndStringExpr___init_aendstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -40990,28 +50283,28 @@ void parser___parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7504 */
+  /* parser/parser_prod.nit:9545 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7508 */
+  /* parser/parser_prod.nit:9549 */
   CALL_parser___parser_prod___AEndStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:7509 */
+  /* parser/parser_prod.nit:9550 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7509);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9550);
   }
   ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7510 */
+  /* parser/parser_prod.nit:9551 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7510);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9551);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos244] = 1;
+  init_table[itpos243] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEndStringExpr___replace_child[] = "parser_prod::AEndStringExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AEndStringExpr___replace_child[] = "parser_prod::AEndStringExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AEndStringExpr___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;
@@ -41019,7 +50312,7 @@ void parser___parser_prod___AEndStringExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7513;
+  fra.me.line = 9554;
   fra.me.meth = LOCATE_parser___parser_prod___AEndStringExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41031,11 +50324,11 @@ void parser___parser_prod___AEndStringExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7515 */
+  /* parser/parser_prod.nit:9556 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7515);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9556);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -41045,7 +50338,7 @@ void parser___parser_prod___AEndStringExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7516 */
+    /* parser/parser_prod.nit:9557 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -41060,39 +50353,61 @@ void parser___parser_prod___AEndStringExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7517 */
+      /* parser/parser_prod.nit:9558 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7517);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9558);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7518 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9559 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TEndString, ID_parser___parser_nodes___TEndString)) /*cast TEndString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7518);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9559);
       }
-      /* parser/parser_prod.nit:7519 */
+      /* parser/parser_prod.nit:9560 */
       ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7521 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7521);
+      /* parser/parser_prod.nit:9562 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9562);
     }
-    /* parser/parser_prod.nit:7523 */
+    /* parser/parser_prod.nit:9564 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AEndStringExpr___visit_all[] = "parser_prod::AEndStringExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AEndStringExpr___n_string__eq[] = "parser_prod::AEndStringExpr::(parser_nodes::AStringFormExpr::n_string=)";
+void parser___parser_prod___AEndStringExpr___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9568;
+  fra.me.meth = LOCATE_parser___parser_prod___AEndStringExpr___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9570 */
+  ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9571 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AEndStringExpr___visit_all[] = "parser_prod::AEndStringExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AEndStringExpr___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___parser_prod;
-  fra.me.line = 7527;
+  fra.me.line = 9575;
   fra.me.meth = LOCATE_parser___parser_prod___AEndStringExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -41101,26 +50416,26 @@ void parser___parser_prod___AEndStringExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7529 */
+  /* parser/parser_prod.nit:9577 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 7529);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 9577);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperstringExpr___empty_init[] = "parser_prod::ASuperstringExpr::empty_init";
 void parser___parser_prod___ASuperstringExpr___empty_init(val_t p0, int* init_table){
-  int itpos245 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperstringExpr].i;
+  int itpos244 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperstringExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos245]) return;
+  if (init_table[itpos244]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7533;
+  fra.me.line = 9581;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperstringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -41128,20 +50443,20 @@ void parser___parser_prod___ASuperstringExpr___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos245] = 1;
+  init_table[itpos244] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr[] = "parser_prod::ASuperstringExpr::init_asuperstringexpr";
 void parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos246 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperstringExpr].i;
+  int itpos245 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperstringExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos246]) return;
+  if (init_table[itpos245]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7535;
+  fra.me.line = 9583;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -41152,12 +50467,12 @@ void parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7540 */
+  /* parser/parser_prod.nit:9588 */
   CALL_parser___parser_prod___ASuperstringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_1));
-  /* parser/parser_prod.nit:7546 */
+  /* parser/parser_prod.nit:9594 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7547 */
+  /* parser/parser_prod.nit:9595 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -41172,15 +50487,15 @@ void parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7548 */
+    /* parser/parser_prod.nit:9596 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7548);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9596);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos246] = 1;
+  init_table[itpos245] = 1;
   return;
 }
   void OC_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -41188,7 +50503,7 @@ void parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, v
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:7541 */
+    /* parser/parser_prod.nit:9589 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -41202,26 +50517,26 @@ void parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, v
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:7542 */
+    /* parser/parser_prod.nit:9590 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7542);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9590);
     }
-    /* parser/parser_prod.nit:7543 */
+    /* parser/parser_prod.nit:9591 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7543);
+      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 9591);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:7544 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:9592 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ASuperstringExpr___replace_child[] = "parser_prod::ASuperstringExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASuperstringExpr___replace_child[] = "parser_prod::ASuperstringExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASuperstringExpr___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;
@@ -41232,7 +50547,7 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7552;
+  fra.me.line = 9600;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperstringExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41244,50 +50559,44 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7554 */
+  /* parser/parser_prod.nit:9602 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7554);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 9602);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:7554 */
+      /* parser/parser_prod.nit:9602 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:7555 */
+      /* parser/parser_prod.nit:9603 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7555);
+        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 9603);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:7556 */
+        /* parser/parser_prod.nit:9604 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -41302,52 +50611,52 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:7557 */
+          /* parser/parser_prod.nit:9605 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7557);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9605);
           }
-          /* parser/parser_prod.nit:7558 */
+          /* parser/parser_prod.nit:9606 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7558);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 9606);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:7559 */
+          /* parser/parser_prod.nit:9607 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7559);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9607);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:7561 */
+          /* parser/parser_prod.nit:9609 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7561);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 9609);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:7563 */
+        /* parser/parser_prod.nit:9611 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:7566 */
+  /* parser/parser_prod.nit:9614 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -41362,7 +50671,7 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7567 */
+    /* parser/parser_prod.nit:9615 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -41377,32 +50686,76 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7568 */
+      /* parser/parser_prod.nit:9616 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7568);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9616);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7569 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9617 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7569);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9617);
       }
-      /* parser/parser_prod.nit:7570 */
+      /* parser/parser_prod.nit:9618 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7572 */
+      /* parser/parser_prod.nit:9620 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7574 */
+    /* parser/parser_prod.nit:9622 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperstringExpr___visit_all[] = "parser_prod::ASuperstringExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASuperstringExpr___n_annotations__eq[] = "parser_prod::ASuperstringExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___ASuperstringExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9626;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperstringExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9628 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9629 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9630 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9630);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperstringExpr___visit_all[] = "parser_prod::ASuperstringExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -41410,7 +50763,7 @@ void parser___parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7578;
+  fra.me.line = 9635;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperstringExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41421,17 +50774,17 @@ void parser___parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7578 */
+  /* parser/parser_prod.nit:9635 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7580 */
+  /* parser/parser_prod.nit:9637 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7580);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 9637);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ASuperstringExpr___visit_all_1));
-  /* parser/parser_prod.nit:7583 */
+  /* parser/parser_prod.nit:9640 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -41447,14 +50800,14 @@ void parser___parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7584 */
+    /* parser/parser_prod.nit:9641 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7584);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9641);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -41475,20 +50828,20 @@ void parser___parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:7581 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:9638 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AParExpr___empty_init[] = "parser_prod::AParExpr::empty_init";
 void parser___parser_prod___AParExpr___empty_init(val_t p0, int* init_table){
-  int itpos247 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExpr].i;
+  int itpos246 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos247]) return;
+  if (init_table[itpos246]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7589;
+  fra.me.line = 9646;
   fra.me.meth = LOCATE_parser___parser_prod___AParExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -41496,20 +50849,20 @@ void parser___parser_prod___AParExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos247] = 1;
+  init_table[itpos246] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AParExpr___init_aparexpr[] = "parser_prod::AParExpr::init_aparexpr";
 void parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos248 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExpr].i;
+  int itpos247 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos248]) return;
+  if (init_table[itpos247]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7591;
+  fra.me.line = 9648;
   fra.me.meth = LOCATE_parser___parser_prod___AParExpr___init_aparexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -41525,52 +50878,52 @@ void parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:7591 */
+  /* parser/parser_prod.nit:9648 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7598 */
+  /* parser/parser_prod.nit:9655 */
   CALL_parser___parser_prod___AParExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:7599 */
+  /* parser/parser_prod.nit:9656 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7599);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9656);
   }
   ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7600 */
+  /* parser/parser_prod.nit:9657 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7600);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9657);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:7601 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:9658 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7601);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9658);
   }
   ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7602 */
+  /* parser/parser_prod.nit:9659 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7602);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9659);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:7603 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:9660 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7603);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9660);
   }
   ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:7604 */
+  /* parser/parser_prod.nit:9661 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7604);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9661);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:7605 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:9662 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:7606 */
+  /* parser/parser_prod.nit:9663 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -41585,18 +50938,18 @@ void parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7607 */
+    /* parser/parser_prod.nit:9664 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7607);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9664);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos248] = 1;
+  init_table[itpos247] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AParExpr___replace_child[] = "parser_prod::AParExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AParExpr___replace_child[] = "parser_prod::AParExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AParExpr___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;
@@ -41604,7 +50957,7 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7611;
+  fra.me.line = 9668;
   fra.me.meth = LOCATE_parser___parser_prod___AParExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41616,11 +50969,11 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7613 */
+  /* parser/parser_prod.nit:9670 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 7613);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 9670);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -41630,7 +50983,7 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7614 */
+    /* parser/parser_prod.nit:9671 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -41645,32 +50998,32 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7615 */
+      /* parser/parser_prod.nit:9672 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7615);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9672);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7616 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9673 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7616);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9673);
       }
-      /* parser/parser_prod.nit:7617 */
+      /* parser/parser_prod.nit:9674 */
       ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7619 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7619);
+      /* parser/parser_prod.nit:9676 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9676);
     }
-    /* parser/parser_prod.nit:7621 */
+    /* parser/parser_prod.nit:9678 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7623 */
+  /* parser/parser_prod.nit:9680 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7623);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9680);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -41680,7 +51033,7 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7624 */
+    /* parser/parser_prod.nit:9681 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -41695,32 +51048,32 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7625 */
+      /* parser/parser_prod.nit:9682 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7625);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9682);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7626 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9683 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7626);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9683);
       }
-      /* parser/parser_prod.nit:7627 */
+      /* parser/parser_prod.nit:9684 */
       ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7629 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7629);
+      /* parser/parser_prod.nit:9686 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9686);
     }
-    /* parser/parser_prod.nit:7631 */
+    /* parser/parser_prod.nit:9688 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7633 */
+  /* parser/parser_prod.nit:9690 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 7633);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 9690);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -41730,7 +51083,7 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7634 */
+    /* parser/parser_prod.nit:9691 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -41745,28 +51098,28 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7635 */
+      /* parser/parser_prod.nit:9692 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7635);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9692);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7636 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9693 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7636);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9693);
       }
-      /* parser/parser_prod.nit:7637 */
+      /* parser/parser_prod.nit:9694 */
       ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7639 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7639);
+      /* parser/parser_prod.nit:9696 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9696);
     }
-    /* parser/parser_prod.nit:7641 */
+    /* parser/parser_prod.nit:9698 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7643 */
+  /* parser/parser_prod.nit:9700 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -41781,7 +51134,7 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7644 */
+    /* parser/parser_prod.nit:9701 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -41796,32 +51149,142 @@ void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7645 */
+      /* parser/parser_prod.nit:9702 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7645);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9702);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7646 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9703 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7646);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9703);
       }
-      /* parser/parser_prod.nit:7647 */
+      /* parser/parser_prod.nit:9704 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7649 */
+      /* parser/parser_prod.nit:9706 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:7651 */
+    /* parser/parser_prod.nit:9708 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AParExpr___visit_all[] = "parser_prod::AParExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AParExpr___n_opar__eq[] = "parser_prod::AParExpr::(parser_nodes::AParExpr::n_opar=)";
+void parser___parser_prod___AParExpr___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9712;
+  fra.me.meth = LOCATE_parser___parser_prod___AParExpr___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9714 */
+  ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9715 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParExpr___n_expr__eq[] = "parser_prod::AParExpr::(parser_nodes::AProxyExpr::n_expr=)";
+void parser___parser_prod___AParExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9717;
+  fra.me.meth = LOCATE_parser___parser_prod___AParExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9719 */
+  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9720 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParExpr___n_cpar__eq[] = "parser_prod::AParExpr::(parser_nodes::AParExpr::n_cpar=)";
+void parser___parser_prod___AParExpr___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9722;
+  fra.me.meth = LOCATE_parser___parser_prod___AParExpr___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9724 */
+  ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9725 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParExpr___n_annotations__eq[] = "parser_prod::AParExpr::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AParExpr___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9727;
+  fra.me.meth = LOCATE_parser___parser_prod___AParExpr___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9729 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9730 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:9731 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9731);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParExpr___visit_all[] = "parser_prod::AParExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AParExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -41829,7 +51292,7 @@ void parser___parser_prod___AParExpr___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7655;
+  fra.me.line = 9736;
   fra.me.meth = LOCATE_parser___parser_prod___AParExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -41840,33 +51303,33 @@ void parser___parser_prod___AParExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7655 */
+  /* parser/parser_prod.nit:9736 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7657 */
+  /* parser/parser_prod.nit:9738 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 7657);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 9738);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7658 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9739 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7658);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9739);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7659 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9740 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 7659);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 9740);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:7660 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:9741 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -41882,27 +51345,27 @@ void parser___parser_prod___AParExpr___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7661 */
+    /* parser/parser_prod.nit:9742 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7661);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9742);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsCastExpr___empty_init[] = "parser_prod::AAsCastExpr::empty_init";
 void parser___parser_prod___AAsCastExpr___empty_init(val_t p0, int* init_table){
-  int itpos249 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr].i;
+  int itpos248 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos249]) return;
+  if (init_table[itpos248]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7666;
+  fra.me.line = 9747;
   fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -41910,19 +51373,19 @@ void parser___parser_prod___AAsCastExpr___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos249] = 1;
+  init_table[itpos248] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsCastExpr___init_aascastexpr[] = "parser_prod::AAsCastExpr::init_aascastexpr";
 void parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos250 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr].i;
+  int itpos249 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos250]) return;
+  if (init_table[itpos249]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7668;
+  fra.me.line = 9749;
   fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___init_aascastexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -41940,80 +51403,80 @@ void parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, v
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:7668 */
+  /* parser/parser_prod.nit:9749 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7676 */
+  /* parser/parser_prod.nit:9757 */
   CALL_parser___parser_prod___AAsCastExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:7677 */
+  /* parser/parser_prod.nit:9758 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7677);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9758);
   }
   ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7678 */
+  /* parser/parser_prod.nit:9759 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7678);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9759);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:7679 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:9760 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7679);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9760);
   }
   ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7680 */
+  /* parser/parser_prod.nit:9761 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7680);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9761);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* parser/parser_prod.nit:7681 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+  /* parser/parser_prod.nit:9762 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7681);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9762);
   }
   ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[6]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:7682 */
+  /* parser/parser_prod.nit:9763 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7682);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9763);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* parser/parser_prod.nit:7683 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser_prod.nit:9764 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7683);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9764);
   }
   ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:7684 */
+  /* parser/parser_prod.nit:9765 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7684);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9765);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* parser/parser_prod.nit:7685 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser_prod.nit:9766 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7685);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9766);
   }
   ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:7686 */
+  /* parser/parser_prod.nit:9767 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7686);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9767);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos250] = 1;
+  init_table[itpos249] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsCastExpr___replace_child[] = "parser_prod::AAsCastExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAsCastExpr___replace_child[] = "parser_prod::AAsCastExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAsCastExpr___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;
@@ -42021,7 +51484,7 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7689;
+  fra.me.line = 9770;
   fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -42033,11 +51496,11 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7691 */
+  /* parser/parser_prod.nit:9772 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7691);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9772);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42047,7 +51510,7 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7692 */
+    /* parser/parser_prod.nit:9773 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42062,32 +51525,32 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7693 */
+      /* parser/parser_prod.nit:9774 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7693);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9774);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7694 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9775 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7694);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9775);
       }
-      /* parser/parser_prod.nit:7695 */
+      /* parser/parser_prod.nit:9776 */
       ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7697 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7697);
+      /* parser/parser_prod.nit:9778 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9778);
     }
-    /* parser/parser_prod.nit:7699 */
+    /* parser/parser_prod.nit:9780 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7701 */
+  /* parser/parser_prod.nit:9782 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 7701);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 9782);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42097,7 +51560,7 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7702 */
+    /* parser/parser_prod.nit:9783 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42112,32 +51575,32 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7703 */
+      /* parser/parser_prod.nit:9784 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7703);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9784);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7704 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9785 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast TKwas*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7704);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9785);
       }
-      /* parser/parser_prod.nit:7705 */
+      /* parser/parser_prod.nit:9786 */
       ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7707 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7707);
+      /* parser/parser_prod.nit:9788 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9788);
     }
-    /* parser/parser_prod.nit:7709 */
+    /* parser/parser_prod.nit:9790 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7711 */
+  /* parser/parser_prod.nit:9792 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 7711);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 9792);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42147,7 +51610,7 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7712 */
+    /* parser/parser_prod.nit:9793 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42162,32 +51625,32 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7713 */
+      /* parser/parser_prod.nit:9794 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7713);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9794);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7714 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9795 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7714);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9795);
       }
-      /* parser/parser_prod.nit:7715 */
+      /* parser/parser_prod.nit:9796 */
       ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7717 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7717);
+      /* parser/parser_prod.nit:9798 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9798);
     }
-    /* parser/parser_prod.nit:7719 */
+    /* parser/parser_prod.nit:9800 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7721 */
+  /* parser/parser_prod.nit:9802 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 7721);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 9802);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42197,7 +51660,7 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7722 */
+    /* parser/parser_prod.nit:9803 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42212,32 +51675,32 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7723 */
+      /* parser/parser_prod.nit:9804 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7723);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9804);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7724 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9805 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7724);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9805);
       }
-      /* parser/parser_prod.nit:7725 */
+      /* parser/parser_prod.nit:9806 */
       ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7727 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7727);
+      /* parser/parser_prod.nit:9808 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9808);
     }
-    /* parser/parser_prod.nit:7729 */
+    /* parser/parser_prod.nit:9810 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7731 */
+  /* parser/parser_prod.nit:9812 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 7731);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 9812);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42247,7 +51710,7 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7732 */
+    /* parser/parser_prod.nit:9813 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42262,39 +51725,149 @@ void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7733 */
+      /* parser/parser_prod.nit:9814 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7733);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9814);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7734 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9815 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7734);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9815);
       }
-      /* parser/parser_prod.nit:7735 */
+      /* parser/parser_prod.nit:9816 */
       ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7737 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7737);
+      /* parser/parser_prod.nit:9818 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9818);
     }
-    /* parser/parser_prod.nit:7739 */
+    /* parser/parser_prod.nit:9820 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsCastExpr___visit_all[] = "parser_prod::AAsCastExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAsCastExpr___n_expr__eq[] = "parser_prod::AAsCastExpr::(parser_nodes::AAsCastExpr::n_expr=)";
+void parser___parser_prod___AAsCastExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9824;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9826 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9827 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsCastExpr___n_kwas__eq[] = "parser_prod::AAsCastExpr::(parser_nodes::AAsCastExpr::n_kwas=)";
+void parser___parser_prod___AAsCastExpr___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9829;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9831 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9832 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsCastExpr___n_opar__eq[] = "parser_prod::AAsCastExpr::(parser_nodes::AAsCastExpr::n_opar=)";
+void parser___parser_prod___AAsCastExpr___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9834;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9836 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9837 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsCastExpr___n_type__eq[] = "parser_prod::AAsCastExpr::(parser_nodes::AAsCastExpr::n_type=)";
+void parser___parser_prod___AAsCastExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9839;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9841 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9842 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsCastExpr___n_cpar__eq[] = "parser_prod::AAsCastExpr::(parser_nodes::AAsCastExpr::n_cpar=)";
+void parser___parser_prod___AAsCastExpr___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9844;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9846 */
+  ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9847 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsCastExpr___visit_all[] = "parser_prod::AAsCastExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAsCastExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7743;
+  fra.me.line = 9851;
   fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -42304,58 +51877,58 @@ void parser___parser_prod___AAsCastExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7745 */
+  /* parser/parser_prod.nit:9853 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7745);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9853);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7746 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9854 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 7746);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 9854);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7747 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9855 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 7747);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 9855);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7748 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9856 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 7748);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 9856);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7749 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9857 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 7749);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 9857);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsNotnullExpr___empty_init[] = "parser_prod::AAsNotnullExpr::empty_init";
 void parser___parser_prod___AAsNotnullExpr___empty_init(val_t p0, int* init_table){
-  int itpos251 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr].i;
+  int itpos250 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos251]) return;
+  if (init_table[itpos250]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7753;
+  fra.me.line = 9861;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -42363,19 +51936,19 @@ void parser___parser_prod___AAsNotnullExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos251] = 1;
+  init_table[itpos250] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr[] = "parser_prod::AAsNotnullExpr::init_aasnotnullexpr";
 void parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
-  int itpos252 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr].i;
+  int itpos251 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos252]) return;
+  if (init_table[itpos251]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7755;
+  fra.me.line = 9863;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -42395,93 +51968,93 @@ void parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:7755 */
+  /* parser/parser_prod.nit:9863 */
   fra.me.REG[7] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7764 */
+  /* parser/parser_prod.nit:9872 */
   CALL_parser___parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
-  /* parser/parser_prod.nit:7765 */
+  /* parser/parser_prod.nit:9873 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7765);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9873);
   }
   ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[7]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7766 */
+  /* parser/parser_prod.nit:9874 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7766);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9874);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-  /* parser/parser_prod.nit:7767 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+  /* parser/parser_prod.nit:9875 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7767);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9875);
   }
   ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[7]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7768 */
+  /* parser/parser_prod.nit:9876 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7768);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9876);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-  /* parser/parser_prod.nit:7769 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+  /* parser/parser_prod.nit:9877 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7769);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9877);
   }
   ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[7]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:7770 */
+  /* parser/parser_prod.nit:9878 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7770);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9878);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-  /* parser/parser_prod.nit:7771 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser_prod.nit:9879 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7771);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9879);
   }
   ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[7]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:7772 */
+  /* parser/parser_prod.nit:9880 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7772);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9880);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-  /* parser/parser_prod.nit:7773 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+  /* parser/parser_prod.nit:9881 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7773);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9881);
   }
   ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[7]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:7774 */
+  /* parser/parser_prod.nit:9882 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7774);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9882);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-  /* parser/parser_prod.nit:7775 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+  /* parser/parser_prod.nit:9883 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7775);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9883);
   }
   ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[7]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:7776 */
+  /* parser/parser_prod.nit:9884 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7776);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9884);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos252] = 1;
+  init_table[itpos251] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsNotnullExpr___replace_child[] = "parser_prod::AAsNotnullExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___replace_child[] = "parser_prod::AAsNotnullExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAsNotnullExpr___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;
@@ -42489,7 +52062,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7779;
+  fra.me.line = 9887;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -42501,11 +52074,11 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7781 */
+  /* parser/parser_prod.nit:9889 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7781);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9889);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42515,7 +52088,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7782 */
+    /* parser/parser_prod.nit:9890 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42530,32 +52103,32 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7783 */
+      /* parser/parser_prod.nit:9891 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7783);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9891);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7784 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9892 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7784);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9892);
       }
-      /* parser/parser_prod.nit:7785 */
+      /* parser/parser_prod.nit:9893 */
       ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7787 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7787);
+      /* parser/parser_prod.nit:9895 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9895);
     }
-    /* parser/parser_prod.nit:7789 */
+    /* parser/parser_prod.nit:9897 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7791 */
+  /* parser/parser_prod.nit:9899 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 7791);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 9899);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42565,7 +52138,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7792 */
+    /* parser/parser_prod.nit:9900 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42580,32 +52153,32 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7793 */
+      /* parser/parser_prod.nit:9901 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7793);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9901);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7794 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9902 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast TKwas*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7794);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9902);
       }
-      /* parser/parser_prod.nit:7795 */
+      /* parser/parser_prod.nit:9903 */
       ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7797 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7797);
+      /* parser/parser_prod.nit:9905 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9905);
     }
-    /* parser/parser_prod.nit:7799 */
+    /* parser/parser_prod.nit:9907 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7801 */
+  /* parser/parser_prod.nit:9909 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 7801);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 9909);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42615,7 +52188,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7802 */
+    /* parser/parser_prod.nit:9910 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42630,32 +52203,32 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7803 */
+      /* parser/parser_prod.nit:9911 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7803);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9911);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7804 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9912 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7804);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9912);
       }
-      /* parser/parser_prod.nit:7805 */
+      /* parser/parser_prod.nit:9913 */
       ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7807 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7807);
+      /* parser/parser_prod.nit:9915 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9915);
     }
-    /* parser/parser_prod.nit:7809 */
+    /* parser/parser_prod.nit:9917 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7811 */
+  /* parser/parser_prod.nit:9919 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 7811);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 9919);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42665,7 +52238,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7812 */
+    /* parser/parser_prod.nit:9920 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42680,32 +52253,32 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7813 */
+      /* parser/parser_prod.nit:9921 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7813);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9921);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7814 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9922 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast TKwnot*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7814);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9922);
       }
-      /* parser/parser_prod.nit:7815 */
+      /* parser/parser_prod.nit:9923 */
       ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7817 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7817);
+      /* parser/parser_prod.nit:9925 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9925);
     }
-    /* parser/parser_prod.nit:7819 */
+    /* parser/parser_prod.nit:9927 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7821 */
+  /* parser/parser_prod.nit:9929 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 7821);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 9929);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42715,7 +52288,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7822 */
+    /* parser/parser_prod.nit:9930 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42730,32 +52303,32 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7823 */
+      /* parser/parser_prod.nit:9931 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7823);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9931);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7824 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9932 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast TKwnull*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7824);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9932);
       }
-      /* parser/parser_prod.nit:7825 */
+      /* parser/parser_prod.nit:9933 */
       ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7827 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7827);
+      /* parser/parser_prod.nit:9935 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9935);
     }
-    /* parser/parser_prod.nit:7829 */
+    /* parser/parser_prod.nit:9937 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7831 */
+  /* parser/parser_prod.nit:9939 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 7831);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 9939);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42765,7 +52338,7 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7832 */
+    /* parser/parser_prod.nit:9940 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -42780,39 +52353,171 @@ void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7833 */
+      /* parser/parser_prod.nit:9941 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7833);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9941);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7834 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:9942 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7834);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9942);
       }
-      /* parser/parser_prod.nit:7835 */
+      /* parser/parser_prod.nit:9943 */
       ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7837 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7837);
+      /* parser/parser_prod.nit:9945 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9945);
     }
-    /* parser/parser_prod.nit:7839 */
+    /* parser/parser_prod.nit:9947 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsNotnullExpr___visit_all[] = "parser_prod::AAsNotnullExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___n_expr__eq[] = "parser_prod::AAsNotnullExpr::(parser_nodes::AAsNotnullExpr::n_expr=)";
+void parser___parser_prod___AAsNotnullExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9951;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9953 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9954 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___n_kwas__eq[] = "parser_prod::AAsNotnullExpr::(parser_nodes::AAsNotnullExpr::n_kwas=)";
+void parser___parser_prod___AAsNotnullExpr___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9956;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9958 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9959 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___n_opar__eq[] = "parser_prod::AAsNotnullExpr::(parser_nodes::AAsNotnullExpr::n_opar=)";
+void parser___parser_prod___AAsNotnullExpr___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9961;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9963 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9964 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___n_kwnot__eq[] = "parser_prod::AAsNotnullExpr::(parser_nodes::AAsNotnullExpr::n_kwnot=)";
+void parser___parser_prod___AAsNotnullExpr___n_kwnot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9966;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___n_kwnot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9968 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9969 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___n_kwnull__eq[] = "parser_prod::AAsNotnullExpr::(parser_nodes::AAsNotnullExpr::n_kwnull=)";
+void parser___parser_prod___AAsNotnullExpr___n_kwnull__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9971;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___n_kwnull__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9973 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9974 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___n_cpar__eq[] = "parser_prod::AAsNotnullExpr::(parser_nodes::AAsNotnullExpr::n_cpar=)";
+void parser___parser_prod___AAsNotnullExpr___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 9976;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:9978 */
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:9979 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotnullExpr___visit_all[] = "parser_prod::AAsNotnullExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAsNotnullExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7843;
+  fra.me.line = 9983;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -42822,66 +52527,66 @@ void parser___parser_prod___AAsNotnullExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7845 */
+  /* parser/parser_prod.nit:9985 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7845);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9985);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7846 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9986 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 7846);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 9986);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7847 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9987 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 7847);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 9987);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7848 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9988 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 7848);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 9988);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7849 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9989 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 7849);
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_parser___parser_prod, 9989);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7850 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:9990 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 7850);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 9990);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIssetAttrExpr___empty_init[] = "parser_prod::AIssetAttrExpr::empty_init";
 void parser___parser_prod___AIssetAttrExpr___empty_init(val_t p0, int* init_table){
-  int itpos253 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIssetAttrExpr].i;
+  int itpos252 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIssetAttrExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos253]) return;
+  if (init_table[itpos252]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7854;
+  fra.me.line = 9994;
   fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -42889,19 +52594,19 @@ void parser___parser_prod___AIssetAttrExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos253] = 1;
+  init_table[itpos252] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr[] = "parser_prod::AIssetAttrExpr::init_aissetattrexpr";
 void parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos254 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIssetAttrExpr].i;
+  int itpos253 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIssetAttrExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos254]) return;
+  if (init_table[itpos253]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7856;
+  fra.me.line = 9996;
   fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -42915,54 +52620,54 @@ void parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:7856 */
+  /* parser/parser_prod.nit:9996 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7862 */
+  /* parser/parser_prod.nit:10002 */
   CALL_parser___parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:7863 */
+  /* parser/parser_prod.nit:10003 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7863);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10003);
   }
   ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7864 */
+  /* parser/parser_prod.nit:10004 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7864);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10004);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:7865 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:10005 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7865);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10005);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7866 */
+  /* parser/parser_prod.nit:10006 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7866);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10006);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:7867 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:10007 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7867);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10007);
   }
   ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:7868 */
+  /* parser/parser_prod.nit:10008 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7868);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10008);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos254] = 1;
+  init_table[itpos253] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIssetAttrExpr___replace_child[] = "parser_prod::AIssetAttrExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIssetAttrExpr___replace_child[] = "parser_prod::AIssetAttrExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIssetAttrExpr___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;
@@ -42970,7 +52675,7 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7871;
+  fra.me.line = 10011;
   fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -42982,11 +52687,11 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7873 */
+  /* parser/parser_prod.nit:10013 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser___parser_prod, 7873);
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser___parser_prod, 10013);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -42996,7 +52701,7 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7874 */
+    /* parser/parser_prod.nit:10014 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43011,32 +52716,32 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7875 */
+      /* parser/parser_prod.nit:10015 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7875);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10015);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7876 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10016 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast TKwisset*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7876);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10016);
       }
-      /* parser/parser_prod.nit:7877 */
+      /* parser/parser_prod.nit:10017 */
       ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7879 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7879);
+      /* parser/parser_prod.nit:10019 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10019);
     }
-    /* parser/parser_prod.nit:7881 */
+    /* parser/parser_prod.nit:10021 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7883 */
+  /* parser/parser_prod.nit:10023 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7883);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 10023);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43046,7 +52751,7 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7884 */
+    /* parser/parser_prod.nit:10024 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43061,32 +52766,32 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7885 */
+      /* parser/parser_prod.nit:10025 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7885);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10025);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7886 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10026 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7886);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10026);
       }
-      /* parser/parser_prod.nit:7887 */
+      /* parser/parser_prod.nit:10027 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7889 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7889);
+      /* parser/parser_prod.nit:10029 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10029);
     }
-    /* parser/parser_prod.nit:7891 */
+    /* parser/parser_prod.nit:10031 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7893 */
+  /* parser/parser_prod.nit:10033 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7893);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10033);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43096,7 +52801,7 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7894 */
+    /* parser/parser_prod.nit:10034 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43111,39 +52816,105 @@ void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7895 */
+      /* parser/parser_prod.nit:10035 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7895);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10035);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7896 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10036 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast TAttrid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7896);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10036);
       }
-      /* parser/parser_prod.nit:7897 */
+      /* parser/parser_prod.nit:10037 */
       ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7899 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7899);
+      /* parser/parser_prod.nit:10039 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10039);
     }
-    /* parser/parser_prod.nit:7901 */
+    /* parser/parser_prod.nit:10041 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIssetAttrExpr___visit_all[] = "parser_prod::AIssetAttrExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIssetAttrExpr___n_kwisset__eq[] = "parser_prod::AIssetAttrExpr::(parser_nodes::AIssetAttrExpr::n_kwisset=)";
+void parser___parser_prod___AIssetAttrExpr___n_kwisset__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10045;
+  fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___n_kwisset__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10047 */
+  ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10048 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIssetAttrExpr___n_expr__eq[] = "parser_prod::AIssetAttrExpr::(parser_nodes::AAttrFormExpr::n_expr=)";
+void parser___parser_prod___AIssetAttrExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10050;
+  fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10052 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10053 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIssetAttrExpr___n_id__eq[] = "parser_prod::AIssetAttrExpr::(parser_nodes::AAttrFormExpr::n_id=)";
+void parser___parser_prod___AIssetAttrExpr___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10055;
+  fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10057 */
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10058 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIssetAttrExpr___visit_all[] = "parser_prod::AIssetAttrExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIssetAttrExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7905;
+  fra.me.line = 10062;
   fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -43153,42 +52924,42 @@ void parser___parser_prod___AIssetAttrExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7907 */
+  /* parser/parser_prod.nit:10064 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser___parser_prod, 7907);
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_parser___parser_prod, 10064);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7908 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10065 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7908);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 10065);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7909 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10066 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7909);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10066);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADebugTypeExpr___empty_init[] = "parser_prod::ADebugTypeExpr::empty_init";
 void parser___parser_prod___ADebugTypeExpr___empty_init(val_t p0, int* init_table){
-  int itpos255 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADebugTypeExpr].i;
+  int itpos254 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADebugTypeExpr].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos255]) return;
+  if (init_table[itpos254]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7913;
+  fra.me.line = 10070;
   fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -43196,19 +52967,19 @@ void parser___parser_prod___ADebugTypeExpr___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos255] = 1;
+  init_table[itpos254] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr[] = "parser_prod::ADebugTypeExpr::init_adebugtypeexpr";
 void parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos256 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADebugTypeExpr].i;
+  int itpos255 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADebugTypeExpr].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos256]) return;
+  if (init_table[itpos255]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7915;
+  fra.me.line = 10072;
   fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -43224,67 +52995,67 @@ void parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(val_t p0, val_t
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:7915 */
+  /* parser/parser_prod.nit:10072 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:7922 */
+  /* parser/parser_prod.nit:10079 */
   CALL_parser___parser_prod___ADebugTypeExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:7923 */
+  /* parser/parser_prod.nit:10080 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7923);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10080);
   }
   ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:7924 */
+  /* parser/parser_prod.nit:10081 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7924);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10081);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:7925 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:10082 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7925);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10082);
   }
   ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:7926 */
+  /* parser/parser_prod.nit:10083 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7926);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10083);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:7927 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:10084 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7927);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10084);
   }
   ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:7928 */
+  /* parser/parser_prod.nit:10085 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7928);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10085);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:7929 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:10086 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7929);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10086);
   }
   ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:7930 */
+  /* parser/parser_prod.nit:10087 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7930);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10087);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos256] = 1;
+  init_table[itpos255] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADebugTypeExpr___replace_child[] = "parser_prod::ADebugTypeExpr::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ADebugTypeExpr___replace_child[] = "parser_prod::ADebugTypeExpr::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ADebugTypeExpr___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;
@@ -43292,7 +53063,7 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7933;
+  fra.me.line = 10090;
   fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -43304,11 +53075,11 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:7935 */
+  /* parser/parser_prod.nit:10092 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_parser___parser_prod, 7935);
+    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_parser___parser_prod, 10092);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43318,7 +53089,7 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7936 */
+    /* parser/parser_prod.nit:10093 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43333,32 +53104,32 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7937 */
+      /* parser/parser_prod.nit:10094 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7937);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10094);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7938 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10095 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwdebug, ID_parser___parser_nodes___TKwdebug)) /*cast TKwdebug*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7938);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10095);
       }
-      /* parser/parser_prod.nit:7939 */
+      /* parser/parser_prod.nit:10096 */
       ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7941 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7941);
+      /* parser/parser_prod.nit:10098 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10098);
     }
-    /* parser/parser_prod.nit:7943 */
+    /* parser/parser_prod.nit:10100 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7945 */
+  /* parser/parser_prod.nit:10102 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 7945);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 10102);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43368,7 +53139,7 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7946 */
+    /* parser/parser_prod.nit:10103 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43383,32 +53154,32 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7947 */
+      /* parser/parser_prod.nit:10104 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7947);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10104);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7948 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10105 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast TKwtype*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7948);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10105);
       }
-      /* parser/parser_prod.nit:7949 */
+      /* parser/parser_prod.nit:10106 */
       ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7951 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7951);
+      /* parser/parser_prod.nit:10108 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10108);
     }
-    /* parser/parser_prod.nit:7953 */
+    /* parser/parser_prod.nit:10110 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7955 */
+  /* parser/parser_prod.nit:10112 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7955);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 10112);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43418,7 +53189,7 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7956 */
+    /* parser/parser_prod.nit:10113 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43433,32 +53204,32 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7957 */
+      /* parser/parser_prod.nit:10114 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7957);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10114);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7958 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10115 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7958);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10115);
       }
-      /* parser/parser_prod.nit:7959 */
+      /* parser/parser_prod.nit:10116 */
       ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7961 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7961);
+      /* parser/parser_prod.nit:10118 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10118);
     }
-    /* parser/parser_prod.nit:7963 */
+    /* parser/parser_prod.nit:10120 */
     goto label1;
   }
-  /* parser/parser_prod.nit:7965 */
+  /* parser/parser_prod.nit:10122 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 7965);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 10122);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43468,7 +53239,7 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:7966 */
+    /* parser/parser_prod.nit:10123 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43483,39 +53254,127 @@ void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:7967 */
+      /* parser/parser_prod.nit:10124 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7967);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10124);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:7968 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10125 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7968);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10125);
       }
-      /* parser/parser_prod.nit:7969 */
+      /* parser/parser_prod.nit:10126 */
       ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:7971 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 7971);
+      /* parser/parser_prod.nit:10128 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10128);
     }
-    /* parser/parser_prod.nit:7973 */
+    /* parser/parser_prod.nit:10130 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADebugTypeExpr___visit_all[] = "parser_prod::ADebugTypeExpr::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ADebugTypeExpr___n_kwdebug__eq[] = "parser_prod::ADebugTypeExpr::(parser_nodes::ADebugTypeExpr::n_kwdebug=)";
+void parser___parser_prod___ADebugTypeExpr___n_kwdebug__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10134;
+  fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___n_kwdebug__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10136 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10137 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADebugTypeExpr___n_kwtype__eq[] = "parser_prod::ADebugTypeExpr::(parser_nodes::ADebugTypeExpr::n_kwtype=)";
+void parser___parser_prod___ADebugTypeExpr___n_kwtype__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10139;
+  fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___n_kwtype__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10141 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10142 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADebugTypeExpr___n_expr__eq[] = "parser_prod::ADebugTypeExpr::(parser_nodes::ADebugTypeExpr::n_expr=)";
+void parser___parser_prod___ADebugTypeExpr___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10144;
+  fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10146 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10147 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADebugTypeExpr___n_type__eq[] = "parser_prod::ADebugTypeExpr::(parser_nodes::ADebugTypeExpr::n_type=)";
+void parser___parser_prod___ADebugTypeExpr___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10149;
+  fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10151 */
+  ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10152 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ADebugTypeExpr___visit_all[] = "parser_prod::ADebugTypeExpr::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ADebugTypeExpr___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7977;
+  fra.me.line = 10156;
   fra.me.meth = LOCATE_parser___parser_prod___ADebugTypeExpr___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -43525,50 +53384,50 @@ void parser___parser_prod___ADebugTypeExpr___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7979 */
+  /* parser/parser_prod.nit:10158 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_parser___parser_prod, 7979);
+    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_parser___parser_prod, 10158);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7980 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10159 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 7980);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_parser___parser_prod, 10159);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_kwtype(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7981 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10160 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 7981);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 10160);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:7982 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10161 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 7982);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 10161);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADebugTypeExpr____n_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AListExprs___empty_init[] = "parser_prod::AListExprs::empty_init";
 void parser___parser_prod___AListExprs___empty_init(val_t p0, int* init_table){
-  int itpos257 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AListExprs].i;
+  int itpos256 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AListExprs].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos257]) return;
+  if (init_table[itpos256]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7986;
+  fra.me.line = 10165;
   fra.me.meth = LOCATE_parser___parser_prod___AListExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -43576,18 +53435,18 @@ void parser___parser_prod___AListExprs___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos257] = 1;
+  init_table[itpos256] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AListExprs___init_alistexprs[] = "parser_prod::AListExprs::init_alistexprs";
 void parser___parser_prod___AListExprs___init_alistexprs(val_t p0, val_t p1, int* init_table){
-  int itpos258 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AListExprs].i;
+  int itpos257 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AListExprs].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos258]) return;
+  if (init_table[itpos257]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 7988;
+  fra.me.line = 10167;
   fra.me.meth = LOCATE_parser___parser_prod___AListExprs___init_alistexprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -43596,11 +53455,11 @@ void parser___parser_prod___AListExprs___init_alistexprs(val_t p0, val_t p1, int
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:7992 */
+  /* parser/parser_prod.nit:10171 */
   CALL_parser___parser_prod___AListExprs___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AListExprs___init_alistexprs_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos258] = 1;
+  init_table[itpos257] = 1;
   return;
 }
   void OC_parser___parser_prod___AListExprs___init_alistexprs_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -43608,7 +53467,7 @@ void parser___parser_prod___AListExprs___init_alistexprs(val_t p0, val_t p1, int
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:7993 */
+    /* parser/parser_prod.nit:10172 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -43622,26 +53481,26 @@ void parser___parser_prod___AListExprs___init_alistexprs(val_t p0, val_t p1, int
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:7994 */
+    /* parser/parser_prod.nit:10173 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7994);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10173);
     }
-    /* parser/parser_prod.nit:7995 */
+    /* parser/parser_prod.nit:10174 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 7995);
+      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10174);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AExprs____n_exprs(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:7996 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:10175 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AListExprs___replace_child[] = "parser_prod::AListExprs::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AListExprs___replace_child[] = "parser_prod::AListExprs::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AListExprs___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;
@@ -43652,7 +53511,7 @@ void parser___parser_prod___AListExprs___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8000;
+  fra.me.line = 10179;
   fra.me.meth = LOCATE_parser___parser_prod___AListExprs___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -43664,50 +53523,44 @@ void parser___parser_prod___AListExprs___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8002 */
+  /* parser/parser_prod.nit:10181 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8002);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10181);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:8002 */
+      /* parser/parser_prod.nit:10181 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:8003 */
+      /* parser/parser_prod.nit:10182 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8003);
+        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10182);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:8004 */
+        /* parser/parser_prod.nit:10183 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -43722,47 +53575,47 @@ void parser___parser_prod___AListExprs___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:8005 */
+          /* parser/parser_prod.nit:10184 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8005);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10184);
           }
-          /* parser/parser_prod.nit:8006 */
+          /* parser/parser_prod.nit:10185 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8006);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10185);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:8007 */
+          /* parser/parser_prod.nit:10186 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8007);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10186);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:8009 */
+          /* parser/parser_prod.nit:10188 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8009);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10188);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:8011 */
+        /* parser/parser_prod.nit:10190 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -43771,14 +53624,14 @@ void parser___parser_prod___AListExprs___replace_child(val_t p0, val_t p1, val_t
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AListExprs___visit_all[] = "parser_prod::AListExprs::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AListExprs___visit_all[] = "parser_prod::AListExprs::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AListExprs___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___parser_prod;
-  fra.me.line = 8016;
+  fra.me.line = 10197;
   fra.me.meth = LOCATE_parser___parser_prod___AListExprs___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -43787,11 +53640,11 @@ void parser___parser_prod___AListExprs___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8018 */
+  /* parser/parser_prod.nit:10199 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8018);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10199);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AListExprs___visit_all_1));
@@ -43814,20 +53667,20 @@ void parser___parser_prod___AListExprs___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8019 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:10200 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AParExprs___empty_init[] = "parser_prod::AParExprs::empty_init";
 void parser___parser_prod___AParExprs___empty_init(val_t p0, int* init_table){
-  int itpos259 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExprs].i;
+  int itpos258 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExprs].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos259]) return;
+  if (init_table[itpos258]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8024;
+  fra.me.line = 10205;
   fra.me.meth = LOCATE_parser___parser_prod___AParExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -43835,19 +53688,19 @@ void parser___parser_prod___AParExprs___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos259] = 1;
+  init_table[itpos258] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AParExprs___init_aparexprs[] = "parser_prod::AParExprs::init_aparexprs";
 void parser___parser_prod___AParExprs___init_aparexprs(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos260 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExprs].i;
+  int itpos259 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExprs].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos260]) return;
+  if (init_table[itpos259]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8026;
+  fra.me.line = 10207;
   fra.me.meth = LOCATE_parser___parser_prod___AParExprs___init_aparexprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -43861,39 +53714,39 @@ void parser___parser_prod___AParExprs___init_aparexprs(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8026 */
+  /* parser/parser_prod.nit:10207 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8032 */
+  /* parser/parser_prod.nit:10213 */
   CALL_parser___parser_prod___AParExprs___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:8033 */
+  /* parser/parser_prod.nit:10214 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8033);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10214);
   }
   ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8034 */
+  /* parser/parser_prod.nit:10215 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8034);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10215);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AParExprs___init_aparexprs_1));
-  /* parser/parser_prod.nit:8040 */
+  /* parser/parser_prod.nit:10221 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8040);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10221);
   }
   ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8041 */
+  /* parser/parser_prod.nit:10222 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8041);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10222);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos260] = 1;
+  init_table[itpos259] = 1;
   return;
 }
   void OC_parser___parser_prod___AParExprs___init_aparexprs_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -43901,7 +53754,7 @@ void parser___parser_prod___AParExprs___init_aparexprs(val_t p0, val_t p1, val_t
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:8035 */
+    /* parser/parser_prod.nit:10216 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -43915,26 +53768,26 @@ void parser___parser_prod___AParExprs___init_aparexprs(val_t p0, val_t p1, val_t
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8036 */
+    /* parser/parser_prod.nit:10217 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8036);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10217);
     }
-    /* parser/parser_prod.nit:8037 */
+    /* parser/parser_prod.nit:10218 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8037);
+      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10218);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AExprs____n_exprs(closctx->REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:8038 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
+    /* parser/parser_prod.nit:10219 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AParExprs___replace_child[] = "parser_prod::AParExprs::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AParExprs___replace_child[] = "parser_prod::AParExprs::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AParExprs___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;
@@ -43945,7 +53798,7 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8044;
+  fra.me.line = 10225;
   fra.me.meth = LOCATE_parser___parser_prod___AParExprs___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -43957,11 +53810,11 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8046 */
+  /* parser/parser_prod.nit:10227 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 8046);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 10227);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -43971,7 +53824,7 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8047 */
+    /* parser/parser_prod.nit:10228 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -43986,71 +53839,65 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8048 */
+      /* parser/parser_prod.nit:10229 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8048);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10229);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8049 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10230 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8049);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10230);
       }
-      /* parser/parser_prod.nit:8050 */
+      /* parser/parser_prod.nit:10231 */
       ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8052 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8052);
+      /* parser/parser_prod.nit:10233 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10233);
     }
-    /* parser/parser_prod.nit:8054 */
+    /* parser/parser_prod.nit:10235 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8056 */
+  /* parser/parser_prod.nit:10237 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8056);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10237);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:8056 */
+      /* parser/parser_prod.nit:10237 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:8057 */
+      /* parser/parser_prod.nit:10238 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8057);
+        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10238);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:8058 */
+        /* parser/parser_prod.nit:10239 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -44065,56 +53912,56 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:8059 */
+          /* parser/parser_prod.nit:10240 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8059);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10240);
           }
-          /* parser/parser_prod.nit:8060 */
+          /* parser/parser_prod.nit:10241 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8060);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10241);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:8061 */
+          /* parser/parser_prod.nit:10242 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8061);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10242);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:8063 */
+          /* parser/parser_prod.nit:10244 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8063);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10244);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:8065 */
+        /* parser/parser_prod.nit:10246 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:8068 */
+  /* parser/parser_prod.nit:10249 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 8068);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 10249);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -44124,7 +53971,7 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8069 */
+    /* parser/parser_prod.nit:10250 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -44139,39 +53986,83 @@ void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8070 */
+      /* parser/parser_prod.nit:10251 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8070);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10251);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8071 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10252 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8071);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10252);
       }
-      /* parser/parser_prod.nit:8072 */
+      /* parser/parser_prod.nit:10253 */
       ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8074 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8074);
+      /* parser/parser_prod.nit:10255 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10255);
     }
-    /* parser/parser_prod.nit:8076 */
+    /* parser/parser_prod.nit:10257 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AParExprs___visit_all[] = "parser_prod::AParExprs::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AParExprs___n_opar__eq[] = "parser_prod::AParExprs::(parser_nodes::AParExprs::n_opar=)";
+void parser___parser_prod___AParExprs___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10261;
+  fra.me.meth = LOCATE_parser___parser_prod___AParExprs___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10263 */
+  ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10264 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParExprs___n_cpar__eq[] = "parser_prod::AParExprs::(parser_nodes::AParExprs::n_cpar=)";
+void parser___parser_prod___AParExprs___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10266;
+  fra.me.meth = LOCATE_parser___parser_prod___AParExprs___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10268 */
+  ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10269 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AParExprs___visit_all[] = "parser_prod::AParExprs::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AParExprs___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8080;
+  fra.me.line = 10273;
   fra.me.meth = LOCATE_parser___parser_prod___AParExprs___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -44181,30 +54072,30 @@ void parser___parser_prod___AParExprs___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8082 */
+  /* parser/parser_prod.nit:10275 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 8082);
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_parser___parser_prod, 10275);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8083 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10276 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8083);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10276);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AParExprs___visit_all_1));
-  /* parser/parser_prod.nit:8086 */
+  /* parser/parser_prod.nit:10279 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 8086);
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_parser___parser_prod, 10279);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -44224,20 +54115,20 @@ void parser___parser_prod___AParExprs___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8084 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:10277 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ABraExprs___empty_init[] = "parser_prod::ABraExprs::empty_init";
 void parser___parser_prod___ABraExprs___empty_init(val_t p0, int* init_table){
-  int itpos261 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExprs].i;
+  int itpos260 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExprs].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos261]) return;
+  if (init_table[itpos260]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8090;
+  fra.me.line = 10283;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -44245,19 +54136,19 @@ void parser___parser_prod___ABraExprs___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos261] = 1;
+  init_table[itpos260] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ABraExprs___init_abraexprs[] = "parser_prod::ABraExprs::init_abraexprs";
 void parser___parser_prod___ABraExprs___init_abraexprs(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos262 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExprs].i;
+  int itpos261 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABraExprs].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos262]) return;
+  if (init_table[itpos261]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8092;
+  fra.me.line = 10285;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExprs___init_abraexprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -44271,39 +54162,39 @@ void parser___parser_prod___ABraExprs___init_abraexprs(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8092 */
+  /* parser/parser_prod.nit:10285 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8098 */
+  /* parser/parser_prod.nit:10291 */
   CALL_parser___parser_prod___ABraExprs___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:8099 */
+  /* parser/parser_prod.nit:10292 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8099);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10292);
   }
   ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8100 */
+  /* parser/parser_prod.nit:10293 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8100);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10293);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABraExprs___init_abraexprs_1));
-  /* parser/parser_prod.nit:8106 */
+  /* parser/parser_prod.nit:10299 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8106);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10299);
   }
   ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8107 */
+  /* parser/parser_prod.nit:10300 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8107);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10300);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos262] = 1;
+  init_table[itpos261] = 1;
   return;
 }
   void OC_parser___parser_prod___ABraExprs___init_abraexprs_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -44311,7 +54202,7 @@ void parser___parser_prod___ABraExprs___init_abraexprs(val_t p0, val_t p1, val_t
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:8101 */
+    /* parser/parser_prod.nit:10294 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -44325,26 +54216,26 @@ void parser___parser_prod___ABraExprs___init_abraexprs(val_t p0, val_t p1, val_t
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8102 */
+    /* parser/parser_prod.nit:10295 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8102);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10295);
     }
-    /* parser/parser_prod.nit:8103 */
+    /* parser/parser_prod.nit:10296 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8103);
+      nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10296);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AExprs____n_exprs(closctx->REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:8104 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
+    /* parser/parser_prod.nit:10297 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ABraExprs___replace_child[] = "parser_prod::ABraExprs::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ABraExprs___replace_child[] = "parser_prod::ABraExprs::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ABraExprs___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;
@@ -44355,7 +54246,7 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8110;
+  fra.me.line = 10303;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExprs___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44367,11 +54258,11 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8112 */
+  /* parser/parser_prod.nit:10305 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 8112);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 10305);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -44381,7 +54272,7 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8113 */
+    /* parser/parser_prod.nit:10306 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -44396,71 +54287,65 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8114 */
+      /* parser/parser_prod.nit:10307 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8114);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10307);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8115 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10308 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast TObra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8115);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10308);
       }
-      /* parser/parser_prod.nit:8116 */
+      /* parser/parser_prod.nit:10309 */
       ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8118 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8118);
+      /* parser/parser_prod.nit:10311 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10311);
     }
-    /* parser/parser_prod.nit:8120 */
+    /* parser/parser_prod.nit:10313 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8122 */
+  /* parser/parser_prod.nit:10315 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8122);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10315);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:8122 */
+      /* parser/parser_prod.nit:10315 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:8123 */
+      /* parser/parser_prod.nit:10316 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8123);
+        nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10316);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:8124 */
+        /* parser/parser_prod.nit:10317 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -44475,56 +54360,56 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:8125 */
+          /* parser/parser_prod.nit:10318 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8125);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10318);
           }
-          /* parser/parser_prod.nit:8126 */
+          /* parser/parser_prod.nit:10319 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8126);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10319);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:8127 */
+          /* parser/parser_prod.nit:10320 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8127);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10320);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:8129 */
+          /* parser/parser_prod.nit:10322 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8129);
+            nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10322);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:8131 */
+        /* parser/parser_prod.nit:10324 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:8134 */
+  /* parser/parser_prod.nit:10327 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 8134);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 10327);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -44534,7 +54419,7 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8135 */
+    /* parser/parser_prod.nit:10328 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -44549,39 +54434,83 @@ void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8136 */
+      /* parser/parser_prod.nit:10329 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8136);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10329);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8137 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10330 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast TCbra*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8137);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10330);
       }
-      /* parser/parser_prod.nit:8138 */
+      /* parser/parser_prod.nit:10331 */
       ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8140 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8140);
+      /* parser/parser_prod.nit:10333 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10333);
     }
-    /* parser/parser_prod.nit:8142 */
+    /* parser/parser_prod.nit:10335 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABraExprs___visit_all[] = "parser_prod::ABraExprs::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABraExprs___n_obra__eq[] = "parser_prod::ABraExprs::(parser_nodes::ABraExprs::n_obra=)";
+void parser___parser_prod___ABraExprs___n_obra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10339;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraExprs___n_obra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10341 */
+  ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10342 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraExprs___n_cbra__eq[] = "parser_prod::ABraExprs::(parser_nodes::ABraExprs::n_cbra=)";
+void parser___parser_prod___ABraExprs___n_cbra__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10344;
+  fra.me.meth = LOCATE_parser___parser_prod___ABraExprs___n_cbra__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10346 */
+  ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10347 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABraExprs___visit_all[] = "parser_prod::ABraExprs::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABraExprs___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8146;
+  fra.me.line = 10351;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExprs___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -44591,30 +54520,30 @@ void parser___parser_prod___ABraExprs___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8148 */
+  /* parser/parser_prod.nit:10353 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 8148);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_parser___parser_prod, 10353);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ABraExprs____n_obra(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8149 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10354 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 8149);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 10354);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABraExprs___visit_all_1));
-  /* parser/parser_prod.nit:8152 */
+  /* parser/parser_prod.nit:10357 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 8152);
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_parser___parser_prod, 10357);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABraExprs____n_cbra(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -44634,20 +54563,20 @@ void parser___parser_prod___ABraExprs___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8150 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:10355 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___APlusAssignOp___empty_init[] = "parser_prod::APlusAssignOp::empty_init";
 void parser___parser_prod___APlusAssignOp___empty_init(val_t p0, int* init_table){
-  int itpos263 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp].i;
+  int itpos262 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos263]) return;
+  if (init_table[itpos262]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8156;
+  fra.me.line = 10361;
   fra.me.meth = LOCATE_parser___parser_prod___APlusAssignOp___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -44655,19 +54584,19 @@ void parser___parser_prod___APlusAssignOp___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos263] = 1;
+  init_table[itpos262] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___APlusAssignOp___init_aplusassignop[] = "parser_prod::APlusAssignOp::init_aplusassignop";
 void parser___parser_prod___APlusAssignOp___init_aplusassignop(val_t p0, val_t p1, int* init_table){
-  int itpos264 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp].i;
+  int itpos263 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos264]) return;
+  if (init_table[itpos263]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8158;
+  fra.me.line = 10363;
   fra.me.meth = LOCATE_parser___parser_prod___APlusAssignOp___init_aplusassignop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -44677,28 +54606,28 @@ void parser___parser_prod___APlusAssignOp___init_aplusassignop(val_t p0, val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8158 */
+  /* parser/parser_prod.nit:10363 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8162 */
+  /* parser/parser_prod.nit:10367 */
   CALL_parser___parser_prod___APlusAssignOp___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8163 */
+  /* parser/parser_prod.nit:10368 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8163);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10368);
   }
   ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8164 */
+  /* parser/parser_prod.nit:10369 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8164);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10369);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos264] = 1;
+  init_table[itpos263] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___APlusAssignOp___replace_child[] = "parser_prod::APlusAssignOp::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___APlusAssignOp___replace_child[] = "parser_prod::APlusAssignOp::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___APlusAssignOp___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;
@@ -44706,7 +54635,7 @@ void parser___parser_prod___APlusAssignOp___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8167;
+  fra.me.line = 10372;
   fra.me.meth = LOCATE_parser___parser_prod___APlusAssignOp___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44718,11 +54647,11 @@ void parser___parser_prod___APlusAssignOp___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8169 */
+  /* parser/parser_prod.nit:10374 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser___parser_prod, 8169);
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser___parser_prod, 10374);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -44732,7 +54661,7 @@ void parser___parser_prod___APlusAssignOp___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8170 */
+    /* parser/parser_prod.nit:10375 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -44747,39 +54676,61 @@ void parser___parser_prod___APlusAssignOp___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8171 */
+      /* parser/parser_prod.nit:10376 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8171);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10376);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8172 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10377 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TPluseq, ID_parser___parser_nodes___TPluseq)) /*cast TPluseq*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8172);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10377);
       }
-      /* parser/parser_prod.nit:8173 */
+      /* parser/parser_prod.nit:10378 */
       ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8175 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8175);
+      /* parser/parser_prod.nit:10380 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10380);
     }
-    /* parser/parser_prod.nit:8177 */
+    /* parser/parser_prod.nit:10382 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___APlusAssignOp___visit_all[] = "parser_prod::APlusAssignOp::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___APlusAssignOp___n_pluseq__eq[] = "parser_prod::APlusAssignOp::(parser_nodes::APlusAssignOp::n_pluseq=)";
+void parser___parser_prod___APlusAssignOp___n_pluseq__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10386;
+  fra.me.meth = LOCATE_parser___parser_prod___APlusAssignOp___n_pluseq__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10388 */
+  ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10389 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___APlusAssignOp___visit_all[] = "parser_prod::APlusAssignOp::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___APlusAssignOp___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___parser_prod;
-  fra.me.line = 8181;
+  fra.me.line = 10393;
   fra.me.meth = LOCATE_parser___parser_prod___APlusAssignOp___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -44788,26 +54739,26 @@ void parser___parser_prod___APlusAssignOp___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8183 */
+  /* parser/parser_prod.nit:10395 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser___parser_prod, 8183);
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_parser___parser_prod, 10395);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMinusAssignOp___empty_init[] = "parser_prod::AMinusAssignOp::empty_init";
 void parser___parser_prod___AMinusAssignOp___empty_init(val_t p0, int* init_table){
-  int itpos265 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp].i;
+  int itpos264 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos265]) return;
+  if (init_table[itpos264]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8187;
+  fra.me.line = 10399;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusAssignOp___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -44815,19 +54766,19 @@ void parser___parser_prod___AMinusAssignOp___empty_init(val_t p0, int* init_tabl
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos265] = 1;
+  init_table[itpos264] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AMinusAssignOp___init_aminusassignop[] = "parser_prod::AMinusAssignOp::init_aminusassignop";
 void parser___parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0, val_t p1, int* init_table){
-  int itpos266 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp].i;
+  int itpos265 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos266]) return;
+  if (init_table[itpos265]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8189;
+  fra.me.line = 10401;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusAssignOp___init_aminusassignop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -44837,28 +54788,28 @@ void parser___parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8189 */
+  /* parser/parser_prod.nit:10401 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8193 */
+  /* parser/parser_prod.nit:10405 */
   CALL_parser___parser_prod___AMinusAssignOp___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8194 */
+  /* parser/parser_prod.nit:10406 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8194);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10406);
   }
   ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8195 */
+  /* parser/parser_prod.nit:10407 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8195);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10407);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos266] = 1;
+  init_table[itpos265] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMinusAssignOp___replace_child[] = "parser_prod::AMinusAssignOp::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AMinusAssignOp___replace_child[] = "parser_prod::AMinusAssignOp::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AMinusAssignOp___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;
@@ -44866,7 +54817,7 @@ void parser___parser_prod___AMinusAssignOp___replace_child(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8198;
+  fra.me.line = 10410;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusAssignOp___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -44878,11 +54829,11 @@ void parser___parser_prod___AMinusAssignOp___replace_child(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8200 */
+  /* parser/parser_prod.nit:10412 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser___parser_prod, 8200);
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser___parser_prod, 10412);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -44892,7 +54843,7 @@ void parser___parser_prod___AMinusAssignOp___replace_child(val_t p0, val_t p1, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8201 */
+    /* parser/parser_prod.nit:10413 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -44907,39 +54858,61 @@ void parser___parser_prod___AMinusAssignOp___replace_child(val_t p0, val_t p1, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8202 */
+      /* parser/parser_prod.nit:10414 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8202);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10414);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8203 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10415 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TMinuseq, ID_parser___parser_nodes___TMinuseq)) /*cast TMinuseq*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8203);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10415);
       }
-      /* parser/parser_prod.nit:8204 */
+      /* parser/parser_prod.nit:10416 */
       ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8206 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8206);
+      /* parser/parser_prod.nit:10418 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10418);
     }
-    /* parser/parser_prod.nit:8208 */
+    /* parser/parser_prod.nit:10420 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AMinusAssignOp___visit_all[] = "parser_prod::AMinusAssignOp::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AMinusAssignOp___n_minuseq__eq[] = "parser_prod::AMinusAssignOp::(parser_nodes::AMinusAssignOp::n_minuseq=)";
+void parser___parser_prod___AMinusAssignOp___n_minuseq__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10424;
+  fra.me.meth = LOCATE_parser___parser_prod___AMinusAssignOp___n_minuseq__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10426 */
+  ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10427 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AMinusAssignOp___visit_all[] = "parser_prod::AMinusAssignOp::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AMinusAssignOp___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___parser_prod;
-  fra.me.line = 8212;
+  fra.me.line = 10431;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusAssignOp___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -44948,26 +54921,26 @@ void parser___parser_prod___AMinusAssignOp___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8214 */
+  /* parser/parser_prod.nit:10433 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser___parser_prod, 8214);
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_parser___parser_prod, 10433);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AClosureDef___empty_init[] = "parser_prod::AClosureDef::empty_init";
 void parser___parser_prod___AClosureDef___empty_init(val_t p0, int* init_table){
-  int itpos267 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDef].i;
+  int itpos266 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDef].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos267]) return;
+  if (init_table[itpos266]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8218;
+  fra.me.line = 10437;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -44975,20 +54948,20 @@ void parser___parser_prod___AClosureDef___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos267] = 1;
+  init_table[itpos266] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AClosureDef___init_aclosuredef[] = "parser_prod::AClosureDef::init_aclosuredef";
 void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, int* init_table){
-  int itpos268 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDef].i;
+  int itpos267 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos268]) return;
+  if (init_table[itpos267]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8220;
+  fra.me.line = 10439;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___init_aclosuredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -45008,40 +54981,40 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
-  /* parser/parser_prod.nit:8220 */
+  /* parser/parser_prod.nit:10439 */
   fra.me.REG[7] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8229 */
+  /* parser/parser_prod.nit:10448 */
   CALL_parser___parser_prod___AClosureDef___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
-  /* parser/parser_prod.nit:8230 */
+  /* parser/parser_prod.nit:10449 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8230);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10449);
   }
   ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[7]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8231 */
+  /* parser/parser_prod.nit:10450 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8231);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10450);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-  /* parser/parser_prod.nit:8232 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+  /* parser/parser_prod.nit:10451 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8232);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10451);
   }
   ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[7]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8233 */
+  /* parser/parser_prod.nit:10452 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8233);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10452);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AClosureDef___init_aclosuredef_1));
-  /* parser/parser_prod.nit:8239 */
+  /* parser/parser_prod.nit:10458 */
   ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[7]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:8240 */
+  /* parser/parser_prod.nit:10459 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45056,16 +55029,16 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8241 */
+    /* parser/parser_prod.nit:10460 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8241);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10460);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:8243 */
+  /* parser/parser_prod.nit:10462 */
   ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[7]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:8244 */
+  /* parser/parser_prod.nit:10463 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45080,16 +55053,16 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8245 */
+    /* parser/parser_prod.nit:10464 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8245);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10464);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   }
-  /* parser/parser_prod.nit:8247 */
+  /* parser/parser_prod.nit:10466 */
   ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[7]) = fra.me.REG[6];
-  /* parser/parser_prod.nit:8248 */
+  /* parser/parser_prod.nit:10467 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -45104,15 +55077,15 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8249 */
+    /* parser/parser_prod.nit:10468 */
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8249);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10468);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos268] = 1;
+  init_table[itpos267] = 1;
   return;
 }
   void OC_parser___parser_prod___AClosureDef___init_aclosuredef_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -45120,7 +55093,7 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:8234 */
+    /* parser/parser_prod.nit:10453 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -45134,26 +55107,26 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8235 */
+    /* parser/parser_prod.nit:10454 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8235);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10454);
     }
-    /* parser/parser_prod.nit:8236 */
+    /* parser/parser_prod.nit:10455 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(closctx->REG[7])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 8236);
+      nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 10455);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AClosureDef____n_ids(closctx->REG[7]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:8237 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[7]);
+    /* parser/parser_prod.nit:10456 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[7]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AClosureDef___replace_child[] = "parser_prod::AClosureDef::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AClosureDef___replace_child[] = "parser_prod::AClosureDef::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AClosureDef___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;
@@ -45164,7 +55137,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8253;
+  fra.me.line = 10472;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -45176,11 +55149,11 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8255 */
+  /* parser/parser_prod.nit:10474 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 8255);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 10474);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -45190,7 +55163,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8256 */
+    /* parser/parser_prod.nit:10475 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -45205,32 +55178,32 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8257 */
+      /* parser/parser_prod.nit:10476 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8257);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10476);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8258 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10477 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast TBang*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8258);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10477);
       }
-      /* parser/parser_prod.nit:8259 */
+      /* parser/parser_prod.nit:10478 */
       ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8261 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8261);
+      /* parser/parser_prod.nit:10480 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10480);
     }
-    /* parser/parser_prod.nit:8263 */
+    /* parser/parser_prod.nit:10482 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8265 */
+  /* parser/parser_prod.nit:10484 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8265);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10484);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -45240,7 +55213,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8266 */
+    /* parser/parser_prod.nit:10485 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -45255,71 +55228,65 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8267 */
+      /* parser/parser_prod.nit:10486 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8267);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10486);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8268 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10487 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast AClosureId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8268);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10487);
       }
-      /* parser/parser_prod.nit:8269 */
+      /* parser/parser_prod.nit:10488 */
       ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8271 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8271);
+      /* parser/parser_prod.nit:10490 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10490);
     }
-    /* parser/parser_prod.nit:8273 */
+    /* parser/parser_prod.nit:10492 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8275 */
+  /* parser/parser_prod.nit:10494 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 8275);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 10494);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:8275 */
+      /* parser/parser_prod.nit:10494 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:8276 */
+      /* parser/parser_prod.nit:10495 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 8276);
+        nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 10495);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:8277 */
+        /* parser/parser_prod.nit:10496 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -45334,52 +55301,52 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:8278 */
+          /* parser/parser_prod.nit:10497 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8278);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10497);
           }
-          /* parser/parser_prod.nit:8279 */
+          /* parser/parser_prod.nit:10498 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 8279);
+            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 10498);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:8280 */
+          /* parser/parser_prod.nit:10499 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8280);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10499);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:8282 */
+          /* parser/parser_prod.nit:10501 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 8282);
+            nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 10501);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:8284 */
+        /* parser/parser_prod.nit:10503 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:8287 */
+  /* parser/parser_prod.nit:10506 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -45394,7 +55361,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8288 */
+    /* parser/parser_prod.nit:10507 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -45409,28 +55376,28 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8289 */
+      /* parser/parser_prod.nit:10508 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8289);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10508);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8290 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10509 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast TKwdo*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8290);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10509);
       }
-      /* parser/parser_prod.nit:8291 */
+      /* parser/parser_prod.nit:10510 */
       ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8293 */
+      /* parser/parser_prod.nit:10512 */
       ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:8295 */
+    /* parser/parser_prod.nit:10514 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8297 */
+  /* parser/parser_prod.nit:10516 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -45445,7 +55412,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8298 */
+    /* parser/parser_prod.nit:10517 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -45460,28 +55427,28 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8299 */
+      /* parser/parser_prod.nit:10518 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8299);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10518);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8300 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10519 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8300);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10519);
       }
-      /* parser/parser_prod.nit:8301 */
+      /* parser/parser_prod.nit:10520 */
       ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8303 */
+      /* parser/parser_prod.nit:10522 */
       ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:8305 */
+    /* parser/parser_prod.nit:10524 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8307 */
+  /* parser/parser_prod.nit:10526 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -45496,7 +55463,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8308 */
+    /* parser/parser_prod.nit:10527 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -45511,32 +55478,208 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8309 */
+      /* parser/parser_prod.nit:10528 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8309);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10528);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8310 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10529 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8310);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10529);
       }
-      /* parser/parser_prod.nit:8311 */
+      /* parser/parser_prod.nit:10530 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8313 */
+      /* parser/parser_prod.nit:10532 */
       ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:8315 */
+    /* parser/parser_prod.nit:10534 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AClosureDef___visit_all[] = "parser_prod::AClosureDef::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AClosureDef___n_bang__eq[] = "parser_prod::AClosureDef::(parser_nodes::AClosureDef::n_bang=)";
+void parser___parser_prod___AClosureDef___n_bang__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10538;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___n_bang__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10540 */
+  ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10541 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDef___n_id__eq[] = "parser_prod::AClosureDef::(parser_nodes::AClosureDef::n_id=)";
+void parser___parser_prod___AClosureDef___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10543;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10545 */
+  ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10546 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDef___n_kwdo__eq[] = "parser_prod::AClosureDef::(parser_nodes::AClosureDef::n_kwdo=)";
+void parser___parser_prod___AClosureDef___n_kwdo__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10548;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___n_kwdo__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10550 */
+  ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10551 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:10552 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10552);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDef___n_expr__eq[] = "parser_prod::AClosureDef::(parser_nodes::AClosureDef::n_expr=)";
+void parser___parser_prod___AClosureDef___n_expr__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10555;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___n_expr__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10557 */
+  ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10558 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:10559 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10559);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDef___n_label__eq[] = "parser_prod::AClosureDef::(parser_nodes::ALabelable::n_label=)";
+void parser___parser_prod___AClosureDef___n_label__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10562;
+  fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___n_label__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10564 */
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10565 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:10566 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10566);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AClosureDef___visit_all[] = "parser_prod::AClosureDef::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -45544,7 +55687,7 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8319;
+  fra.me.line = 10571;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -45555,33 +55698,33 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8319 */
+  /* parser/parser_prod.nit:10571 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8321 */
+  /* parser/parser_prod.nit:10573 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 8321);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_parser___parser_prod, 10573);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:8322 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:10574 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8322);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10574);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:8323 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:10575 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 8323);
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 10575);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AClosureDef___visit_all_1));
-  /* parser/parser_prod.nit:8326 */
+  /* parser/parser_prod.nit:10578 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -45597,16 +55740,16 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8327 */
+    /* parser/parser_prod.nit:10579 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast TKwdo*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8327);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10579);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:8329 */
+  /* parser/parser_prod.nit:10581 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -45622,16 +55765,16 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8330 */
+    /* parser/parser_prod.nit:10582 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8330);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10582);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:8332 */
+  /* parser/parser_prod.nit:10584 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -45647,14 +55790,14 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8333 */
+    /* parser/parser_prod.nit:10585 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8333);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10585);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -45675,20 +55818,20 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8324 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:10576 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ASimpleClosureId___empty_init[] = "parser_prod::ASimpleClosureId::empty_init";
 void parser___parser_prod___ASimpleClosureId___empty_init(val_t p0, int* init_table){
-  int itpos269 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId].i;
+  int itpos268 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos269]) return;
+  if (init_table[itpos268]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8338;
+  fra.me.line = 10590;
   fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -45696,19 +55839,19 @@ void parser___parser_prod___ASimpleClosureId___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos269] = 1;
+  init_table[itpos268] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid[] = "parser_prod::ASimpleClosureId::init_asimpleclosureid";
 void parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0, val_t p1, int* init_table){
-  int itpos270 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId].i;
+  int itpos269 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos270]) return;
+  if (init_table[itpos269]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8340;
+  fra.me.line = 10592;
   fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -45718,28 +55861,28 @@ void parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0, v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8340 */
+  /* parser/parser_prod.nit:10592 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8344 */
+  /* parser/parser_prod.nit:10596 */
   CALL_parser___parser_prod___ASimpleClosureId___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8345 */
+  /* parser/parser_prod.nit:10597 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8345);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10597);
   }
   ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8346 */
+  /* parser/parser_prod.nit:10598 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8346);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10598);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos270] = 1;
+  init_table[itpos269] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASimpleClosureId___replace_child[] = "parser_prod::ASimpleClosureId::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASimpleClosureId___replace_child[] = "parser_prod::ASimpleClosureId::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASimpleClosureId___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;
@@ -45747,7 +55890,7 @@ void parser___parser_prod___ASimpleClosureId___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8349;
+  fra.me.line = 10601;
   fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -45759,11 +55902,11 @@ void parser___parser_prod___ASimpleClosureId___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8351 */
+  /* parser/parser_prod.nit:10603 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8351);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10603);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -45773,7 +55916,189 @@ void parser___parser_prod___ASimpleClosureId___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8352 */
+    /* parser/parser_prod.nit:10604 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:10605 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10605);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10606 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10606);
+      }
+      /* parser/parser_prod.nit:10607 */
+      ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:10609 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10609);
+    }
+    /* parser/parser_prod.nit:10611 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASimpleClosureId___n_id__eq[] = "parser_prod::ASimpleClosureId::(parser_nodes::ASimpleClosureId::n_id=)";
+void parser___parser_prod___ASimpleClosureId___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10615;
+  fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10617 */
+  ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10618 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASimpleClosureId___visit_all[] = "parser_prod::ASimpleClosureId::(parser_nodes::ANode::visit_all)";
+void parser___parser_prod___ASimpleClosureId___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___parser_prod;
+  fra.me.line = 10622;
+  fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10624 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10624);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABreakClosureId___empty_init[] = "parser_prod::ABreakClosureId::empty_init";
+void parser___parser_prod___ABreakClosureId___empty_init(val_t p0, int* init_table){
+  int itpos270 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos270]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10628;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos270] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABreakClosureId___init_abreakclosureid[] = "parser_prod::ABreakClosureId::init_abreakclosureid";
+void parser___parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0, val_t p1, int* init_table){
+  int itpos271 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos271]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10630;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___init_abreakclosureid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10630 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* parser/parser_prod.nit:10634 */
+  CALL_parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
+  /* parser/parser_prod.nit:10635 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10635);
+  }
+  ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[2]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10636 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10636);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos271] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ABreakClosureId___replace_child[] = "parser_prod::ABreakClosureId::(parser_nodes::ANode::replace_child)";
+void parser___parser_prod___ABreakClosureId___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;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10639;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:10641 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 10641);
+  }
+  fra.me.REG[3] = ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:10642 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -45788,40 +56113,39 @@ void parser___parser_prod___ASimpleClosureId___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8353 */
+      /* parser/parser_prod.nit:10643 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8353);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10643);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8354 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10644 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast TKwbreak*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8354);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10644);
       }
-      /* parser/parser_prod.nit:8355 */
-      ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[2];
+      /* parser/parser_prod.nit:10645 */
+      ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8357 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8357);
+      /* parser/parser_prod.nit:10647 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10647);
     }
-    /* parser/parser_prod.nit:8359 */
+    /* parser/parser_prod.nit:10649 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASimpleClosureId___visit_all[] = "parser_prod::ASimpleClosureId::(parser_prod::ANode::visit_all)";
-void parser___parser_prod___ASimpleClosureId___visit_all(val_t p0, val_t p1){
+static const char LOCATE_parser___parser_prod___ABreakClosureId___n_kwbreak__eq[] = "parser_prod::ABreakClosureId::(parser_nodes::ABreakClosureId::n_kwbreak=)";
+void parser___parser_prod___ABreakClosureId___n_kwbreak__eq(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___parser_prod;
-  fra.me.line = 8363;
-  fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___visit_all;
+  fra.me.line = 10653;
+  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___n_kwbreak__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
@@ -45829,158 +56153,21 @@ void parser___parser_prod___ASimpleClosureId___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8365 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8365);
-  }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ABreakClosureId___empty_init[] = "parser_prod::ABreakClosureId::empty_init";
-void parser___parser_prod___ABreakClosureId___empty_init(val_t p0, int* init_table){
-  int itpos271 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos271]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8369;
-  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:10655 */
+  ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10656 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos271] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ABreakClosureId___init_abreakclosureid[] = "parser_prod::ABreakClosureId::init_abreakclosureid";
-void parser___parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0, val_t p1, int* init_table){
-  int itpos272 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos272]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8371;
-  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___init_abreakclosureid;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8371 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8375 */
-  CALL_parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8376 */
-  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8376);
-  }
-  ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8377 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8377);
-  }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  init_table[itpos272] = 1;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ABreakClosureId___replace_child[] = "parser_prod::ABreakClosureId::(parser_prod::ANode::replace_child)";
-void parser___parser_prod___ABreakClosureId___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;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8380;
-  fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___replace_child;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8382 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 8382);
-  }
-  fra.me.REG[3] = ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8383 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8384 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8384);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8385 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast TKwbreak*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8385);
-      }
-      /* parser/parser_prod.nit:8386 */
-      ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:8388 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8388);
-    }
-    /* parser/parser_prod.nit:8390 */
-    goto label1;
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___ABreakClosureId___visit_all[] = "parser_prod::ABreakClosureId::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ABreakClosureId___visit_all[] = "parser_prod::ABreakClosureId::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ABreakClosureId___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___parser_prod;
-  fra.me.line = 8394;
+  fra.me.line = 10660;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -45989,26 +56176,26 @@ void parser___parser_prod___ABreakClosureId___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8396 */
+  /* parser/parser_prod.nit:10662 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 8396);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_parser___parser_prod, 10662);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AModuleName___empty_init[] = "parser_prod::AModuleName::empty_init";
 void parser___parser_prod___AModuleName___empty_init(val_t p0, int* init_table){
-  int itpos273 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuleName].i;
+  int itpos272 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuleName].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos273]) return;
+  if (init_table[itpos272]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8400;
+  fra.me.line = 10666;
   fra.me.meth = LOCATE_parser___parser_prod___AModuleName___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -46016,20 +56203,20 @@ void parser___parser_prod___AModuleName___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos273] = 1;
+  init_table[itpos272] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AModuleName___init_amodulename[] = "parser_prod::AModuleName::init_amodulename";
 void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos274 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuleName].i;
+  int itpos273 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuleName].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos274]) return;
+  if (init_table[itpos273]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8402;
+  fra.me.line = 10668;
   fra.me.meth = LOCATE_parser___parser_prod___AModuleName___init_amodulename;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -46043,13 +56230,13 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8402 */
+  /* parser/parser_prod.nit:10668 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8408 */
+  /* parser/parser_prod.nit:10674 */
   CALL_parser___parser_prod___AModuleName___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:8409 */
+  /* parser/parser_prod.nit:10675 */
   ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8410 */
+  /* parser/parser_prod.nit:10676 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -46064,29 +56251,29 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8411 */
+    /* parser/parser_prod.nit:10677 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8411);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10677);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModuleName___init_amodulename_1));
-  /* parser/parser_prod.nit:8418 */
+  /* parser/parser_prod.nit:10684 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8418);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10684);
   }
   ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8419 */
+  /* parser/parser_prod.nit:10685 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8419);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10685);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos274] = 1;
+  init_table[itpos273] = 1;
   return;
 }
   void OC_parser___parser_prod___AModuleName___init_amodulename_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -46094,7 +56281,7 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:8413 */
+    /* parser/parser_prod.nit:10679 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -46108,26 +56295,26 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8414 */
+    /* parser/parser_prod.nit:10680 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8414);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10680);
     }
-    /* parser/parser_prod.nit:8415 */
+    /* parser/parser_prod.nit:10681 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 8415);
+      nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 10681);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AModuleName____n_path(closctx->REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:8416 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
+    /* parser/parser_prod.nit:10682 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AModuleName___replace_child[] = "parser_prod::AModuleName::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AModuleName___replace_child[] = "parser_prod::AModuleName::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AModuleName___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;
@@ -46138,7 +56325,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8422;
+  fra.me.line = 10688;
   fra.me.meth = LOCATE_parser___parser_prod___AModuleName___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46150,7 +56337,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8424 */
+  /* parser/parser_prod.nit:10690 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -46165,7 +56352,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8425 */
+    /* parser/parser_prod.nit:10691 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -46180,71 +56367,65 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8426 */
+      /* parser/parser_prod.nit:10692 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8426);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10692);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8427 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10693 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast TQuad*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8427);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10693);
       }
-      /* parser/parser_prod.nit:8428 */
+      /* parser/parser_prod.nit:10694 */
       ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8430 */
+      /* parser/parser_prod.nit:10696 */
       ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:8432 */
+    /* parser/parser_prod.nit:10698 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8434 */
+  /* parser/parser_prod.nit:10700 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 8434);
+    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 10700);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:8434 */
+      /* parser/parser_prod.nit:10700 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:8435 */
+      /* parser/parser_prod.nit:10701 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 8435);
+        nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 10701);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:8436 */
+        /* parser/parser_prod.nit:10702 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -46259,56 +56440,56 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:8437 */
+          /* parser/parser_prod.nit:10703 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8437);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10703);
           }
-          /* parser/parser_prod.nit:8438 */
+          /* parser/parser_prod.nit:10704 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 8438);
+            nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 10704);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:8439 */
+          /* parser/parser_prod.nit:10705 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8439);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10705);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:8441 */
+          /* parser/parser_prod.nit:10707 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 8441);
+            nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 10707);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:8443 */
+        /* parser/parser_prod.nit:10709 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:8446 */
+  /* parser/parser_prod.nit:10712 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8446);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10712);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -46318,7 +56499,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8447 */
+    /* parser/parser_prod.nit:10713 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -46333,32 +56514,98 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8448 */
+      /* parser/parser_prod.nit:10714 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8448);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10714);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8449 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10715 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8449);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10715);
       }
-      /* parser/parser_prod.nit:8450 */
+      /* parser/parser_prod.nit:10716 */
       ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8452 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8452);
+      /* parser/parser_prod.nit:10718 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10718);
     }
-    /* parser/parser_prod.nit:8454 */
+    /* parser/parser_prod.nit:10720 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AModuleName___visit_all[] = "parser_prod::AModuleName::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AModuleName___n_quad__eq[] = "parser_prod::AModuleName::(parser_nodes::AModuleName::n_quad=)";
+void parser___parser_prod___AModuleName___n_quad__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10724;
+  fra.me.meth = LOCATE_parser___parser_prod___AModuleName___n_quad__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10726 */
+  ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10727 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:10728 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10728);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModuleName___n_id__eq[] = "parser_prod::AModuleName::(parser_nodes::AModuleName::n_id=)";
+void parser___parser_prod___AModuleName___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10731;
+  fra.me.meth = LOCATE_parser___parser_prod___AModuleName___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10733 */
+  ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10734 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AModuleName___visit_all[] = "parser_prod::AModuleName::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -46366,7 +56613,7 @@ void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8458;
+  fra.me.line = 10738;
   fra.me.meth = LOCATE_parser___parser_prod___AModuleName___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46377,9 +56624,9 @@ void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8458 */
+  /* parser/parser_prod.nit:10738 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8460 */
+  /* parser/parser_prod.nit:10740 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -46395,31 +56642,31 @@ void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8461 */
+    /* parser/parser_prod.nit:10741 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast TQuad*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8461);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10741);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:8463 */
+  /* parser/parser_prod.nit:10743 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 8463);
+    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 10743);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AModuleName___visit_all_1));
-  /* parser/parser_prod.nit:8466 */
+  /* parser/parser_prod.nit:10746 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8466);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 10746);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -46439,20 +56686,20 @@ void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8464 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:10744 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AExternCalls___empty_init[] = "parser_prod::AExternCalls::empty_init";
 void parser___parser_prod___AExternCalls___empty_init(val_t p0, int* init_table){
-  int itpos275 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCalls].i;
+  int itpos274 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCalls].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos275]) return;
+  if (init_table[itpos274]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8470;
+  fra.me.line = 10750;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCalls___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -46460,19 +56707,19 @@ void parser___parser_prod___AExternCalls___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos275] = 1;
+  init_table[itpos274] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternCalls___init_aexterncalls[] = "parser_prod::AExternCalls::init_aexterncalls";
 void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos276 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCalls].i;
+  int itpos275 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCalls].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos276]) return;
+  if (init_table[itpos275]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8472;
+  fra.me.line = 10752;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCalls___init_aexterncalls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46484,26 +56731,26 @@ void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8472 */
+  /* parser/parser_prod.nit:10752 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8477 */
+  /* parser/parser_prod.nit:10757 */
   CALL_parser___parser_prod___AExternCalls___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:8478 */
+  /* parser/parser_prod.nit:10758 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8478);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10758);
   }
   ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8479 */
+  /* parser/parser_prod.nit:10759 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8479);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10759);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AExternCalls___init_aexterncalls_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos276] = 1;
+  init_table[itpos275] = 1;
   return;
 }
   void OC_parser___parser_prod___AExternCalls___init_aexterncalls_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -46511,7 +56758,7 @@ void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:8480 */
+    /* parser/parser_prod.nit:10760 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -46525,26 +56772,26 @@ void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8481 */
+    /* parser/parser_prod.nit:10761 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast AExternCall*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8481);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10761);
     }
-    /* parser/parser_prod.nit:8482 */
+    /* parser/parser_prod.nit:10762 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(closctx->REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 8482);
+      nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 10762);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(closctx->REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:8483 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
+    /* parser/parser_prod.nit:10763 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AExternCalls___replace_child[] = "parser_prod::AExternCalls::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AExternCalls___replace_child[] = "parser_prod::AExternCalls::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AExternCalls___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;
@@ -46555,7 +56802,7 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8487;
+  fra.me.line = 10767;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCalls___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46567,11 +56814,11 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8489 */
+  /* parser/parser_prod.nit:10769 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 8489);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 10769);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -46581,7 +56828,7 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8490 */
+    /* parser/parser_prod.nit:10770 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -46596,71 +56843,65 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8491 */
+      /* parser/parser_prod.nit:10771 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8491);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10771);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8492 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10772 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast TKwimport*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8492);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10772);
       }
-      /* parser/parser_prod.nit:8493 */
+      /* parser/parser_prod.nit:10773 */
       ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8495 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8495);
+      /* parser/parser_prod.nit:10775 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10775);
     }
-    /* parser/parser_prod.nit:8497 */
+    /* parser/parser_prod.nit:10777 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8499 */
+  /* parser/parser_prod.nit:10779 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 8499);
+    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 10779);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:8499 */
+      /* parser/parser_prod.nit:10779 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:8500 */
+      /* parser/parser_prod.nit:10780 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 8500);
+        nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 10780);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:8501 */
+        /* parser/parser_prod.nit:10781 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -46675,47 +56916,47 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:8502 */
+          /* parser/parser_prod.nit:10782 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast AExternCall*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8502);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10782);
           }
-          /* parser/parser_prod.nit:8503 */
+          /* parser/parser_prod.nit:10783 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 8503);
+            nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 10783);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:8504 */
+          /* parser/parser_prod.nit:10784 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8504);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10784);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:8506 */
+          /* parser/parser_prod.nit:10786 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 8506);
+            nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 10786);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:8508 */
+        /* parser/parser_prod.nit:10788 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -46724,14 +56965,36 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternCalls___visit_all[] = "parser_prod::AExternCalls::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExternCalls___n_kwimport__eq[] = "parser_prod::AExternCalls::(parser_nodes::AExternCalls::n_kwimport=)";
+void parser___parser_prod___AExternCalls___n_kwimport__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10793;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternCalls___n_kwimport__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10795 */
+  ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10796 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternCalls___visit_all[] = "parser_prod::AExternCalls::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExternCalls___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8513;
+  fra.me.line = 10800;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCalls___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -46741,19 +57004,19 @@ void parser___parser_prod___AExternCalls___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8515 */
+  /* parser/parser_prod.nit:10802 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 8515);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_parser___parser_prod, 10802);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8516 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:10803 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 8516);
+    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 10803);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AExternCalls___visit_all_1));
@@ -46776,20 +57039,20 @@ void parser___parser_prod___AExternCalls___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8517 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:10804 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AExternCall___empty_init[] = "parser_prod::AExternCall::empty_init";
 void parser___parser_prod___AExternCall___empty_init(val_t p0, int* init_table){
-  int itpos277 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCall].i;
+  int itpos276 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos277]) return;
+  if (init_table[itpos276]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8522;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -46797,37 +57060,37 @@ void parser___parser_prod___AExternCall___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos277] = 1;
+  init_table[itpos276] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternCall___init_aexterncall[] = "parser_prod::AExternCall::init_aexterncall";
 void parser___parser_prod___AExternCall___init_aexterncall(val_t p0, int* init_table){
-  int itpos278 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCall].i;
+  int itpos277 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos278]) return;
+  if (init_table[itpos277]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8524;
+  fra.me.line = 10811;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* parser/parser_prod.nit:8526 */
+  /* parser/parser_prod.nit:10813 */
   CALL_parser___parser_prod___AExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
-  init_table[itpos278] = 1;
+  init_table[itpos277] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternCall___replace_child[] = "parser_prod::AExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AExternCall___replace_child[] = "parser_prod::AExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AExternCall___replace_child(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8529;
+  fra.me.line = 10816;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -46841,13 +57104,13 @@ void parser___parser_prod___AExternCall___replace_child(val_t p0, val_t p1, val_
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternCall___visit_all[] = "parser_prod::AExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExternCall___visit_all[] = "parser_prod::AExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExternCall___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8533;
+  fra.me.line = 10822;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -46861,13 +57124,13 @@ void parser___parser_prod___AExternCall___visit_all(val_t p0, val_t p1){
 }
 static const char LOCATE_parser___parser_prod___ASuperExternCall___empty_init[] = "parser_prod::ASuperExternCall::empty_init";
 void parser___parser_prod___ASuperExternCall___empty_init(val_t p0, int* init_table){
-  int itpos279 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall].i;
+  int itpos278 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos279]) return;
+  if (init_table[itpos278]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8538;
+  fra.me.line = 10827;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -46875,19 +57138,19 @@ void parser___parser_prod___ASuperExternCall___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos279] = 1;
+  init_table[itpos278] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ASuperExternCall___init_asuperexterncall[] = "parser_prod::ASuperExternCall::init_asuperexterncall";
 void parser___parser_prod___ASuperExternCall___init_asuperexterncall(val_t p0, val_t p1, int* init_table){
-  int itpos280 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall].i;
+  int itpos279 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos280]) return;
+  if (init_table[itpos279]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8540;
+  fra.me.line = 10829;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExternCall___init_asuperexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -46897,28 +57160,28 @@ void parser___parser_prod___ASuperExternCall___init_asuperexterncall(val_t p0, v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8540 */
+  /* parser/parser_prod.nit:10829 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8544 */
+  /* parser/parser_prod.nit:10833 */
   CALL_parser___parser_prod___ASuperExternCall___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8545 */
+  /* parser/parser_prod.nit:10834 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8545);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10834);
   }
   ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8546 */
+  /* parser/parser_prod.nit:10835 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8546);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10835);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos280] = 1;
+  init_table[itpos279] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperExternCall___replace_child[] = "parser_prod::ASuperExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ASuperExternCall___replace_child[] = "parser_prod::ASuperExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ASuperExternCall___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;
@@ -46926,7 +57189,7 @@ void parser___parser_prod___ASuperExternCall___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8549;
+  fra.me.line = 10838;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -46938,11 +57201,11 @@ void parser___parser_prod___ASuperExternCall___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8551 */
+  /* parser/parser_prod.nit:10840 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 8551);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 10840);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -46952,7 +57215,7 @@ void parser___parser_prod___ASuperExternCall___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8552 */
+    /* parser/parser_prod.nit:10841 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -46967,39 +57230,61 @@ void parser___parser_prod___ASuperExternCall___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8553 */
+      /* parser/parser_prod.nit:10842 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8553);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10842);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8554 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10843 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast TKwsuper*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8554);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10843);
       }
-      /* parser/parser_prod.nit:8555 */
+      /* parser/parser_prod.nit:10844 */
       ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8557 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8557);
+      /* parser/parser_prod.nit:10846 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10846);
     }
-    /* parser/parser_prod.nit:8559 */
+    /* parser/parser_prod.nit:10848 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ASuperExternCall___visit_all[] = "parser_prod::ASuperExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ASuperExternCall___n_kwsuper__eq[] = "parser_prod::ASuperExternCall::(parser_nodes::ASuperExternCall::n_kwsuper=)";
+void parser___parser_prod___ASuperExternCall___n_kwsuper__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10852;
+  fra.me.meth = LOCATE_parser___parser_prod___ASuperExternCall___n_kwsuper__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10854 */
+  ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10855 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ASuperExternCall___visit_all[] = "parser_prod::ASuperExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ASuperExternCall___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___parser_prod;
-  fra.me.line = 8563;
+  fra.me.line = 10859;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -47008,26 +57293,26 @@ void parser___parser_prod___ASuperExternCall___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8565 */
+  /* parser/parser_prod.nit:10861 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 8565);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_parser___parser_prod, 10861);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALocalPropExternCall___empty_init[] = "parser_prod::ALocalPropExternCall::empty_init";
 void parser___parser_prod___ALocalPropExternCall___empty_init(val_t p0, int* init_table){
-  int itpos281 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall].i;
+  int itpos280 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos281]) return;
+  if (init_table[itpos280]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8569;
+  fra.me.line = 10865;
   fra.me.meth = LOCATE_parser___parser_prod___ALocalPropExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -47035,19 +57320,19 @@ void parser___parser_prod___ALocalPropExternCall___empty_init(val_t p0, int* ini
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos281] = 1;
+  init_table[itpos280] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall[] = "parser_prod::ALocalPropExternCall::init_alocalpropexterncall";
 void parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val_t p0, val_t p1, int* init_table){
-  int itpos282 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall].i;
+  int itpos281 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos282]) return;
+  if (init_table[itpos281]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8571;
+  fra.me.line = 10867;
   fra.me.meth = LOCATE_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -47057,28 +57342,28 @@ void parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8571 */
+  /* parser/parser_prod.nit:10867 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8575 */
+  /* parser/parser_prod.nit:10871 */
   CALL_parser___parser_prod___ALocalPropExternCall___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8576 */
+  /* parser/parser_prod.nit:10872 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8576);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10872);
   }
   ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8577 */
+  /* parser/parser_prod.nit:10873 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8577);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10873);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos282] = 1;
+  init_table[itpos281] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALocalPropExternCall___replace_child[] = "parser_prod::ALocalPropExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ALocalPropExternCall___replace_child[] = "parser_prod::ALocalPropExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ALocalPropExternCall___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;
@@ -47086,7 +57371,7 @@ void parser___parser_prod___ALocalPropExternCall___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8580;
+  fra.me.line = 10876;
   fra.me.meth = LOCATE_parser___parser_prod___ALocalPropExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -47098,11 +57383,11 @@ void parser___parser_prod___ALocalPropExternCall___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8582 */
+  /* parser/parser_prod.nit:10878 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 8582);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 10878);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47112,7 +57397,7 @@ void parser___parser_prod___ALocalPropExternCall___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8583 */
+    /* parser/parser_prod.nit:10879 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47127,39 +57412,61 @@ void parser___parser_prod___ALocalPropExternCall___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8584 */
+      /* parser/parser_prod.nit:10880 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8584);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10880);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8585 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10881 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8585);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10881);
       }
-      /* parser/parser_prod.nit:8586 */
+      /* parser/parser_prod.nit:10882 */
       ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8588 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8588);
+      /* parser/parser_prod.nit:10884 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10884);
     }
-    /* parser/parser_prod.nit:8590 */
+    /* parser/parser_prod.nit:10886 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ALocalPropExternCall___visit_all[] = "parser_prod::ALocalPropExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ALocalPropExternCall___n_methid__eq[] = "parser_prod::ALocalPropExternCall::(parser_nodes::ALocalPropExternCall::n_methid=)";
+void parser___parser_prod___ALocalPropExternCall___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10890;
+  fra.me.meth = LOCATE_parser___parser_prod___ALocalPropExternCall___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10892 */
+  ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10893 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ALocalPropExternCall___visit_all[] = "parser_prod::ALocalPropExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ALocalPropExternCall___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___parser_prod;
-  fra.me.line = 8594;
+  fra.me.line = 10897;
   fra.me.meth = LOCATE_parser___parser_prod___ALocalPropExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -47168,26 +57475,26 @@ void parser___parser_prod___ALocalPropExternCall___visit_all(val_t p0, val_t p1)
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8596 */
+  /* parser/parser_prod.nit:10899 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 8596);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 10899);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFullPropExternCall___empty_init[] = "parser_prod::AFullPropExternCall::empty_init";
 void parser___parser_prod___AFullPropExternCall___empty_init(val_t p0, int* init_table){
-  int itpos283 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall].i;
+  int itpos282 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos283]) return;
+  if (init_table[itpos282]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8600;
+  fra.me.line = 10903;
   fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -47195,20 +57502,20 @@ void parser___parser_prod___AFullPropExternCall___empty_init(val_t p0, int* init
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos283] = 1;
+  init_table[itpos282] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall[] = "parser_prod::AFullPropExternCall::init_afullpropexterncall";
 void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos284 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall].i;
+  int itpos283 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos284]) return;
+  if (init_table[itpos283]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8602;
+  fra.me.line = 10905;
   fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -47222,26 +57529,26 @@ void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8602 */
+  /* parser/parser_prod.nit:10905 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8608 */
+  /* parser/parser_prod.nit:10911 */
   CALL_parser___parser_prod___AFullPropExternCall___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:8609 */
+  /* parser/parser_prod.nit:10912 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8609);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10912);
   }
   ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8610 */
+  /* parser/parser_prod.nit:10913 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8610);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10913);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:8611 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:10914 */
   ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8612 */
+  /* parser/parser_prod.nit:10915 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -47256,31 +57563,31 @@ void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8613 */
+    /* parser/parser_prod.nit:10916 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8613);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10916);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* parser/parser_prod.nit:8615 */
+  /* parser/parser_prod.nit:10918 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8615);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10918);
   }
   ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8616 */
+  /* parser/parser_prod.nit:10919 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8616);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10919);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos284] = 1;
+  init_table[itpos283] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFullPropExternCall___replace_child[] = "parser_prod::AFullPropExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AFullPropExternCall___replace_child[] = "parser_prod::AFullPropExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AFullPropExternCall___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;
@@ -47288,7 +57595,7 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8619;
+  fra.me.line = 10922;
   fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -47300,11 +57607,11 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8621 */
+  /* parser/parser_prod.nit:10924 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 8621);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 10924);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47314,7 +57621,7 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8622 */
+    /* parser/parser_prod.nit:10925 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47329,28 +57636,28 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8623 */
+      /* parser/parser_prod.nit:10926 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8623);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10926);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8624 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10927 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8624);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10927);
       }
-      /* parser/parser_prod.nit:8625 */
+      /* parser/parser_prod.nit:10928 */
       ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8627 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8627);
+      /* parser/parser_prod.nit:10930 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10930);
     }
-    /* parser/parser_prod.nit:8629 */
+    /* parser/parser_prod.nit:10932 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8631 */
+  /* parser/parser_prod.nit:10934 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -47365,7 +57672,7 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8632 */
+    /* parser/parser_prod.nit:10935 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47380,32 +57687,32 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8633 */
+      /* parser/parser_prod.nit:10936 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8633);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10936);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8634 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10937 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast TQuad*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8634);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10937);
       }
-      /* parser/parser_prod.nit:8635 */
+      /* parser/parser_prod.nit:10938 */
       ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8637 */
+      /* parser/parser_prod.nit:10940 */
       ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:8639 */
+    /* parser/parser_prod.nit:10942 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8641 */
+  /* parser/parser_prod.nit:10944 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 8641);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 10944);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47415,7 +57722,7 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8642 */
+    /* parser/parser_prod.nit:10945 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47430,32 +57737,120 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8643 */
+      /* parser/parser_prod.nit:10946 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8643);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10946);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8644 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:10947 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast AMethid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8644);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 10947);
       }
-      /* parser/parser_prod.nit:8645 */
+      /* parser/parser_prod.nit:10948 */
       ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8647 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8647);
+      /* parser/parser_prod.nit:10950 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 10950);
     }
-    /* parser/parser_prod.nit:8649 */
+    /* parser/parser_prod.nit:10952 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AFullPropExternCall___visit_all[] = "parser_prod::AFullPropExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AFullPropExternCall___n_classid__eq[] = "parser_prod::AFullPropExternCall::(parser_nodes::AFullPropExternCall::n_classid=)";
+void parser___parser_prod___AFullPropExternCall___n_classid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10956;
+  fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___n_classid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10958 */
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10959 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFullPropExternCall___n_quad__eq[] = "parser_prod::AFullPropExternCall::(parser_nodes::AFullPropExternCall::n_quad=)";
+void parser___parser_prod___AFullPropExternCall___n_quad__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10961;
+  fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___n_quad__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10963 */
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10964 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:10965 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10965);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFullPropExternCall___n_methid__eq[] = "parser_prod::AFullPropExternCall::(parser_nodes::AFullPropExternCall::n_methid=)";
+void parser___parser_prod___AFullPropExternCall___n_methid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 10968;
+  fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___n_methid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:10970 */
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:10971 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AFullPropExternCall___visit_all[] = "parser_prod::AFullPropExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -47463,7 +57858,7 @@ void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8653;
+  fra.me.line = 10975;
   fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -47474,17 +57869,17 @@ void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8653 */
+  /* parser/parser_prod.nit:10975 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8655 */
+  /* parser/parser_prod.nit:10977 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 8655);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 10977);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:8656 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:10978 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -47500,35 +57895,35 @@ void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8657 */
+    /* parser/parser_prod.nit:10979 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast TQuad*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8657);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10979);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:8659 */
+  /* parser/parser_prod.nit:10981 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 8659);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_parser___parser_prod, 10981);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInitPropExternCall___empty_init[] = "parser_prod::AInitPropExternCall::empty_init";
 void parser___parser_prod___AInitPropExternCall___empty_init(val_t p0, int* init_table){
-  int itpos285 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall].i;
+  int itpos284 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos285]) return;
+  if (init_table[itpos284]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8663;
+  fra.me.line = 10985;
   fra.me.meth = LOCATE_parser___parser_prod___AInitPropExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -47536,19 +57931,19 @@ void parser___parser_prod___AInitPropExternCall___empty_init(val_t p0, int* init
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos285] = 1;
+  init_table[itpos284] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall[] = "parser_prod::AInitPropExternCall::init_ainitpropexterncall";
 void parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(val_t p0, val_t p1, int* init_table){
-  int itpos286 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall].i;
+  int itpos285 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos286]) return;
+  if (init_table[itpos285]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8665;
+  fra.me.line = 10987;
   fra.me.meth = LOCATE_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -47558,28 +57953,28 @@ void parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8665 */
+  /* parser/parser_prod.nit:10987 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8669 */
+  /* parser/parser_prod.nit:10991 */
   CALL_parser___parser_prod___AInitPropExternCall___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:8670 */
+  /* parser/parser_prod.nit:10992 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8670);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 10992);
   }
   ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8671 */
+  /* parser/parser_prod.nit:10993 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8671);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 10993);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos286] = 1;
+  init_table[itpos285] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInitPropExternCall___replace_child[] = "parser_prod::AInitPropExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AInitPropExternCall___replace_child[] = "parser_prod::AInitPropExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AInitPropExternCall___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;
@@ -47587,7 +57982,7 @@ void parser___parser_prod___AInitPropExternCall___replace_child(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8674;
+  fra.me.line = 10996;
   fra.me.meth = LOCATE_parser___parser_prod___AInitPropExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -47599,11 +57994,11 @@ void parser___parser_prod___AInitPropExternCall___replace_child(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8676 */
+  /* parser/parser_prod.nit:10998 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 8676);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 10998);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47613,7 +58008,7 @@ void parser___parser_prod___AInitPropExternCall___replace_child(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8677 */
+    /* parser/parser_prod.nit:10999 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47628,39 +58023,61 @@ void parser___parser_prod___AInitPropExternCall___replace_child(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8678 */
+      /* parser/parser_prod.nit:11000 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8678);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11000);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8679 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11001 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8679);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11001);
       }
-      /* parser/parser_prod.nit:8680 */
+      /* parser/parser_prod.nit:11002 */
       ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8682 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8682);
+      /* parser/parser_prod.nit:11004 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11004);
     }
-    /* parser/parser_prod.nit:8684 */
+    /* parser/parser_prod.nit:11006 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInitPropExternCall___visit_all[] = "parser_prod::AInitPropExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AInitPropExternCall___n_classid__eq[] = "parser_prod::AInitPropExternCall::(parser_nodes::AInitPropExternCall::n_classid=)";
+void parser___parser_prod___AInitPropExternCall___n_classid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11010;
+  fra.me.meth = LOCATE_parser___parser_prod___AInitPropExternCall___n_classid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11012 */
+  ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11013 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInitPropExternCall___visit_all[] = "parser_prod::AInitPropExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AInitPropExternCall___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___parser_prod;
-  fra.me.line = 8688;
+  fra.me.line = 11017;
   fra.me.meth = LOCATE_parser___parser_prod___AInitPropExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -47669,26 +58086,26 @@ void parser___parser_prod___AInitPropExternCall___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8690 */
+  /* parser/parser_prod.nit:11019 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 8690);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_parser___parser_prod, 11019);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACastAsExternCall___empty_init[] = "parser_prod::ACastAsExternCall::empty_init";
 void parser___parser_prod___ACastAsExternCall___empty_init(val_t p0, int* init_table){
-  int itpos287 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall].i;
+  int itpos286 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos287]) return;
+  if (init_table[itpos286]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8694;
+  fra.me.line = 11023;
   fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -47696,19 +58113,19 @@ void parser___parser_prod___ACastAsExternCall___empty_init(val_t p0, int* init_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos287] = 1;
+  init_table[itpos286] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ACastAsExternCall___init_acastasexterncall[] = "parser_prod::ACastAsExternCall::init_acastasexterncall";
 void parser___parser_prod___ACastAsExternCall___init_acastasexterncall(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos288 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall].i;
+  int itpos287 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos288]) return;
+  if (init_table[itpos287]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8696;
+  fra.me.line = 11025;
   fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___init_acastasexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -47722,54 +58139,54 @@ void parser___parser_prod___ACastAsExternCall___init_acastasexterncall(val_t p0,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8696 */
+  /* parser/parser_prod.nit:11025 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8702 */
+  /* parser/parser_prod.nit:11031 */
   CALL_parser___parser_prod___ACastAsExternCall___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:8703 */
+  /* parser/parser_prod.nit:11032 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8703);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11032);
   }
   ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8704 */
+  /* parser/parser_prod.nit:11033 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8704);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11033);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:8705 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:11034 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8705);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11034);
   }
   ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8706 */
+  /* parser/parser_prod.nit:11035 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8706);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11035);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:8707 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:11036 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8707);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11036);
   }
   ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8708 */
+  /* parser/parser_prod.nit:11037 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8708);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11037);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos288] = 1;
+  init_table[itpos287] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACastAsExternCall___replace_child[] = "parser_prod::ACastAsExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ACastAsExternCall___replace_child[] = "parser_prod::ACastAsExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ACastAsExternCall___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;
@@ -47777,7 +58194,7 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8711;
+  fra.me.line = 11040;
   fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -47789,11 +58206,11 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8713 */
+  /* parser/parser_prod.nit:11042 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_parser___parser_prod, 8713);
+    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_parser___parser_prod, 11042);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47803,7 +58220,7 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8714 */
+    /* parser/parser_prod.nit:11043 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47818,32 +58235,32 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8715 */
+      /* parser/parser_prod.nit:11044 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8715);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11044);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8716 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11045 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8716);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11045);
       }
-      /* parser/parser_prod.nit:8717 */
+      /* parser/parser_prod.nit:11046 */
       ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8719 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8719);
+      /* parser/parser_prod.nit:11048 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11048);
     }
-    /* parser/parser_prod.nit:8721 */
+    /* parser/parser_prod.nit:11050 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8723 */
+  /* parser/parser_prod.nit:11052 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 8723);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 11052);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47853,7 +58270,7 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8724 */
+    /* parser/parser_prod.nit:11053 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47868,32 +58285,32 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8725 */
+      /* parser/parser_prod.nit:11054 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8725);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11054);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8726 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11055 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast TKwas*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8726);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11055);
       }
-      /* parser/parser_prod.nit:8727 */
+      /* parser/parser_prod.nit:11056 */
       ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8729 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8729);
+      /* parser/parser_prod.nit:11058 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11058);
     }
-    /* parser/parser_prod.nit:8731 */
+    /* parser/parser_prod.nit:11060 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8733 */
+  /* parser/parser_prod.nit:11062 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_parser___parser_prod, 8733);
+    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_parser___parser_prod, 11062);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -47903,7 +58320,7 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8734 */
+    /* parser/parser_prod.nit:11063 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -47918,39 +58335,105 @@ void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8735 */
+      /* parser/parser_prod.nit:11064 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8735);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11064);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8736 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11065 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8736);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11065);
       }
-      /* parser/parser_prod.nit:8737 */
+      /* parser/parser_prod.nit:11066 */
       ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8739 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8739);
+      /* parser/parser_prod.nit:11068 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11068);
     }
-    /* parser/parser_prod.nit:8741 */
+    /* parser/parser_prod.nit:11070 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ACastAsExternCall___visit_all[] = "parser_prod::ACastAsExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ACastAsExternCall___n_from_type__eq[] = "parser_prod::ACastAsExternCall::(parser_nodes::ACastAsExternCall::n_from_type=)";
+void parser___parser_prod___ACastAsExternCall___n_from_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11074;
+  fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___n_from_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11076 */
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11077 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACastAsExternCall___n_kwas__eq[] = "parser_prod::ACastAsExternCall::(parser_nodes::ACastAsExternCall::n_kwas=)";
+void parser___parser_prod___ACastAsExternCall___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11079;
+  fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11081 */
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11082 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACastAsExternCall___n_to_type__eq[] = "parser_prod::ACastAsExternCall::(parser_nodes::ACastAsExternCall::n_to_type=)";
+void parser___parser_prod___ACastAsExternCall___n_to_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11084;
+  fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___n_to_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11086 */
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11087 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ACastAsExternCall___visit_all[] = "parser_prod::ACastAsExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ACastAsExternCall___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8745;
+  fra.me.line = 11091;
   fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -47960,42 +58443,42 @@ void parser___parser_prod___ACastAsExternCall___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8747 */
+  /* parser/parser_prod.nit:11093 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_parser___parser_prod, 8747);
+    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_parser___parser_prod, 11093);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8748 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11094 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 8748);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 11094);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8749 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11095 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_parser___parser_prod, 8749);
+    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_parser___parser_prod, 11095);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsNullableExternCall___empty_init[] = "parser_prod::AAsNullableExternCall::empty_init";
 void parser___parser_prod___AAsNullableExternCall___empty_init(val_t p0, int* init_table){
-  int itpos289 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall].i;
+  int itpos288 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos289]) return;
+  if (init_table[itpos288]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8753;
+  fra.me.line = 11099;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -48003,19 +58486,19 @@ void parser___parser_prod___AAsNullableExternCall___empty_init(val_t p0, int* in
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos289] = 1;
+  init_table[itpos288] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall[] = "parser_prod::AAsNullableExternCall::init_aasnullableexterncall";
 void parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
-  int itpos290 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall].i;
+  int itpos289 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos290]) return;
+  if (init_table[itpos289]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8755;
+  fra.me.line = 11101;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -48029,54 +58512,54 @@ void parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(v
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* parser/parser_prod.nit:8755 */
+  /* parser/parser_prod.nit:11101 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8761 */
+  /* parser/parser_prod.nit:11107 */
   CALL_parser___parser_prod___AAsNullableExternCall___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
-  /* parser/parser_prod.nit:8762 */
+  /* parser/parser_prod.nit:11108 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8762);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11108);
   }
   ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[4]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8763 */
+  /* parser/parser_prod.nit:11109 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8763);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11109);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* parser/parser_prod.nit:8764 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* parser/parser_prod.nit:11110 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8764);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11110);
   }
   ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[4]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8765 */
+  /* parser/parser_prod.nit:11111 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8765);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11111);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* parser/parser_prod.nit:8766 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* parser/parser_prod.nit:11112 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8766);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11112);
   }
   ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[4]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8767 */
+  /* parser/parser_prod.nit:11113 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8767);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11113);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos290] = 1;
+  init_table[itpos289] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsNullableExternCall___replace_child[] = "parser_prod::AAsNullableExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAsNullableExternCall___replace_child[] = "parser_prod::AAsNullableExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAsNullableExternCall___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;
@@ -48084,7 +58567,7 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8770;
+  fra.me.line = 11116;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48096,11 +58579,11 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8772 */
+  /* parser/parser_prod.nit:11118 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 8772);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 11118);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48110,7 +58593,7 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8773 */
+    /* parser/parser_prod.nit:11119 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48125,32 +58608,32 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8774 */
+      /* parser/parser_prod.nit:11120 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8774);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11120);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8775 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11121 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8775);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11121);
       }
-      /* parser/parser_prod.nit:8776 */
+      /* parser/parser_prod.nit:11122 */
       ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8778 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8778);
+      /* parser/parser_prod.nit:11124 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11124);
     }
-    /* parser/parser_prod.nit:8780 */
+    /* parser/parser_prod.nit:11126 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8782 */
+  /* parser/parser_prod.nit:11128 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 8782);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 11128);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48160,7 +58643,7 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8783 */
+    /* parser/parser_prod.nit:11129 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48175,32 +58658,32 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8784 */
+      /* parser/parser_prod.nit:11130 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8784);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11130);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8785 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11131 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast TKwas*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8785);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11131);
       }
-      /* parser/parser_prod.nit:8786 */
+      /* parser/parser_prod.nit:11132 */
       ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8788 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8788);
+      /* parser/parser_prod.nit:11134 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11134);
     }
-    /* parser/parser_prod.nit:8790 */
+    /* parser/parser_prod.nit:11136 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8792 */
+  /* parser/parser_prod.nit:11138 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 8792);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 11138);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48210,7 +58693,7 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8793 */
+    /* parser/parser_prod.nit:11139 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48225,39 +58708,105 @@ void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8794 */
+      /* parser/parser_prod.nit:11140 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8794);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11140);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8795 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11141 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast TKwnullable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8795);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11141);
       }
-      /* parser/parser_prod.nit:8796 */
+      /* parser/parser_prod.nit:11142 */
       ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8798 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8798);
+      /* parser/parser_prod.nit:11144 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11144);
     }
-    /* parser/parser_prod.nit:8800 */
+    /* parser/parser_prod.nit:11146 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsNullableExternCall___visit_all[] = "parser_prod::AAsNullableExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAsNullableExternCall___n_type__eq[] = "parser_prod::AAsNullableExternCall::(parser_nodes::AAsNullableExternCall::n_type=)";
+void parser___parser_prod___AAsNullableExternCall___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11150;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11152 */
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11153 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNullableExternCall___n_kwas__eq[] = "parser_prod::AAsNullableExternCall::(parser_nodes::AAsNullableExternCall::n_kwas=)";
+void parser___parser_prod___AAsNullableExternCall___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11155;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11157 */
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11158 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNullableExternCall___n_kwnullable__eq[] = "parser_prod::AAsNullableExternCall::(parser_nodes::AAsNullableExternCall::n_kwnullable=)";
+void parser___parser_prod___AAsNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11160;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___n_kwnullable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11162 */
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11163 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNullableExternCall___visit_all[] = "parser_prod::AAsNullableExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAsNullableExternCall___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8804;
+  fra.me.line = 11167;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -48267,42 +58816,42 @@ void parser___parser_prod___AAsNullableExternCall___visit_all(val_t p0, val_t p1
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8806 */
+  /* parser/parser_prod.nit:11169 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 8806);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 11169);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8807 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11170 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 8807);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 11170);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8808 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11171 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 8808);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 11171);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___empty_init[] = "parser_prod::AAsNotNullableExternCall::empty_init";
 void parser___parser_prod___AAsNotNullableExternCall___empty_init(val_t p0, int* init_table){
-  int itpos291 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall].i;
+  int itpos290 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos291]) return;
+  if (init_table[itpos290]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8812;
+  fra.me.line = 11175;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -48310,19 +58859,19 @@ void parser___parser_prod___AAsNotNullableExternCall___empty_init(val_t p0, int*
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos291] = 1;
+  init_table[itpos290] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall[] = "parser_prod::AAsNotNullableExternCall::init_aasnotnullableexterncall";
 void parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos292 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall].i;
+  int itpos291 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos292]) return;
+  if (init_table[itpos291]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8814;
+  fra.me.line = 11177;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -48338,67 +58887,67 @@ void parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableextern
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:8814 */
+  /* parser/parser_prod.nit:11177 */
   fra.me.REG[5] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8821 */
+  /* parser/parser_prod.nit:11184 */
   CALL_parser___parser_prod___AAsNotNullableExternCall___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
-  /* parser/parser_prod.nit:8822 */
+  /* parser/parser_prod.nit:11185 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8822);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11185);
   }
   ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[5]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8823 */
+  /* parser/parser_prod.nit:11186 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8823);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11186);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* parser/parser_prod.nit:8824 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* parser/parser_prod.nit:11187 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8824);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11187);
   }
   ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[5]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8825 */
+  /* parser/parser_prod.nit:11188 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8825);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11188);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* parser/parser_prod.nit:8826 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  /* parser/parser_prod.nit:11189 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8826);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11189);
   }
   ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[5]) = fra.me.REG[3];
-  /* parser/parser_prod.nit:8827 */
+  /* parser/parser_prod.nit:11190 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8827);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11190);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* parser/parser_prod.nit:8828 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser_prod.nit:11191 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8828);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11191);
   }
   ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[5]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:8829 */
+  /* parser/parser_prod.nit:11192 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8829);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11192);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos292] = 1;
+  init_table[itpos291] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___replace_child[] = "parser_prod::AAsNotNullableExternCall::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___replace_child[] = "parser_prod::AAsNotNullableExternCall::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAsNotNullableExternCall___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;
@@ -48406,7 +58955,7 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8832;
+  fra.me.line = 11195;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48418,11 +58967,11 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8834 */
+  /* parser/parser_prod.nit:11197 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 8834);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 11197);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48432,7 +58981,7 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8835 */
+    /* parser/parser_prod.nit:11198 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48447,32 +58996,32 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8836 */
+      /* parser/parser_prod.nit:11199 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8836);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11199);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8837 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11200 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8837);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11200);
       }
-      /* parser/parser_prod.nit:8838 */
+      /* parser/parser_prod.nit:11201 */
       ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8840 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8840);
+      /* parser/parser_prod.nit:11203 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11203);
     }
-    /* parser/parser_prod.nit:8842 */
+    /* parser/parser_prod.nit:11205 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8844 */
+  /* parser/parser_prod.nit:11207 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 8844);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 11207);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48482,7 +59031,7 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8845 */
+    /* parser/parser_prod.nit:11208 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48497,32 +59046,32 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8846 */
+      /* parser/parser_prod.nit:11209 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8846);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11209);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8847 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11210 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast TKwas*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8847);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11210);
       }
-      /* parser/parser_prod.nit:8848 */
+      /* parser/parser_prod.nit:11211 */
       ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8850 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8850);
+      /* parser/parser_prod.nit:11213 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11213);
     }
-    /* parser/parser_prod.nit:8852 */
+    /* parser/parser_prod.nit:11215 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8854 */
+  /* parser/parser_prod.nit:11217 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 8854);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 11217);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48532,7 +59081,7 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8855 */
+    /* parser/parser_prod.nit:11218 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48547,32 +59096,32 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8856 */
+      /* parser/parser_prod.nit:11219 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8856);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11219);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8857 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11220 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast TKwnot*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8857);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11220);
       }
-      /* parser/parser_prod.nit:8858 */
+      /* parser/parser_prod.nit:11221 */
       ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8860 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8860);
+      /* parser/parser_prod.nit:11223 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11223);
     }
-    /* parser/parser_prod.nit:8862 */
+    /* parser/parser_prod.nit:11225 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8864 */
+  /* parser/parser_prod.nit:11227 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 8864);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 11227);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48582,7 +59131,7 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8865 */
+    /* parser/parser_prod.nit:11228 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48597,39 +59146,127 @@ void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, v
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8866 */
+      /* parser/parser_prod.nit:11229 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8866);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11229);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8867 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11230 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast TKwnullable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8867);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11230);
       }
-      /* parser/parser_prod.nit:8868 */
+      /* parser/parser_prod.nit:11231 */
       ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8870 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8870);
+      /* parser/parser_prod.nit:11233 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11233);
     }
-    /* parser/parser_prod.nit:8872 */
+    /* parser/parser_prod.nit:11235 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___visit_all[] = "parser_prod::AAsNotNullableExternCall::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_type__eq[] = "parser_prod::AAsNotNullableExternCall::(parser_nodes::AAsNotNullableExternCall::n_type=)";
+void parser___parser_prod___AAsNotNullableExternCall___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11239;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11241 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11242 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_kwas__eq[] = "parser_prod::AAsNotNullableExternCall::(parser_nodes::AAsNotNullableExternCall::n_kwas=)";
+void parser___parser_prod___AAsNotNullableExternCall___n_kwas__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11244;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_kwas__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11246 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11247 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_kwnot__eq[] = "parser_prod::AAsNotNullableExternCall::(parser_nodes::AAsNotNullableExternCall::n_kwnot=)";
+void parser___parser_prod___AAsNotNullableExternCall___n_kwnot__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11249;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_kwnot__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11251 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11252 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_kwnullable__eq[] = "parser_prod::AAsNotNullableExternCall::(parser_nodes::AAsNotNullableExternCall::n_kwnullable=)";
+void parser___parser_prod___AAsNotNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11254;
+  fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___n_kwnullable__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11256 */
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11257 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAsNotNullableExternCall___visit_all[] = "parser_prod::AAsNotNullableExternCall::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAsNotNullableExternCall___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8876;
+  fra.me.line = 11261;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -48639,50 +59276,50 @@ void parser___parser_prod___AAsNotNullableExternCall___visit_all(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8878 */
+  /* parser/parser_prod.nit:11263 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 8878);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 11263);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8879 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11264 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 8879);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_parser___parser_prod, 11264);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8880 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11265 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 8880);
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_parser___parser_prod, 11265);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8881 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11266 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 8881);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_parser___parser_prod, 11266);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInLanguage___empty_init[] = "parser_prod::AInLanguage::empty_init";
 void parser___parser_prod___AInLanguage___empty_init(val_t p0, int* init_table){
-  int itpos293 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInLanguage].i;
+  int itpos292 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInLanguage].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos293]) return;
+  if (init_table[itpos292]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8885;
+  fra.me.line = 11270;
   fra.me.meth = LOCATE_parser___parser_prod___AInLanguage___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -48690,19 +59327,19 @@ void parser___parser_prod___AInLanguage___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos293] = 1;
+  init_table[itpos292] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AInLanguage___init_ainlanguage[] = "parser_prod::AInLanguage::init_ainlanguage";
 void parser___parser_prod___AInLanguage___init_ainlanguage(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos294 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInLanguage].i;
+  int itpos293 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInLanguage].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos294]) return;
+  if (init_table[itpos293]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8887;
+  fra.me.line = 11272;
   fra.me.meth = LOCATE_parser___parser_prod___AInLanguage___init_ainlanguage;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48714,41 +59351,41 @@ void parser___parser_prod___AInLanguage___init_ainlanguage(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8887 */
+  /* parser/parser_prod.nit:11272 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8892 */
+  /* parser/parser_prod.nit:11277 */
   CALL_parser___parser_prod___AInLanguage___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:8893 */
+  /* parser/parser_prod.nit:11278 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8893);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11278);
   }
   ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8894 */
+  /* parser/parser_prod.nit:11279 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8894);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11279);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:8895 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:11280 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8895);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11280);
   }
   ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8896 */
+  /* parser/parser_prod.nit:11281 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8896);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11281);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos294] = 1;
+  init_table[itpos293] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInLanguage___replace_child[] = "parser_prod::AInLanguage::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AInLanguage___replace_child[] = "parser_prod::AInLanguage::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AInLanguage___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;
@@ -48756,7 +59393,7 @@ void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8899;
+  fra.me.line = 11284;
   fra.me.meth = LOCATE_parser___parser_prod___AInLanguage___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48768,11 +59405,11 @@ void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8901 */
+  /* parser/parser_prod.nit:11286 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_parser___parser_prod, 8901);
+    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_parser___parser_prod, 11286);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48782,7 +59419,7 @@ void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8902 */
+    /* parser/parser_prod.nit:11287 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48797,32 +59434,32 @@ void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8903 */
+      /* parser/parser_prod.nit:11288 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8903);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11288);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8904 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11289 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwin, ID_parser___parser_nodes___TKwin)) /*cast TKwin*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8904);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11289);
       }
-      /* parser/parser_prod.nit:8905 */
+      /* parser/parser_prod.nit:11290 */
       ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8907 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8907);
+      /* parser/parser_prod.nit:11292 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11292);
     }
-    /* parser/parser_prod.nit:8909 */
+    /* parser/parser_prod.nit:11294 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8911 */
+  /* parser/parser_prod.nit:11296 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 8911);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 11296);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -48832,7 +59469,7 @@ void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8912 */
+    /* parser/parser_prod.nit:11297 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -48847,39 +59484,83 @@ void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8913 */
+      /* parser/parser_prod.nit:11298 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8913);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11298);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8914 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11299 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast TString*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8914);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11299);
       }
-      /* parser/parser_prod.nit:8915 */
+      /* parser/parser_prod.nit:11300 */
       ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8917 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8917);
+      /* parser/parser_prod.nit:11302 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11302);
     }
-    /* parser/parser_prod.nit:8919 */
+    /* parser/parser_prod.nit:11304 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AInLanguage___visit_all[] = "parser_prod::AInLanguage::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AInLanguage___n_kwin__eq[] = "parser_prod::AInLanguage::(parser_nodes::AInLanguage::n_kwin=)";
+void parser___parser_prod___AInLanguage___n_kwin__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11308;
+  fra.me.meth = LOCATE_parser___parser_prod___AInLanguage___n_kwin__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11310 */
+  ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11311 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInLanguage___n_string__eq[] = "parser_prod::AInLanguage::(parser_nodes::AInLanguage::n_string=)";
+void parser___parser_prod___AInLanguage___n_string__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11313;
+  fra.me.meth = LOCATE_parser___parser_prod___AInLanguage___n_string__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11315 */
+  ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11316 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AInLanguage___visit_all[] = "parser_prod::AInLanguage::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AInLanguage___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8923;
+  fra.me.line = 11320;
   fra.me.meth = LOCATE_parser___parser_prod___AInLanguage___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -48889,34 +59570,34 @@ void parser___parser_prod___AInLanguage___visit_all(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8925 */
+  /* parser/parser_prod.nit:11322 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_parser___parser_prod, 8925);
+    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_parser___parser_prod, 11322);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser_prod.nit:8926 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser_prod.nit:11323 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 8926);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_parser___parser_prod, 11323);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternCodeBlock___empty_init[] = "parser_prod::AExternCodeBlock::empty_init";
 void parser___parser_prod___AExternCodeBlock___empty_init(val_t p0, int* init_table){
-  int itpos295 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCodeBlock].i;
+  int itpos294 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCodeBlock].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos295]) return;
+  if (init_table[itpos294]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8930;
+  fra.me.line = 11327;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCodeBlock___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -48924,20 +59605,20 @@ void parser___parser_prod___AExternCodeBlock___empty_init(val_t p0, int* init_ta
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos295] = 1;
+  init_table[itpos294] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock[] = "parser_prod::AExternCodeBlock::init_aexterncodeblock";
 void parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos296 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCodeBlock].i;
+  int itpos295 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCodeBlock].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos296]) return;
+  if (init_table[itpos295]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8932;
+  fra.me.line = 11329;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -48949,13 +59630,13 @@ void parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8932 */
+  /* parser/parser_prod.nit:11329 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8937 */
+  /* parser/parser_prod.nit:11334 */
   CALL_parser___parser_prod___AExternCodeBlock___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
-  /* parser/parser_prod.nit:8938 */
+  /* parser/parser_prod.nit:11335 */
   ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[3]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:8939 */
+  /* parser/parser_prod.nit:11336 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -48970,31 +59651,31 @@ void parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8940 */
+    /* parser/parser_prod.nit:11337 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8940);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11337);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:8942 */
+  /* parser/parser_prod.nit:11339 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8942);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11339);
   }
   ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[3]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8943 */
+  /* parser/parser_prod.nit:11340 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8943);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11340);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos296] = 1;
+  init_table[itpos295] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternCodeBlock___replace_child[] = "parser_prod::AExternCodeBlock::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AExternCodeBlock___replace_child[] = "parser_prod::AExternCodeBlock::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AExternCodeBlock___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;
@@ -49002,7 +59683,7 @@ void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8946;
+  fra.me.line = 11343;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCodeBlock___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -49014,7 +59695,7 @@ void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8948 */
+  /* parser/parser_prod.nit:11345 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -49029,7 +59710,7 @@ void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8949 */
+    /* parser/parser_prod.nit:11346 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -49044,32 +59725,32 @@ void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8950 */
+      /* parser/parser_prod.nit:11347 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8950);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11347);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8951 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11348 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AInLanguage, ID_parser___parser_nodes___AInLanguage)) /*cast AInLanguage*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8951);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11348);
       }
-      /* parser/parser_prod.nit:8952 */
+      /* parser/parser_prod.nit:11349 */
       ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8954 */
+      /* parser/parser_prod.nit:11351 */
       ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:8956 */
+    /* parser/parser_prod.nit:11353 */
     goto label1;
   }
-  /* parser/parser_prod.nit:8958 */
+  /* parser/parser_prod.nit:11355 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_parser___parser_prod, 8958);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_parser___parser_prod, 11355);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -49079,7 +59760,7 @@ void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8959 */
+    /* parser/parser_prod.nit:11356 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -49094,32 +59775,98 @@ void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:8960 */
+      /* parser/parser_prod.nit:11357 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8960);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11357);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:8961 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11358 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast TExternCodeSegment*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8961);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11358);
       }
-      /* parser/parser_prod.nit:8962 */
+      /* parser/parser_prod.nit:11359 */
       ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:8964 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 8964);
+      /* parser/parser_prod.nit:11361 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11361);
     }
-    /* parser/parser_prod.nit:8966 */
+    /* parser/parser_prod.nit:11363 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExternCodeBlock___visit_all[] = "parser_prod::AExternCodeBlock::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExternCodeBlock___n_in_language__eq[] = "parser_prod::AExternCodeBlock::(parser_nodes::AExternCodeBlock::n_in_language=)";
+void parser___parser_prod___AExternCodeBlock___n_in_language__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11367;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternCodeBlock___n_in_language__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11369 */
+  ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11370 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11371 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11371);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternCodeBlock___n_extern_code_segment__eq[] = "parser_prod::AExternCodeBlock::(parser_nodes::AExternCodeBlock::n_extern_code_segment=)";
+void parser___parser_prod___AExternCodeBlock___n_extern_code_segment__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11374;
+  fra.me.meth = LOCATE_parser___parser_prod___AExternCodeBlock___n_extern_code_segment__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11376 */
+  ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11377 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExternCodeBlock___visit_all[] = "parser_prod::AExternCodeBlock::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExternCodeBlock___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -49127,7 +59874,7 @@ void parser___parser_prod___AExternCodeBlock___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8970;
+  fra.me.line = 11381;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCodeBlock___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -49138,9 +59885,9 @@ void parser___parser_prod___AExternCodeBlock___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:8970 */
+  /* parser/parser_prod.nit:11381 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:8972 */
+  /* parser/parser_prod.nit:11383 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -49156,35 +59903,35 @@ void parser___parser_prod___AExternCodeBlock___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8973 */
+    /* parser/parser_prod.nit:11384 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AInLanguage, ID_parser___parser_nodes___AInLanguage)) /*cast AInLanguage*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 8973);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11384);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:8975 */
+  /* parser/parser_prod.nit:11386 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_parser___parser_prod, 8975);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_parser___parser_prod, 11386);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AQualified___empty_init[] = "parser_prod::AQualified::empty_init";
 void parser___parser_prod___AQualified___empty_init(val_t p0, int* init_table){
-  int itpos297 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AQualified].i;
+  int itpos296 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AQualified].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos297]) return;
+  if (init_table[itpos296]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8979;
+  fra.me.line = 11390;
   fra.me.meth = LOCATE_parser___parser_prod___AQualified___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -49192,20 +59939,20 @@ void parser___parser_prod___AQualified___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos297] = 1;
+  init_table[itpos296] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AQualified___init_aqualified[] = "parser_prod::AQualified::init_aqualified";
 void parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos298 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AQualified].i;
+  int itpos297 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AQualified].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos298]) return;
+  if (init_table[itpos297]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8981;
+  fra.me.line = 11392;
   fra.me.meth = LOCATE_parser___parser_prod___AQualified___init_aqualified;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -49216,12 +59963,12 @@ void parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:8986 */
+  /* parser/parser_prod.nit:11397 */
   CALL_parser___parser_prod___AQualified___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AQualified___init_aqualified_1));
-  /* parser/parser_prod.nit:8992 */
+  /* parser/parser_prod.nit:11403 */
   ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:8993 */
+  /* parser/parser_prod.nit:11404 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -49236,15 +59983,15 @@ void parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:8994 */
+    /* parser/parser_prod.nit:11405 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 8994);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11405);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos298] = 1;
+  init_table[itpos297] = 1;
   return;
 }
   void OC_parser___parser_prod___AQualified___init_aqualified_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -49252,7 +59999,7 @@ void parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1, val
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:8987 */
+    /* parser/parser_prod.nit:11398 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -49266,26 +60013,26 @@ void parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:8988 */
+    /* parser/parser_prod.nit:11399 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 8988);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11399);
     }
-    /* parser/parser_prod.nit:8989 */
+    /* parser/parser_prod.nit:11400 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 8989);
+      nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11400);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AQualified____n_id(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:8990 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:11401 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AQualified___replace_child[] = "parser_prod::AQualified::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AQualified___replace_child[] = "parser_prod::AQualified::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AQualified___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;
@@ -49296,7 +60043,7 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 8998;
+  fra.me.line = 11409;
   fra.me.meth = LOCATE_parser___parser_prod___AQualified___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -49308,50 +60055,44 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9000 */
+  /* parser/parser_prod.nit:11411 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9000);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11411);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:9000 */
+      /* parser/parser_prod.nit:11411 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:9001 */
+      /* parser/parser_prod.nit:11412 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9001);
+        nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11412);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:9002 */
+        /* parser/parser_prod.nit:11413 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -49366,52 +60107,52 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:9003 */
+          /* parser/parser_prod.nit:11414 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9003);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11414);
           }
-          /* parser/parser_prod.nit:9004 */
+          /* parser/parser_prod.nit:11415 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9004);
+            nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11415);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:9005 */
+          /* parser/parser_prod.nit:11416 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9005);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11416);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:9007 */
+          /* parser/parser_prod.nit:11418 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9007);
+            nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11418);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:9009 */
+        /* parser/parser_prod.nit:11420 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:9012 */
+  /* parser/parser_prod.nit:11423 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -49426,7 +60167,7 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9013 */
+    /* parser/parser_prod.nit:11424 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -49441,32 +60182,76 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9014 */
+      /* parser/parser_prod.nit:11425 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9014);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11425);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9015 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11426 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9015);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11426);
       }
-      /* parser/parser_prod.nit:9016 */
+      /* parser/parser_prod.nit:11427 */
       ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9018 */
+      /* parser/parser_prod.nit:11429 */
       ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9020 */
+    /* parser/parser_prod.nit:11431 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AQualified___visit_all[] = "parser_prod::AQualified::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AQualified___n_classid__eq[] = "parser_prod::AQualified::(parser_nodes::AQualified::n_classid=)";
+void parser___parser_prod___AQualified___n_classid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11435;
+  fra.me.meth = LOCATE_parser___parser_prod___AQualified___n_classid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11437 */
+  ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11438 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11439 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11439);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AQualified___visit_all[] = "parser_prod::AQualified::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -49474,7 +60259,7 @@ void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9024;
+  fra.me.line = 11444;
   fra.me.meth = LOCATE_parser___parser_prod___AQualified___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -49485,17 +60270,17 @@ void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9024 */
+  /* parser/parser_prod.nit:11444 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9026 */
+  /* parser/parser_prod.nit:11446 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9026);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11446);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AQualified___visit_all_1));
-  /* parser/parser_prod.nit:9029 */
+  /* parser/parser_prod.nit:11449 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -49511,14 +60296,14 @@ void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9030 */
+    /* parser/parser_prod.nit:11450 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9030);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11450);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -49539,20 +60324,20 @@ void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9027 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:11447 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ADoc___empty_init[] = "parser_prod::ADoc::empty_init";
 void parser___parser_prod___ADoc___empty_init(val_t p0, int* init_table){
-  int itpos299 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoc].i;
+  int itpos298 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoc].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos299]) return;
+  if (init_table[itpos298]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9035;
+  fra.me.line = 11455;
   fra.me.meth = LOCATE_parser___parser_prod___ADoc___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -49560,18 +60345,18 @@ void parser___parser_prod___ADoc___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos299] = 1;
+  init_table[itpos298] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ADoc___init_adoc[] = "parser_prod::ADoc::init_adoc";
 void parser___parser_prod___ADoc___init_adoc(val_t p0, val_t p1, int* init_table){
-  int itpos300 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoc].i;
+  int itpos299 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADoc].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos300]) return;
+  if (init_table[itpos299]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9037;
+  fra.me.line = 11457;
   fra.me.meth = LOCATE_parser___parser_prod___ADoc___init_adoc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -49580,11 +60365,11 @@ void parser___parser_prod___ADoc___init_adoc(val_t p0, val_t p1, int* init_table
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9041 */
+  /* parser/parser_prod.nit:11461 */
   CALL_parser___parser_prod___ADoc___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ADoc___init_adoc_1));
   stack_frame_head = fra.me.prev;
-  init_table[itpos300] = 1;
+  init_table[itpos299] = 1;
   return;
 }
   void OC_parser___parser_prod___ADoc___init_adoc_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -49592,7 +60377,7 @@ void parser___parser_prod___ADoc___init_adoc(val_t p0, val_t p1, int* init_table
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:9042 */
+    /* parser/parser_prod.nit:11462 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -49606,26 +60391,26 @@ void parser___parser_prod___ADoc___init_adoc(val_t p0, val_t p1, int* init_table
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9043 */
+    /* parser/parser_prod.nit:11463 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TComment, ID_parser___parser_nodes___TComment)) /*cast TComment*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9043);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11463);
     }
-    /* parser/parser_prod.nit:9044 */
+    /* parser/parser_prod.nit:11464 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 9044);
+      nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 11464);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___ADoc____n_comment(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:9045 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:11465 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___ADoc___replace_child[] = "parser_prod::ADoc::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ADoc___replace_child[] = "parser_prod::ADoc::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ADoc___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;
@@ -49636,7 +60421,7 @@ void parser___parser_prod___ADoc___replace_child(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___parser_prod;
-  fra.me.line = 9049;
+  fra.me.line = 11469;
   fra.me.meth = LOCATE_parser___parser_prod___ADoc___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -49648,50 +60433,44 @@ void parser___parser_prod___ADoc___replace_child(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_prod.nit:9051 */
+  /* parser/parser_prod.nit:11471 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 9051);
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 11471);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:9051 */
+      /* parser/parser_prod.nit:11471 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:9052 */
+      /* parser/parser_prod.nit:11472 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 9052);
+        nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 11472);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:9053 */
+        /* parser/parser_prod.nit:11473 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -49706,47 +60485,47 @@ void parser___parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:9054 */
+          /* parser/parser_prod.nit:11474 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TComment, ID_parser___parser_nodes___TComment)) /*cast TComment*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9054);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11474);
           }
-          /* parser/parser_prod.nit:9055 */
+          /* parser/parser_prod.nit:11475 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 9055);
+            nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 11475);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:9056 */
+          /* parser/parser_prod.nit:11476 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9056);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11476);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:9058 */
+          /* parser/parser_prod.nit:11478 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 9058);
+            nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 11478);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:9060 */
+        /* parser/parser_prod.nit:11480 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -49755,14 +60534,14 @@ void parser___parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ADoc___visit_all[] = "parser_prod::ADoc::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___ADoc___visit_all[] = "parser_prod::ADoc::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___ADoc___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___parser_prod;
-  fra.me.line = 9065;
+  fra.me.line = 11487;
   fra.me.meth = LOCATE_parser___parser_prod___ADoc___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -49771,11 +60550,11 @@ void parser___parser_prod___ADoc___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9067 */
+  /* parser/parser_prod.nit:11489 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 9067);
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 11489);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ADoc___visit_all_1));
@@ -49798,20 +60577,20 @@ void parser___parser_prod___ADoc___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9068 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:11490 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AAnnotations___empty_init[] = "parser_prod::AAnnotations::empty_init";
 void parser___parser_prod___AAnnotations___empty_init(val_t p0, int* init_table){
-  int itpos301 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotations].i;
+  int itpos300 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotations].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos301]) return;
+  if (init_table[itpos300]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9073;
+  fra.me.line = 11495;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -49819,20 +60598,20 @@ void parser___parser_prod___AAnnotations___empty_init(val_t p0, int* init_table)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos301] = 1;
+  init_table[itpos300] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAnnotations___init_aannotations[] = "parser_prod::AAnnotations::init_aannotations";
 void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos302 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotations].i;
+  int itpos301 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotations].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos302]) return;
+  if (init_table[itpos301]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9075;
+  fra.me.line = 11497;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___init_aannotations;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -49847,11 +60626,11 @@ void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1,
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* parser/parser_prod.nit:9082 */
+  /* parser/parser_prod.nit:11504 */
   CALL_parser___parser_prod___AAnnotations___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* parser/parser_prod.nit:9083 */
+  /* parser/parser_prod.nit:11505 */
   ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9084 */
+  /* parser/parser_prod.nit:11506 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -49866,16 +60645,16 @@ void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9085 */
+    /* parser/parser_prod.nit:11507 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9085);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11507);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* parser/parser_prod.nit:9087 */
+  /* parser/parser_prod.nit:11509 */
   ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:9088 */
+  /* parser/parser_prod.nit:11510 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -49890,17 +60669,17 @@ void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9089 */
+    /* parser/parser_prod.nit:11511 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9089);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11511);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AAnnotations___init_aannotations_1));
-  /* parser/parser_prod.nit:9096 */
+  /* parser/parser_prod.nit:11518 */
   ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:9097 */
+  /* parser/parser_prod.nit:11519 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -49915,15 +60694,15 @@ void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9098 */
+    /* parser/parser_prod.nit:11520 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9098);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11520);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos302] = 1;
+  init_table[itpos301] = 1;
   return;
 }
   void OC_parser___parser_prod___AAnnotations___init_aannotations_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -49931,7 +60710,7 @@ void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1,
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:9091 */
+    /* parser/parser_prod.nit:11513 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -49945,26 +60724,26 @@ void parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9092 */
+    /* parser/parser_prod.nit:11514 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAnnotation, ID_parser___parser_nodes___AAnnotation)) /*cast AAnnotation*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9092);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11514);
     }
-    /* parser/parser_prod.nit:9093 */
+    /* parser/parser_prod.nit:11515 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 9093);
+      nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 11515);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AAnnotations____n_items(closctx->REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:9094 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    /* parser/parser_prod.nit:11516 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AAnnotations___replace_child[] = "parser_prod::AAnnotations::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAnnotations___replace_child[] = "parser_prod::AAnnotations::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAnnotations___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;
@@ -49975,7 +60754,7 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9102;
+  fra.me.line = 11524;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -49987,7 +60766,7 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9104 */
+  /* parser/parser_prod.nit:11526 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -50002,7 +60781,7 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9105 */
+    /* parser/parser_prod.nit:11527 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50017,28 +60796,28 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9106 */
+      /* parser/parser_prod.nit:11528 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9106);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11528);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9107 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11529 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TAt, ID_parser___parser_nodes___TAt)) /*cast TAt*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9107);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11529);
       }
-      /* parser/parser_prod.nit:9108 */
+      /* parser/parser_prod.nit:11530 */
       ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9110 */
+      /* parser/parser_prod.nit:11532 */
       ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9112 */
+    /* parser/parser_prod.nit:11534 */
     goto label1;
   }
-  /* parser/parser_prod.nit:9114 */
+  /* parser/parser_prod.nit:11536 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -50053,7 +60832,7 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9115 */
+    /* parser/parser_prod.nit:11537 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50068,71 +60847,65 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9116 */
+      /* parser/parser_prod.nit:11538 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9116);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11538);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9117 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11539 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9117);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11539);
       }
-      /* parser/parser_prod.nit:9118 */
+      /* parser/parser_prod.nit:11540 */
       ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9120 */
+      /* parser/parser_prod.nit:11542 */
       ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9122 */
+    /* parser/parser_prod.nit:11544 */
     goto label1;
   }
-  /* parser/parser_prod.nit:9124 */
+  /* parser/parser_prod.nit:11546 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 9124);
+    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 11546);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:9124 */
+      /* parser/parser_prod.nit:11546 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:9125 */
+      /* parser/parser_prod.nit:11547 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 9125);
+        nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 11547);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:9126 */
+        /* parser/parser_prod.nit:11548 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -50147,52 +60920,52 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:9127 */
+          /* parser/parser_prod.nit:11549 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotation, ID_parser___parser_nodes___AAnnotation)) /*cast AAnnotation*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9127);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11549);
           }
-          /* parser/parser_prod.nit:9128 */
+          /* parser/parser_prod.nit:11550 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 9128);
+            nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 11550);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:9129 */
+          /* parser/parser_prod.nit:11551 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9129);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11551);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:9131 */
+          /* parser/parser_prod.nit:11553 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 9131);
+            nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 11553);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:9133 */
+        /* parser/parser_prod.nit:11555 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:9136 */
+  /* parser/parser_prod.nit:11558 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -50207,7 +60980,7 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9137 */
+    /* parser/parser_prod.nit:11559 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50222,32 +60995,164 @@ void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9138 */
+      /* parser/parser_prod.nit:11560 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9138);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11560);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9139 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11561 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9139);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11561);
       }
-      /* parser/parser_prod.nit:9140 */
+      /* parser/parser_prod.nit:11562 */
       ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9142 */
+      /* parser/parser_prod.nit:11564 */
       ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9144 */
+    /* parser/parser_prod.nit:11566 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAnnotations___visit_all[] = "parser_prod::AAnnotations::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAnnotations___n_at__eq[] = "parser_prod::AAnnotations::(parser_nodes::AAnnotations::n_at=)";
+void parser___parser_prod___AAnnotations___n_at__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11570;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___n_at__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11572 */
+  ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11573 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11574 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11574);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotations___n_opar__eq[] = "parser_prod::AAnnotations::(parser_nodes::AAnnotations::n_opar=)";
+void parser___parser_prod___AAnnotations___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11577;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11579 */
+  ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11580 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11581 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11581);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotations___n_cpar__eq[] = "parser_prod::AAnnotations::(parser_nodes::AAnnotations::n_cpar=)";
+void parser___parser_prod___AAnnotations___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11584;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11586 */
+  ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11587 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11588 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11588);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotations___visit_all[] = "parser_prod::AAnnotations::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -50255,7 +61160,7 @@ void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9148;
+  fra.me.line = 11593;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotations___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -50266,9 +61171,9 @@ void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9148 */
+  /* parser/parser_prod.nit:11593 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9150 */
+  /* parser/parser_prod.nit:11595 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -50284,16 +61189,16 @@ void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9151 */
+    /* parser/parser_prod.nit:11596 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAt, ID_parser___parser_nodes___TAt)) /*cast TAt*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9151);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11596);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:9153 */
+  /* parser/parser_prod.nit:11598 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -50309,24 +61214,24 @@ void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9154 */
+    /* parser/parser_prod.nit:11599 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9154);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11599);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:9156 */
+  /* parser/parser_prod.nit:11601 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 9156);
+    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_parser___parser_prod, 11601);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AAnnotations___visit_all_1));
-  /* parser/parser_prod.nit:9159 */
+  /* parser/parser_prod.nit:11604 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -50342,14 +61247,14 @@ void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9160 */
+    /* parser/parser_prod.nit:11605 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9160);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11605);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -50370,20 +61275,20 @@ void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9157 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:11602 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___AAnnotation___empty_init[] = "parser_prod::AAnnotation::empty_init";
 void parser___parser_prod___AAnnotation___empty_init(val_t p0, int* init_table){
-  int itpos303 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotation].i;
+  int itpos302 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotation].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos303]) return;
+  if (init_table[itpos302]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9165;
+  fra.me.line = 11610;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -50391,20 +61296,20 @@ void parser___parser_prod___AAnnotation___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos303] = 1;
+  init_table[itpos302] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAnnotation___init_aannotation[] = "parser_prod::AAnnotation::init_aannotation";
 void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, int* init_table){
-  int itpos304 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotation].i;
+  int itpos303 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAnnotation].i;
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos304]) return;
+  if (init_table[itpos303]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9167;
+  fra.me.line = 11612;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___init_aannotation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -50422,26 +61327,26 @@ void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, v
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* parser/parser_prod.nit:9167 */
+  /* parser/parser_prod.nit:11612 */
   fra.me.REG[6] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9175 */
+  /* parser/parser_prod.nit:11620 */
   CALL_parser___parser_prod___AAnnotation___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
-  /* parser/parser_prod.nit:9176 */
+  /* parser/parser_prod.nit:11621 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9176);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11621);
   }
   ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[6]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9177 */
+  /* parser/parser_prod.nit:11622 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9177);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11622);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* parser/parser_prod.nit:9178 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  /* parser/parser_prod.nit:11623 */
   ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[6]) = fra.me.REG[2];
-  /* parser/parser_prod.nit:9179 */
+  /* parser/parser_prod.nit:11624 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -50456,17 +61361,17 @@ void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9180 */
+    /* parser/parser_prod.nit:11625 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9180);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11625);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   }
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AAnnotation___init_aannotation_1));
-  /* parser/parser_prod.nit:9187 */
+  /* parser/parser_prod.nit:11632 */
   ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[6]) = fra.me.REG[4];
-  /* parser/parser_prod.nit:9188 */
+  /* parser/parser_prod.nit:11633 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -50481,16 +61386,16 @@ void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9189 */
+    /* parser/parser_prod.nit:11634 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9189);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11634);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   }
-  /* parser/parser_prod.nit:9191 */
+  /* parser/parser_prod.nit:11636 */
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[6]) = fra.me.REG[5];
-  /* parser/parser_prod.nit:9192 */
+  /* parser/parser_prod.nit:11637 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -50505,15 +61410,15 @@ void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9193 */
+    /* parser/parser_prod.nit:11638 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9193);
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11638);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
   stack_frame_head = fra.me.prev;
-  init_table[itpos304] = 1;
+  init_table[itpos303] = 1;
   return;
 }
   void OC_parser___parser_prod___AAnnotation___init_aannotation_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
@@ -50521,7 +61426,7 @@ void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, v
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* parser/parser_prod.nit:9182 */
+    /* parser/parser_prod.nit:11627 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_parser___parser_prod;
     fra.me.line = 0;
@@ -50535,26 +61440,26 @@ void parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, v
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9183 */
+    /* parser/parser_prod.nit:11628 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAtArg, ID_parser___parser_nodes___AAtArg)) /*cast AAtArg*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9183);
+      nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11628);
     }
-    /* parser/parser_prod.nit:9184 */
+    /* parser/parser_prod.nit:11629 */
     REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(closctx->REG[6])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 9184);
+      nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 11629);
     }
     fra.me.REG[1] = ATTR_parser___parser_nodes___AAnnotation____n_args(closctx->REG[6]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser_prod.nit:9185 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[6]);
+    /* parser/parser_prod.nit:11630 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[6]);
     stack_frame_head = fra.me.prev;
     return;
   }
-static const char LOCATE_parser___parser_prod___AAnnotation___replace_child[] = "parser_prod::AAnnotation::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAnnotation___replace_child[] = "parser_prod::AAnnotation::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAnnotation___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;
@@ -50565,7 +61470,7 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9197;
+  fra.me.line = 11642;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -50577,11 +61482,11 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9199 */
+  /* parser/parser_prod.nit:11644 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_parser___parser_prod, 9199);
+    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_parser___parser_prod, 11644);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -50591,7 +61496,7 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9200 */
+    /* parser/parser_prod.nit:11645 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50606,28 +61511,28 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9201 */
+      /* parser/parser_prod.nit:11646 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9201);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11646);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9202 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11647 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAtid, ID_parser___parser_nodes___AAtid)) /*cast AAtid*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9202);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11647);
       }
-      /* parser/parser_prod.nit:9203 */
+      /* parser/parser_prod.nit:11648 */
       ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9205 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9205);
+      /* parser/parser_prod.nit:11650 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11650);
     }
-    /* parser/parser_prod.nit:9207 */
+    /* parser/parser_prod.nit:11652 */
     goto label1;
   }
-  /* parser/parser_prod.nit:9209 */
+  /* parser/parser_prod.nit:11654 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -50642,7 +61547,7 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9210 */
+    /* parser/parser_prod.nit:11655 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50657,71 +61562,65 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9211 */
+      /* parser/parser_prod.nit:11656 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9211);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11656);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9212 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11657 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9212);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11657);
       }
-      /* parser/parser_prod.nit:9213 */
+      /* parser/parser_prod.nit:11658 */
       ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9215 */
+      /* parser/parser_prod.nit:11660 */
       ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9217 */
+    /* parser/parser_prod.nit:11662 */
     goto label1;
   }
-  /* parser/parser_prod.nit:9219 */
+  /* parser/parser_prod.nit:11664 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 9219);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 11664);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* parser/parser_prod.nit:9219 */
+      /* parser/parser_prod.nit:11664 */
       REGB2 = REGB0;
-      /* parser/parser_prod.nit:9220 */
+      /* parser/parser_prod.nit:11665 */
       REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 9220);
+        nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 11665);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
-        /* parser/parser_prod.nit:9221 */
+        /* parser/parser_prod.nit:11666 */
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
@@ -50736,52 +61635,52 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* parser/parser_prod.nit:9222 */
+          /* parser/parser_prod.nit:11667 */
           REGB3 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAtArg, ID_parser___parser_nodes___AAtArg)) /*cast AAtArg*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9222);
+            nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11667);
           }
-          /* parser/parser_prod.nit:9223 */
+          /* parser/parser_prod.nit:11668 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 9223);
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 11668);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
-          /* parser/parser_prod.nit:9224 */
+          /* parser/parser_prod.nit:11669 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9224);
+            nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11669);
           }
-          CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+          CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         } else {
-          /* parser/parser_prod.nit:9226 */
+          /* parser/parser_prod.nit:11671 */
           REGB3 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 9226);
+            nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 11671);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
-        /* parser/parser_prod.nit:9228 */
+        /* parser/parser_prod.nit:11673 */
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* parser/parser_prod.nit:9231 */
+  /* parser/parser_prod.nit:11676 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -50796,7 +61695,7 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9232 */
+    /* parser/parser_prod.nit:11677 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50811,28 +61710,28 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9233 */
+      /* parser/parser_prod.nit:11678 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9233);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11678);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9234 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11679 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9234);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11679);
       }
-      /* parser/parser_prod.nit:9235 */
+      /* parser/parser_prod.nit:11680 */
       ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9237 */
+      /* parser/parser_prod.nit:11682 */
       ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9239 */
+    /* parser/parser_prod.nit:11684 */
     goto label1;
   }
-  /* parser/parser_prod.nit:9241 */
+  /* parser/parser_prod.nit:11686 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -50847,7 +61746,7 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9242 */
+    /* parser/parser_prod.nit:11687 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -50862,32 +61761,186 @@ void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9243 */
+      /* parser/parser_prod.nit:11688 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9243);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11688);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9244 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11689 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9244);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11689);
       }
-      /* parser/parser_prod.nit:9245 */
+      /* parser/parser_prod.nit:11690 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9247 */
+      /* parser/parser_prod.nit:11692 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = NIT_NULL;
     }
-    /* parser/parser_prod.nit:9249 */
+    /* parser/parser_prod.nit:11694 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAnnotation___visit_all[] = "parser_prod::AAnnotation::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAnnotation___n_atid__eq[] = "parser_prod::AAnnotation::(parser_nodes::AAnnotation::n_atid=)";
+void parser___parser_prod___AAnnotation___n_atid__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11698;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___n_atid__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11700 */
+  ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11701 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotation___n_opar__eq[] = "parser_prod::AAnnotation::(parser_nodes::AAnnotation::n_opar=)";
+void parser___parser_prod___AAnnotation___n_opar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11703;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___n_opar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11705 */
+  ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11706 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11707 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11707);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotation___n_cpar__eq[] = "parser_prod::AAnnotation::(parser_nodes::AAnnotation::n_cpar=)";
+void parser___parser_prod___AAnnotation___n_cpar__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11710;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___n_cpar__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11712 */
+  ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11713 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11714 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11714);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotation___n_annotations__eq[] = "parser_prod::AAnnotation::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AAnnotation___n_annotations__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11717;
+  fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11719 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11720 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11721 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11721);
+    }
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAnnotation___visit_all[] = "parser_prod::AAnnotation::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -50895,7 +61948,7 @@ void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9253;
+  fra.me.line = 11726;
   fra.me.meth = LOCATE_parser___parser_prod___AAnnotation___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -50906,17 +61959,17 @@ void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9253 */
+  /* parser/parser_prod.nit:11726 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9255 */
+  /* parser/parser_prod.nit:11728 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_parser___parser_prod, 9255);
+    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_parser___parser_prod, 11728);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* parser/parser_prod.nit:9256 */
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* parser/parser_prod.nit:11729 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -50932,24 +61985,24 @@ void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9257 */
+    /* parser/parser_prod.nit:11730 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast TOpar*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9257);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11730);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:9259 */
+  /* parser/parser_prod.nit:11732 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 9259);
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 11732);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AAnnotation___visit_all_1));
-  /* parser/parser_prod.nit:9262 */
+  /* parser/parser_prod.nit:11735 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -50965,16 +62018,16 @@ void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9263 */
+    /* parser/parser_prod.nit:11736 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast TCpar*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9263);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11736);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:9265 */
+  /* parser/parser_prod.nit:11738 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -50990,14 +62043,14 @@ void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9266 */
+    /* parser/parser_prod.nit:11739 */
     fra.me.REG[2] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9266);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11739);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -51018,20 +62071,20 @@ void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* parser/parser_prod.nit:9260 */
-    CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* parser/parser_prod.nit:11733 */
+    CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 static const char LOCATE_parser___parser_prod___ATypeAtArg___empty_init[] = "parser_prod::ATypeAtArg::empty_init";
 void parser___parser_prod___ATypeAtArg___empty_init(val_t p0, int* init_table){
-  int itpos305 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypeAtArg].i;
+  int itpos304 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypeAtArg].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos305]) return;
+  if (init_table[itpos304]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9271;
+  fra.me.line = 11744;
   fra.me.meth = LOCATE_parser___parser_prod___ATypeAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -51039,19 +62092,19 @@ void parser___parser_prod___ATypeAtArg___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos305] = 1;
+  init_table[itpos304] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___ATypeAtArg___init_atypeatarg[] = "parser_prod::ATypeAtArg::init_atypeatarg";
 void parser___parser_prod___ATypeAtArg___init_atypeatarg(val_t p0, val_t p1, int* init_table){
-  int itpos306 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypeAtArg].i;
+  int itpos305 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypeAtArg].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos306]) return;
+  if (init_table[itpos305]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9273;
+  fra.me.line = 11746;
   fra.me.meth = LOCATE_parser___parser_prod___ATypeAtArg___init_atypeatarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -51061,28 +62114,28 @@ void parser___parser_prod___ATypeAtArg___init_atypeatarg(val_t p0, val_t p1, int
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9273 */
+  /* parser/parser_prod.nit:11746 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9277 */
+  /* parser/parser_prod.nit:11750 */
   CALL_parser___parser_prod___ATypeAtArg___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9278 */
+  /* parser/parser_prod.nit:11751 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9278);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11751);
   }
   ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9279 */
+  /* parser/parser_prod.nit:11752 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9279);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11752);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos306] = 1;
+  init_table[itpos305] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATypeAtArg___replace_child[] = "parser_prod::ATypeAtArg::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___ATypeAtArg___replace_child[] = "parser_prod::ATypeAtArg::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___ATypeAtArg___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;
@@ -51090,7 +62143,7 @@ void parser___parser_prod___ATypeAtArg___replace_child(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9282;
+  fra.me.line = 11755;
   fra.me.meth = LOCATE_parser___parser_prod___ATypeAtArg___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51102,11 +62155,11 @@ void parser___parser_prod___ATypeAtArg___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9284 */
+  /* parser/parser_prod.nit:11757 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 9284);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 11757);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -51116,7 +62169,189 @@ void parser___parser_prod___ATypeAtArg___replace_child(val_t p0, val_t p1, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9285 */
+    /* parser/parser_prod.nit:11758 */
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(0);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser_prod.nit:11759 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11759);
+      }
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11760 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11760);
+      }
+      /* parser/parser_prod.nit:11761 */
+      ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]) = fra.me.REG[2];
+    } else {
+      /* parser/parser_prod.nit:11763 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11763);
+    }
+    /* parser/parser_prod.nit:11765 */
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypeAtArg___n_type__eq[] = "parser_prod::ATypeAtArg::(parser_nodes::ATypeAtArg::n_type=)";
+void parser___parser_prod___ATypeAtArg___n_type__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11769;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypeAtArg___n_type__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11771 */
+  ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11772 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___ATypeAtArg___visit_all[] = "parser_prod::ATypeAtArg::(parser_nodes::ANode::visit_all)";
+void parser___parser_prod___ATypeAtArg___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___parser_prod;
+  fra.me.line = 11776;
+  fra.me.meth = LOCATE_parser___parser_prod___ATypeAtArg___visit_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11778 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 11778);
+  }
+  fra.me.REG[0] = ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExprAtArg___empty_init[] = "parser_prod::AExprAtArg::empty_init";
+void parser___parser_prod___AExprAtArg___empty_init(val_t p0, int* init_table){
+  int itpos306 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExprAtArg].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos306]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11782;
+  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos306] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExprAtArg___init_aexpratarg[] = "parser_prod::AExprAtArg::init_aexpratarg";
+void parser___parser_prod___AExprAtArg___init_aexpratarg(val_t p0, val_t p1, int* init_table){
+  int itpos307 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExprAtArg].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos307]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11784;
+  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___init_aexpratarg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11784 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* parser/parser_prod.nit:11788 */
+  CALL_parser___parser_prod___AExprAtArg___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
+  /* parser/parser_prod.nit:11789 */
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11789);
+  }
+  ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[2]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11790 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11790);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos307] = 1;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AExprAtArg___replace_child[] = "parser_prod::AExprAtArg::(parser_nodes::ANode::replace_child)";
+void parser___parser_prod___AExprAtArg___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;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11793;
+  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___replace_child;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:11795 */
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 11795);
+  }
+  fra.me.REG[3] = ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser_prod.nit:11796 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -51131,40 +62366,39 @@ void parser___parser_prod___ATypeAtArg___replace_child(val_t p0, val_t p1, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9286 */
+      /* parser/parser_prod.nit:11797 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9286);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11797);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9287 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11798 */
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9287);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11798);
       }
-      /* parser/parser_prod.nit:9288 */
-      ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]) = fra.me.REG[2];
+      /* parser/parser_prod.nit:11799 */
+      ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9290 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9290);
+      /* parser/parser_prod.nit:11801 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11801);
     }
-    /* parser/parser_prod.nit:9292 */
+    /* parser/parser_prod.nit:11803 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___ATypeAtArg___visit_all[] = "parser_prod::ATypeAtArg::(parser_prod::ANode::visit_all)";
-void parser___parser_prod___ATypeAtArg___visit_all(val_t p0, val_t p1){
+static const char LOCATE_parser___parser_prod___AExprAtArg___n_expr__eq[] = "parser_prod::AExprAtArg::(parser_nodes::AExprAtArg::n_expr=)";
+void parser___parser_prod___AExprAtArg___n_expr__eq(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___parser_prod;
-  fra.me.line = 9296;
-  fra.me.meth = LOCATE_parser___parser_prod___ATypeAtArg___visit_all;
+  fra.me.line = 11807;
+  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___n_expr__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
@@ -51172,158 +62406,21 @@ void parser___parser_prod___ATypeAtArg___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9298 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_parser___parser_prod, 9298);
-  }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___parser_prod___AExprAtArg___empty_init[] = "parser_prod::AExprAtArg::empty_init";
-void parser___parser_prod___AExprAtArg___empty_init(val_t p0, int* init_table){
-  int itpos307 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExprAtArg].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos307]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9302;
-  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos307] = 1;
-  return;
-}
-static const char LOCATE_parser___parser_prod___AExprAtArg___init_aexpratarg[] = "parser_prod::AExprAtArg::init_aexpratarg";
-void parser___parser_prod___AExprAtArg___init_aexpratarg(val_t p0, val_t p1, int* init_table){
-  int itpos308 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExprAtArg].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos308]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9304;
-  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___init_aexpratarg;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9304 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9308 */
-  CALL_parser___parser_prod___AExprAtArg___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9309 */
-  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9309);
-  }
-  ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9310 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9310);
-  }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  init_table[itpos308] = 1;
-  return;
-}
-static const char LOCATE_parser___parser_prod___AExprAtArg___replace_child[] = "parser_prod::AExprAtArg::(parser_prod::ANode::replace_child)";
-void parser___parser_prod___AExprAtArg___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;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9313;
-  fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___replace_child;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9315 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9315);
-  }
-  fra.me.REG[3] = ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9316 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9317 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9317);
-      }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9318 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9318);
-      }
-      /* parser/parser_prod.nit:9319 */
-      ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]) = fra.me.REG[2];
-    } else {
-      /* parser/parser_prod.nit:9321 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9321);
-    }
-    /* parser/parser_prod.nit:9323 */
-    goto label1;
-  }
-  label1: while(0);
+  /* parser/parser_prod.nit:11809 */
+  ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11810 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AExprAtArg___visit_all[] = "parser_prod::AExprAtArg::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AExprAtArg___visit_all[] = "parser_prod::AExprAtArg::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AExprAtArg___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___parser_prod;
-  fra.me.line = 9327;
+  fra.me.line = 11814;
   fra.me.meth = LOCATE_parser___parser_prod___AExprAtArg___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -51332,26 +62429,26 @@ void parser___parser_prod___AExprAtArg___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9329 */
+  /* parser/parser_prod.nit:11816 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 9329);
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 11816);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AExprAtArg____n_expr(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAtAtArg___empty_init[] = "parser_prod::AAtAtArg::empty_init";
 void parser___parser_prod___AAtAtArg___empty_init(val_t p0, int* init_table){
-  int itpos309 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAtAtArg].i;
+  int itpos308 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAtAtArg].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos309]) return;
+  if (init_table[itpos308]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9333;
+  fra.me.line = 11820;
   fra.me.meth = LOCATE_parser___parser_prod___AAtAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -51359,19 +62456,19 @@ void parser___parser_prod___AAtAtArg___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos309] = 1;
+  init_table[itpos308] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AAtAtArg___init_aatatarg[] = "parser_prod::AAtAtArg::init_aatatarg";
 void parser___parser_prod___AAtAtArg___init_aatatarg(val_t p0, val_t p1, int* init_table){
-  int itpos310 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAtAtArg].i;
+  int itpos309 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAtAtArg].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos310]) return;
+  if (init_table[itpos309]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9335;
+  fra.me.line = 11822;
   fra.me.meth = LOCATE_parser___parser_prod___AAtAtArg___init_aatatarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -51381,28 +62478,28 @@ void parser___parser_prod___AAtAtArg___init_aatatarg(val_t p0, val_t p1, int* in
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9335 */
+  /* parser/parser_prod.nit:11822 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9339 */
+  /* parser/parser_prod.nit:11826 */
   CALL_parser___parser_prod___AAtAtArg___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9340 */
+  /* parser/parser_prod.nit:11827 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9340);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11827);
   }
   ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9341 */
+  /* parser/parser_prod.nit:11828 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9341);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11828);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos310] = 1;
+  init_table[itpos309] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAtAtArg___replace_child[] = "parser_prod::AAtAtArg::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AAtAtArg___replace_child[] = "parser_prod::AAtAtArg::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AAtAtArg___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;
@@ -51410,7 +62507,7 @@ void parser___parser_prod___AAtAtArg___replace_child(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9344;
+  fra.me.line = 11831;
   fra.me.meth = LOCATE_parser___parser_prod___AAtAtArg___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51422,7 +62519,7 @@ void parser___parser_prod___AAtAtArg___replace_child(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9346 */
+  /* parser/parser_prod.nit:11833 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -51437,7 +62534,7 @@ void parser___parser_prod___AAtAtArg___replace_child(val_t p0, val_t p1, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9347 */
+    /* parser/parser_prod.nit:11834 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -51452,38 +62549,65 @@ void parser___parser_prod___AAtAtArg___replace_child(val_t p0, val_t p1, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9348 */
+      /* parser/parser_prod.nit:11835 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9348);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11835);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9349 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11836 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast AAnnotations*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9349);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11836);
       }
-      /* parser/parser_prod.nit:9350 */
+      /* parser/parser_prod.nit:11837 */
       ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9352 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9352);
+      /* parser/parser_prod.nit:11839 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11839);
     }
-    /* parser/parser_prod.nit:9354 */
+    /* parser/parser_prod.nit:11841 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AAtAtArg___visit_all[] = "parser_prod::AAtAtArg::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AAtAtArg___n_annotations__eq[] = "parser_prod::AAtAtArg::(parser_nodes::Prod::n_annotations=)";
+void parser___parser_prod___AAtAtArg___n_annotations__eq(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___parser_prod;
+  fra.me.line = 11845;
+  fra.me.meth = LOCATE_parser___parser_prod___AAtAtArg___n_annotations__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11847 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11848 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11848);
+  }
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AAtAtArg___visit_all[] = "parser_prod::AAtAtArg::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AAtAtArg___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9358;
+  fra.me.line = 11852;
   fra.me.meth = LOCATE_parser___parser_prod___AAtAtArg___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -51492,21 +62616,21 @@ void parser___parser_prod___AAtAtArg___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9360 */
+  /* parser/parser_prod.nit:11854 */
   fra.me.REG[0] = ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIdAtid___empty_init[] = "parser_prod::AIdAtid::empty_init";
 void parser___parser_prod___AIdAtid___empty_init(val_t p0, int* init_table){
-  int itpos311 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdAtid].i;
+  int itpos310 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdAtid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos311]) return;
+  if (init_table[itpos310]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9364;
+  fra.me.line = 11858;
   fra.me.meth = LOCATE_parser___parser_prod___AIdAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -51514,19 +62638,19 @@ void parser___parser_prod___AIdAtid___empty_init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos311] = 1;
+  init_table[itpos310] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AIdAtid___init_aidatid[] = "parser_prod::AIdAtid::init_aidatid";
 void parser___parser_prod___AIdAtid___init_aidatid(val_t p0, val_t p1, int* init_table){
-  int itpos312 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdAtid].i;
+  int itpos311 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIdAtid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos312]) return;
+  if (init_table[itpos311]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9366;
+  fra.me.line = 11860;
   fra.me.meth = LOCATE_parser___parser_prod___AIdAtid___init_aidatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -51536,28 +62660,28 @@ void parser___parser_prod___AIdAtid___init_aidatid(val_t p0, val_t p1, int* init
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9366 */
+  /* parser/parser_prod.nit:11860 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9370 */
+  /* parser/parser_prod.nit:11864 */
   CALL_parser___parser_prod___AIdAtid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9371 */
+  /* parser/parser_prod.nit:11865 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9371);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11865);
   }
   ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9372 */
+  /* parser/parser_prod.nit:11866 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9372);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11866);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos312] = 1;
+  init_table[itpos311] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIdAtid___replace_child[] = "parser_prod::AIdAtid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AIdAtid___replace_child[] = "parser_prod::AIdAtid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AIdAtid___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;
@@ -51565,7 +62689,7 @@ void parser___parser_prod___AIdAtid___replace_child(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___parser_prod;
-  fra.me.line = 9375;
+  fra.me.line = 11869;
   fra.me.meth = LOCATE_parser___parser_prod___AIdAtid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51577,11 +62701,11 @@ void parser___parser_prod___AIdAtid___replace_child(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_prod.nit:9377 */
+  /* parser/parser_prod.nit:11871 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9377);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11871);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -51591,7 +62715,7 @@ void parser___parser_prod___AIdAtid___replace_child(val_t p0, val_t p1, val_t p2
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9378 */
+    /* parser/parser_prod.nit:11872 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -51606,39 +62730,61 @@ void parser___parser_prod___AIdAtid___replace_child(val_t p0, val_t p1, val_t p2
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9379 */
+      /* parser/parser_prod.nit:11873 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9379);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11873);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9380 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11874 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast TId*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9380);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11874);
       }
-      /* parser/parser_prod.nit:9381 */
+      /* parser/parser_prod.nit:11875 */
       ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9383 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9383);
+      /* parser/parser_prod.nit:11877 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11877);
     }
-    /* parser/parser_prod.nit:9385 */
+    /* parser/parser_prod.nit:11879 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AIdAtid___visit_all[] = "parser_prod::AIdAtid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AIdAtid___n_id__eq[] = "parser_prod::AIdAtid::(parser_nodes::AAtid::n_id=)";
+void parser___parser_prod___AIdAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11883;
+  fra.me.meth = LOCATE_parser___parser_prod___AIdAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11885 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11886 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AIdAtid___visit_all[] = "parser_prod::AIdAtid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AIdAtid___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___parser_prod;
-  fra.me.line = 9389;
+  fra.me.line = 11890;
   fra.me.meth = LOCATE_parser___parser_prod___AIdAtid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -51647,26 +62793,26 @@ void parser___parser_prod___AIdAtid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9391 */
+  /* parser/parser_prod.nit:11892 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9391);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11892);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwexternAtid___empty_init[] = "parser_prod::AKwexternAtid::empty_init";
 void parser___parser_prod___AKwexternAtid___empty_init(val_t p0, int* init_table){
-  int itpos313 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwexternAtid].i;
+  int itpos312 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwexternAtid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos313]) return;
+  if (init_table[itpos312]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9395;
+  fra.me.line = 11896;
   fra.me.meth = LOCATE_parser___parser_prod___AKwexternAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -51674,19 +62820,19 @@ void parser___parser_prod___AKwexternAtid___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos313] = 1;
+  init_table[itpos312] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwexternAtid___init_akwexternatid[] = "parser_prod::AKwexternAtid::init_akwexternatid";
 void parser___parser_prod___AKwexternAtid___init_akwexternatid(val_t p0, val_t p1, int* init_table){
-  int itpos314 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwexternAtid].i;
+  int itpos313 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwexternAtid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos314]) return;
+  if (init_table[itpos313]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9397;
+  fra.me.line = 11898;
   fra.me.meth = LOCATE_parser___parser_prod___AKwexternAtid___init_akwexternatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -51696,28 +62842,28 @@ void parser___parser_prod___AKwexternAtid___init_akwexternatid(val_t p0, val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9397 */
+  /* parser/parser_prod.nit:11898 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9401 */
+  /* parser/parser_prod.nit:11902 */
   CALL_parser___parser_prod___AKwexternAtid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9402 */
+  /* parser/parser_prod.nit:11903 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9402);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11903);
   }
   ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9403 */
+  /* parser/parser_prod.nit:11904 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9403);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11904);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos314] = 1;
+  init_table[itpos313] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwexternAtid___replace_child[] = "parser_prod::AKwexternAtid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AKwexternAtid___replace_child[] = "parser_prod::AKwexternAtid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AKwexternAtid___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;
@@ -51725,7 +62871,7 @@ void parser___parser_prod___AKwexternAtid___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9406;
+  fra.me.line = 11907;
   fra.me.meth = LOCATE_parser___parser_prod___AKwexternAtid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51737,11 +62883,11 @@ void parser___parser_prod___AKwexternAtid___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9408 */
+  /* parser/parser_prod.nit:11909 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9408);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11909);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -51751,7 +62897,7 @@ void parser___parser_prod___AKwexternAtid___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9409 */
+    /* parser/parser_prod.nit:11910 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -51766,39 +62912,61 @@ void parser___parser_prod___AKwexternAtid___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9410 */
+      /* parser/parser_prod.nit:11911 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9410);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11911);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9411 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11912 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast TKwextern*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9411);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11912);
       }
-      /* parser/parser_prod.nit:9412 */
+      /* parser/parser_prod.nit:11913 */
       ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9414 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9414);
+      /* parser/parser_prod.nit:11915 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11915);
     }
-    /* parser/parser_prod.nit:9416 */
+    /* parser/parser_prod.nit:11917 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwexternAtid___visit_all[] = "parser_prod::AKwexternAtid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AKwexternAtid___n_id__eq[] = "parser_prod::AKwexternAtid::(parser_nodes::AAtid::n_id=)";
+void parser___parser_prod___AKwexternAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11921;
+  fra.me.meth = LOCATE_parser___parser_prod___AKwexternAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11923 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11924 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AKwexternAtid___visit_all[] = "parser_prod::AKwexternAtid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AKwexternAtid___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___parser_prod;
-  fra.me.line = 9420;
+  fra.me.line = 11928;
   fra.me.meth = LOCATE_parser___parser_prod___AKwexternAtid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -51807,26 +62975,26 @@ void parser___parser_prod___AKwexternAtid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9422 */
+  /* parser/parser_prod.nit:11930 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9422);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11930);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwinternAtid___empty_init[] = "parser_prod::AKwinternAtid::empty_init";
 void parser___parser_prod___AKwinternAtid___empty_init(val_t p0, int* init_table){
-  int itpos315 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwinternAtid].i;
+  int itpos314 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwinternAtid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos315]) return;
+  if (init_table[itpos314]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9426;
+  fra.me.line = 11934;
   fra.me.meth = LOCATE_parser___parser_prod___AKwinternAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -51834,19 +63002,19 @@ void parser___parser_prod___AKwinternAtid___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos315] = 1;
+  init_table[itpos314] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwinternAtid___init_akwinternatid[] = "parser_prod::AKwinternAtid::init_akwinternatid";
 void parser___parser_prod___AKwinternAtid___init_akwinternatid(val_t p0, val_t p1, int* init_table){
-  int itpos316 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwinternAtid].i;
+  int itpos315 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwinternAtid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos316]) return;
+  if (init_table[itpos315]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9428;
+  fra.me.line = 11936;
   fra.me.meth = LOCATE_parser___parser_prod___AKwinternAtid___init_akwinternatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -51856,28 +63024,28 @@ void parser___parser_prod___AKwinternAtid___init_akwinternatid(val_t p0, val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9428 */
+  /* parser/parser_prod.nit:11936 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9432 */
+  /* parser/parser_prod.nit:11940 */
   CALL_parser___parser_prod___AKwinternAtid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9433 */
+  /* parser/parser_prod.nit:11941 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9433);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11941);
   }
   ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9434 */
+  /* parser/parser_prod.nit:11942 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9434);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11942);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos316] = 1;
+  init_table[itpos315] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwinternAtid___replace_child[] = "parser_prod::AKwinternAtid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AKwinternAtid___replace_child[] = "parser_prod::AKwinternAtid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AKwinternAtid___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;
@@ -51885,7 +63053,7 @@ void parser___parser_prod___AKwinternAtid___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9437;
+  fra.me.line = 11945;
   fra.me.meth = LOCATE_parser___parser_prod___AKwinternAtid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -51897,11 +63065,11 @@ void parser___parser_prod___AKwinternAtid___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9439 */
+  /* parser/parser_prod.nit:11947 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9439);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11947);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -51911,7 +63079,7 @@ void parser___parser_prod___AKwinternAtid___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9440 */
+    /* parser/parser_prod.nit:11948 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -51926,39 +63094,61 @@ void parser___parser_prod___AKwinternAtid___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9441 */
+      /* parser/parser_prod.nit:11949 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9441);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11949);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9442 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11950 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwintern, ID_parser___parser_nodes___TKwintern)) /*cast TKwintern*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9442);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11950);
       }
-      /* parser/parser_prod.nit:9443 */
+      /* parser/parser_prod.nit:11951 */
       ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9445 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9445);
+      /* parser/parser_prod.nit:11953 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11953);
     }
-    /* parser/parser_prod.nit:9447 */
+    /* parser/parser_prod.nit:11955 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwinternAtid___visit_all[] = "parser_prod::AKwinternAtid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AKwinternAtid___n_id__eq[] = "parser_prod::AKwinternAtid::(parser_nodes::AAtid::n_id=)";
+void parser___parser_prod___AKwinternAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11959;
+  fra.me.meth = LOCATE_parser___parser_prod___AKwinternAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11961 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:11962 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AKwinternAtid___visit_all[] = "parser_prod::AKwinternAtid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AKwinternAtid___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___parser_prod;
-  fra.me.line = 9451;
+  fra.me.line = 11966;
   fra.me.meth = LOCATE_parser___parser_prod___AKwinternAtid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -51967,26 +63157,26 @@ void parser___parser_prod___AKwinternAtid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9453 */
+  /* parser/parser_prod.nit:11968 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9453);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11968);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwreadableAtid___empty_init[] = "parser_prod::AKwreadableAtid::empty_init";
 void parser___parser_prod___AKwreadableAtid___empty_init(val_t p0, int* init_table){
-  int itpos317 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwreadableAtid].i;
+  int itpos316 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwreadableAtid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos317]) return;
+  if (init_table[itpos316]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9457;
+  fra.me.line = 11972;
   fra.me.meth = LOCATE_parser___parser_prod___AKwreadableAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -51994,19 +63184,19 @@ void parser___parser_prod___AKwreadableAtid___empty_init(val_t p0, int* init_tab
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos317] = 1;
+  init_table[itpos316] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwreadableAtid___init_akwreadableatid[] = "parser_prod::AKwreadableAtid::init_akwreadableatid";
 void parser___parser_prod___AKwreadableAtid___init_akwreadableatid(val_t p0, val_t p1, int* init_table){
-  int itpos318 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwreadableAtid].i;
+  int itpos317 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwreadableAtid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos318]) return;
+  if (init_table[itpos317]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9459;
+  fra.me.line = 11974;
   fra.me.meth = LOCATE_parser___parser_prod___AKwreadableAtid___init_akwreadableatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -52016,28 +63206,28 @@ void parser___parser_prod___AKwreadableAtid___init_akwreadableatid(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9459 */
+  /* parser/parser_prod.nit:11974 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9463 */
+  /* parser/parser_prod.nit:11978 */
   CALL_parser___parser_prod___AKwreadableAtid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9464 */
+  /* parser/parser_prod.nit:11979 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9464);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 11979);
   }
   ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9465 */
+  /* parser/parser_prod.nit:11980 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9465);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11980);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos318] = 1;
+  init_table[itpos317] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwreadableAtid___replace_child[] = "parser_prod::AKwreadableAtid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AKwreadableAtid___replace_child[] = "parser_prod::AKwreadableAtid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AKwreadableAtid___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;
@@ -52045,7 +63235,7 @@ void parser___parser_prod___AKwreadableAtid___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9468;
+  fra.me.line = 11983;
   fra.me.meth = LOCATE_parser___parser_prod___AKwreadableAtid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -52057,11 +63247,11 @@ void parser___parser_prod___AKwreadableAtid___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9470 */
+  /* parser/parser_prod.nit:11985 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9470);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 11985);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -52071,7 +63261,7 @@ void parser___parser_prod___AKwreadableAtid___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9471 */
+    /* parser/parser_prod.nit:11986 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -52086,39 +63276,61 @@ void parser___parser_prod___AKwreadableAtid___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9472 */
+      /* parser/parser_prod.nit:11987 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9472);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 11987);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9473 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:11988 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast TKwreadable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9473);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 11988);
       }
-      /* parser/parser_prod.nit:9474 */
+      /* parser/parser_prod.nit:11989 */
       ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9476 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9476);
+      /* parser/parser_prod.nit:11991 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 11991);
     }
-    /* parser/parser_prod.nit:9478 */
+    /* parser/parser_prod.nit:11993 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwreadableAtid___visit_all[] = "parser_prod::AKwreadableAtid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AKwreadableAtid___n_id__eq[] = "parser_prod::AKwreadableAtid::(parser_nodes::AAtid::n_id=)";
+void parser___parser_prod___AKwreadableAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 11997;
+  fra.me.meth = LOCATE_parser___parser_prod___AKwreadableAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:11999 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:12000 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AKwreadableAtid___visit_all[] = "parser_prod::AKwreadableAtid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AKwreadableAtid___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___parser_prod;
-  fra.me.line = 9482;
+  fra.me.line = 12004;
   fra.me.meth = LOCATE_parser___parser_prod___AKwreadableAtid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -52127,26 +63339,26 @@ void parser___parser_prod___AKwreadableAtid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9484 */
+  /* parser/parser_prod.nit:12006 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9484);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 12006);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwwritableAtid___empty_init[] = "parser_prod::AKwwritableAtid::empty_init";
 void parser___parser_prod___AKwwritableAtid___empty_init(val_t p0, int* init_table){
-  int itpos319 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwwritableAtid].i;
+  int itpos318 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwwritableAtid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos319]) return;
+  if (init_table[itpos318]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9488;
+  fra.me.line = 12010;
   fra.me.meth = LOCATE_parser___parser_prod___AKwwritableAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -52154,19 +63366,19 @@ void parser___parser_prod___AKwwritableAtid___empty_init(val_t p0, int* init_tab
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos319] = 1;
+  init_table[itpos318] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwwritableAtid___init_akwwritableatid[] = "parser_prod::AKwwritableAtid::init_akwwritableatid";
 void parser___parser_prod___AKwwritableAtid___init_akwwritableatid(val_t p0, val_t p1, int* init_table){
-  int itpos320 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwwritableAtid].i;
+  int itpos319 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwwritableAtid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos320]) return;
+  if (init_table[itpos319]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9490;
+  fra.me.line = 12012;
   fra.me.meth = LOCATE_parser___parser_prod___AKwwritableAtid___init_akwwritableatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -52176,28 +63388,28 @@ void parser___parser_prod___AKwwritableAtid___init_akwwritableatid(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9490 */
+  /* parser/parser_prod.nit:12012 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9494 */
+  /* parser/parser_prod.nit:12016 */
   CALL_parser___parser_prod___AKwwritableAtid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9495 */
+  /* parser/parser_prod.nit:12017 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9495);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 12017);
   }
   ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9496 */
+  /* parser/parser_prod.nit:12018 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9496);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 12018);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos320] = 1;
+  init_table[itpos319] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwwritableAtid___replace_child[] = "parser_prod::AKwwritableAtid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AKwwritableAtid___replace_child[] = "parser_prod::AKwwritableAtid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AKwwritableAtid___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;
@@ -52205,7 +63417,7 @@ void parser___parser_prod___AKwwritableAtid___replace_child(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9499;
+  fra.me.line = 12021;
   fra.me.meth = LOCATE_parser___parser_prod___AKwwritableAtid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -52217,11 +63429,11 @@ void parser___parser_prod___AKwwritableAtid___replace_child(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9501 */
+  /* parser/parser_prod.nit:12023 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9501);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 12023);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -52231,7 +63443,7 @@ void parser___parser_prod___AKwwritableAtid___replace_child(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9502 */
+    /* parser/parser_prod.nit:12024 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -52246,39 +63458,61 @@ void parser___parser_prod___AKwwritableAtid___replace_child(val_t p0, val_t p1,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9503 */
+      /* parser/parser_prod.nit:12025 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9503);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 12025);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9504 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:12026 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast TKwwritable*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9504);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 12026);
       }
-      /* parser/parser_prod.nit:9505 */
+      /* parser/parser_prod.nit:12027 */
       ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9507 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9507);
+      /* parser/parser_prod.nit:12029 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 12029);
     }
-    /* parser/parser_prod.nit:9509 */
+    /* parser/parser_prod.nit:12031 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwwritableAtid___visit_all[] = "parser_prod::AKwwritableAtid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AKwwritableAtid___n_id__eq[] = "parser_prod::AKwwritableAtid::(parser_nodes::AAtid::n_id=)";
+void parser___parser_prod___AKwwritableAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 12035;
+  fra.me.meth = LOCATE_parser___parser_prod___AKwwritableAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:12037 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:12038 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AKwwritableAtid___visit_all[] = "parser_prod::AKwwritableAtid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AKwwritableAtid___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___parser_prod;
-  fra.me.line = 9513;
+  fra.me.line = 12042;
   fra.me.meth = LOCATE_parser___parser_prod___AKwwritableAtid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -52287,26 +63521,26 @@ void parser___parser_prod___AKwwritableAtid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9515 */
+  /* parser/parser_prod.nit:12044 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9515);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 12044);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwimportAtid___empty_init[] = "parser_prod::AKwimportAtid::empty_init";
 void parser___parser_prod___AKwimportAtid___empty_init(val_t p0, int* init_table){
-  int itpos321 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwimportAtid].i;
+  int itpos320 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwimportAtid].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos321]) return;
+  if (init_table[itpos320]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9519;
+  fra.me.line = 12048;
   fra.me.meth = LOCATE_parser___parser_prod___AKwimportAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -52314,19 +63548,19 @@ void parser___parser_prod___AKwimportAtid___empty_init(val_t p0, int* init_table
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos321] = 1;
+  init_table[itpos320] = 1;
   return;
 }
 static const char LOCATE_parser___parser_prod___AKwimportAtid___init_akwimportatid[] = "parser_prod::AKwimportAtid::init_akwimportatid";
 void parser___parser_prod___AKwimportAtid___init_akwimportatid(val_t p0, val_t p1, int* init_table){
-  int itpos322 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwimportAtid].i;
+  int itpos321 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AKwimportAtid].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos322]) return;
+  if (init_table[itpos321]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9521;
+  fra.me.line = 12050;
   fra.me.meth = LOCATE_parser___parser_prod___AKwimportAtid___init_akwimportatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -52336,28 +63570,28 @@ void parser___parser_prod___AKwimportAtid___init_akwimportatid(val_t p0, val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9521 */
+  /* parser/parser_prod.nit:12050 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9525 */
+  /* parser/parser_prod.nit:12054 */
   CALL_parser___parser_prod___AKwimportAtid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
-  /* parser/parser_prod.nit:9526 */
+  /* parser/parser_prod.nit:12055 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9526);
+    nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 12055);
   }
   ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[2]) = fra.me.REG[1];
-  /* parser/parser_prod.nit:9527 */
+  /* parser/parser_prod.nit:12056 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9527);
+    nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 12056);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  init_table[itpos322] = 1;
+  init_table[itpos321] = 1;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwimportAtid___replace_child[] = "parser_prod::AKwimportAtid::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___AKwimportAtid___replace_child[] = "parser_prod::AKwimportAtid::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___AKwimportAtid___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;
@@ -52365,7 +63599,7 @@ void parser___parser_prod___AKwimportAtid___replace_child(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9530;
+  fra.me.line = 12059;
   fra.me.meth = LOCATE_parser___parser_prod___AKwimportAtid___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -52377,11 +63611,11 @@ void parser___parser_prod___AKwimportAtid___replace_child(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* parser/parser_prod.nit:9532 */
+  /* parser/parser_prod.nit:12061 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9532);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 12061);
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -52391,7 +63625,7 @@ void parser___parser_prod___AKwimportAtid___replace_child(val_t p0, val_t p1, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9533 */
+    /* parser/parser_prod.nit:12062 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -52406,39 +63640,61 @@ void parser___parser_prod___AKwimportAtid___replace_child(val_t p0, val_t p1, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* parser/parser_prod.nit:9534 */
+      /* parser/parser_prod.nit:12063 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9534);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 12063);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9535 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:12064 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast TKwimport*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9535);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 12064);
       }
-      /* parser/parser_prod.nit:9536 */
+      /* parser/parser_prod.nit:12065 */
       ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[2];
     } else {
-      /* parser/parser_prod.nit:9538 */
-      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 9538);
+      /* parser/parser_prod.nit:12067 */
+      nit_abort("Aborted", NULL, LOCATE_parser___parser_prod, 12067);
     }
-    /* parser/parser_prod.nit:9540 */
+    /* parser/parser_prod.nit:12069 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___AKwimportAtid___visit_all[] = "parser_prod::AKwimportAtid::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___AKwimportAtid___n_id__eq[] = "parser_prod::AKwimportAtid::(parser_nodes::AAtid::n_id=)";
+void parser___parser_prod___AKwimportAtid___n_id__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser___parser_prod;
+  fra.me.line = 12073;
+  fra.me.meth = LOCATE_parser___parser_prod___AKwimportAtid___n_id__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:12075 */
+  ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_prod.nit:12076 */
+  CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___parser_prod___AKwimportAtid___visit_all[] = "parser_prod::AKwimportAtid::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___AKwimportAtid___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___parser_prod;
-  fra.me.line = 9544;
+  fra.me.line = 12080;
   fra.me.meth = LOCATE_parser___parser_prod___AKwimportAtid___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -52447,18 +63703,18 @@ void parser___parser_prod___AKwimportAtid___visit_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9546 */
+  /* parser/parser_prod.nit:12082 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 9546);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 12082);
   }
   fra.me.REG[0] = ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___Start___replace_child[] = "parser_prod::Start::(parser_prod::ANode::replace_child)";
+static const char LOCATE_parser___parser_prod___Start___replace_child[] = "parser_prod::Start::(parser_nodes::ANode::replace_child)";
 void parser___parser_prod___Start___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;
@@ -52466,7 +63722,7 @@ void parser___parser_prod___Start___replace_child(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___parser_prod;
-  fra.me.line = 9551;
+  fra.me.line = 12087;
   fra.me.meth = LOCATE_parser___parser_prod___Start___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -52478,7 +63734,7 @@ void parser___parser_prod___Start___replace_child(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_prod.nit:9553 */
+  /* parser/parser_prod.nit:12089 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
@@ -52493,7 +63749,7 @@ void parser___parser_prod___Start___replace_child(val_t p0, val_t p1, val_t p2){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9554 */
+    /* parser/parser_prod.nit:12090 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -52508,31 +63764,31 @@ void parser___parser_prod___Start___replace_child(val_t p0, val_t p1, val_t p2){
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* parser/parser_prod.nit:9556 */
+      /* parser/parser_prod.nit:12092 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 9556);
+        nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 12092);
       }
-      CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* parser/parser_prod.nit:9557 */
+      CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* parser/parser_prod.nit:12093 */
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AModule, ID_parser___parser_nodes___AModule)) /*cast AModule*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 9557);
+        nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 12093);
       }
-      /* parser/parser_prod.nit:9558 */
+      /* parser/parser_prod.nit:12094 */
       ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]) = fra.me.REG[2];
     }
-    /* parser/parser_prod.nit:9560 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-    /* parser/parser_prod.nit:9561 */
+    /* parser/parser_prod.nit:12096 */
+    CALL_parser___parser_nodes___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+    /* parser/parser_prod.nit:12097 */
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_parser___parser_prod___Start___visit_all[] = "parser_prod::Start::(parser_prod::ANode::visit_all)";
+static const char LOCATE_parser___parser_prod___Start___visit_all[] = "parser_prod::Start::(parser_nodes::ANode::visit_all)";
 void parser___parser_prod___Start___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -52540,7 +63796,7 @@ void parser___parser_prod___Start___visit_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser___parser_prod;
-  fra.me.line = 9565;
+  fra.me.line = 12101;
   fra.me.meth = LOCATE_parser___parser_prod___Start___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -52551,9 +63807,9 @@ void parser___parser_prod___Start___visit_all(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* parser/parser_prod.nit:9565 */
+  /* parser/parser_prod.nit:12101 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* parser/parser_prod.nit:9567 */
+  /* parser/parser_prod.nit:12103 */
   fra.me.REG[3] = ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -52569,23 +63825,23 @@ void parser___parser_prod___Start___visit_all(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* parser/parser_prod.nit:9568 */
+    /* parser/parser_prod.nit:12104 */
     fra.me.REG[3] = ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[2]);
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModule, ID_parser___parser_nodes___AModule)) /*cast AModule*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 9568);
+      nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 12104);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* parser/parser_prod.nit:9570 */
+  /* parser/parser_prod.nit:12106 */
   REGB0 = TAG_Bool(ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_parser___parser_prod, 9570);
+    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_parser___parser_prod, 12106);
   }
   fra.me.REG[2] = ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[2]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
index dfc1d7b..9381144 100644 (file)
 #define parser___parser_prod_sep
 #include "parser___lexer._sep.h"
 #include <nit_common.h>
-
-extern const classtable_elt_t VFT_parser___parser_prod___Visitor[];
 extern const char LOCATE_parser___parser_prod[];
 extern const int SFT_parser___parser_prod[];
-#define ATTR_parser___parser_prod___ANode____parent(recv) ATTR(recv, (SFT_parser___parser_prod[0] + 0))
-#define CALL_parser___parser_prod___ANode___parent(recv) ((parser___parser_prod___ANode___parent_t)CALL((recv), (SFT_parser___parser_prod[1] + 0)))
-#define CALL_parser___parser_prod___ANode___parent__eq(recv) ((parser___parser_prod___ANode___parent__eq_t)CALL((recv), (SFT_parser___parser_prod[1] + 1)))
-#define CALL_parser___parser_prod___ANode___remove_child(recv) ((parser___parser_prod___ANode___remove_child_t)CALL((recv), (SFT_parser___parser_prod[1] + 2)))
-#define CALL_parser___parser_prod___ANode___replace_child(recv) ((parser___parser_prod___ANode___replace_child_t)CALL((recv), (SFT_parser___parser_prod[1] + 3)))
-#define CALL_parser___parser_prod___ANode___replace_with(recv) ((parser___parser_prod___ANode___replace_with_t)CALL((recv), (SFT_parser___parser_prod[1] + 4)))
-#define CALL_parser___parser_prod___ANode___visit_all(recv) ((parser___parser_prod___ANode___visit_all_t)CALL((recv), (SFT_parser___parser_prod[1] + 5)))
-#define CALL_SUPER_parser___parser_prod___Prod___replace_with(recv) ((parser___parser_prod___Prod___replace_with_t)CALL((recv), (SFT_parser___parser_prod[2] + 0)))
-#define ID_parser___parser_prod___Visitor (SFT_parser___parser_prod[3])
-#define COLOR_parser___parser_prod___Visitor (SFT_parser___parser_prod[4])
-#define ATTR_parser___parser_prod___Visitor____current_node(recv) ATTR(recv, (SFT_parser___parser_prod[5] + 0))
-#define INIT_TABLE_POS_parser___parser_prod___Visitor (SFT_parser___parser_prod[6] + 0)
-#define CALL_parser___parser_prod___Visitor___visit(recv) ((parser___parser_prod___Visitor___visit_t)CALL((recv), (SFT_parser___parser_prod[6] + 1)))
-#define CALL_parser___parser_prod___Visitor___enter_visit(recv) ((parser___parser_prod___Visitor___enter_visit_t)CALL((recv), (SFT_parser___parser_prod[6] + 2)))
-#define CALL_parser___parser_prod___Visitor___current_node(recv) ((parser___parser_prod___Visitor___current_node_t)CALL((recv), (SFT_parser___parser_prod[6] + 3)))
-#define CALL_parser___parser_prod___Visitor___init(recv) ((parser___parser_prod___Visitor___init_t)CALL((recv), (SFT_parser___parser_prod[6] + 4)))
-#define CALL_parser___parser_prod___AModule___empty_init(recv) ((parser___parser_prod___AModule___empty_init_t)CALL((recv), (SFT_parser___parser_prod[7] + 0)))
-#define CALL_parser___parser_prod___AModule___init_amodule(recv) ((parser___parser_prod___AModule___init_amodule_t)CALL((recv), (SFT_parser___parser_prod[7] + 1)))
-#define CALL_parser___parser_prod___AModuledecl___empty_init(recv) ((parser___parser_prod___AModuledecl___empty_init_t)CALL((recv), (SFT_parser___parser_prod[8] + 0)))
-#define CALL_parser___parser_prod___AModuledecl___init_amoduledecl(recv) ((parser___parser_prod___AModuledecl___init_amoduledecl_t)CALL((recv), (SFT_parser___parser_prod[8] + 1)))
-#define CALL_parser___parser_prod___AStdImport___empty_init(recv) ((parser___parser_prod___AStdImport___empty_init_t)CALL((recv), (SFT_parser___parser_prod[9] + 0)))
-#define CALL_parser___parser_prod___AStdImport___init_astdimport(recv) ((parser___parser_prod___AStdImport___init_astdimport_t)CALL((recv), (SFT_parser___parser_prod[9] + 1)))
-#define CALL_parser___parser_prod___ANoImport___empty_init(recv) ((parser___parser_prod___ANoImport___empty_init_t)CALL((recv), (SFT_parser___parser_prod[10] + 0)))
-#define CALL_parser___parser_prod___ANoImport___init_anoimport(recv) ((parser___parser_prod___ANoImport___init_anoimport_t)CALL((recv), (SFT_parser___parser_prod[10] + 1)))
-#define CALL_parser___parser_prod___APublicVisibility___empty_init(recv) ((parser___parser_prod___APublicVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[11] + 0)))
-#define CALL_parser___parser_prod___APublicVisibility___init_apublicvisibility(recv) ((parser___parser_prod___APublicVisibility___init_apublicvisibility_t)CALL((recv), (SFT_parser___parser_prod[11] + 1)))
-#define CALL_parser___parser_prod___APrivateVisibility___empty_init(recv) ((parser___parser_prod___APrivateVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[12] + 0)))
-#define CALL_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(recv) ((parser___parser_prod___APrivateVisibility___init_aprivatevisibility_t)CALL((recv), (SFT_parser___parser_prod[12] + 1)))
-#define CALL_parser___parser_prod___AProtectedVisibility___empty_init(recv) ((parser___parser_prod___AProtectedVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[13] + 0)))
-#define CALL_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(recv) ((parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility_t)CALL((recv), (SFT_parser___parser_prod[13] + 1)))
-#define CALL_parser___parser_prod___AIntrudeVisibility___empty_init(recv) ((parser___parser_prod___AIntrudeVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[14] + 0)))
-#define CALL_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(recv) ((parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility_t)CALL((recv), (SFT_parser___parser_prod[14] + 1)))
-#define CALL_parser___parser_prod___AStdClassdef___empty_init(recv) ((parser___parser_prod___AStdClassdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[15] + 0)))
-#define CALL_parser___parser_prod___AStdClassdef___init_astdclassdef(recv) ((parser___parser_prod___AStdClassdef___init_astdclassdef_t)CALL((recv), (SFT_parser___parser_prod[15] + 1)))
-#define CALL_parser___parser_prod___ATopClassdef___empty_init(recv) ((parser___parser_prod___ATopClassdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[16] + 0)))
-#define CALL_parser___parser_prod___ATopClassdef___init_atopclassdef(recv) ((parser___parser_prod___ATopClassdef___init_atopclassdef_t)CALL((recv), (SFT_parser___parser_prod[16] + 1)))
-#define CALL_parser___parser_prod___AMainClassdef___empty_init(recv) ((parser___parser_prod___AMainClassdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[17] + 0)))
-#define CALL_parser___parser_prod___AMainClassdef___init_amainclassdef(recv) ((parser___parser_prod___AMainClassdef___init_amainclassdef_t)CALL((recv), (SFT_parser___parser_prod[17] + 1)))
-#define CALL_parser___parser_prod___AConcreteClasskind___empty_init(recv) ((parser___parser_prod___AConcreteClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[18] + 0)))
-#define CALL_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(recv) ((parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind_t)CALL((recv), (SFT_parser___parser_prod[18] + 1)))
-#define CALL_parser___parser_prod___AAbstractClasskind___empty_init(recv) ((parser___parser_prod___AAbstractClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[19] + 0)))
-#define CALL_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(recv) ((parser___parser_prod___AAbstractClasskind___init_aabstractclasskind_t)CALL((recv), (SFT_parser___parser_prod[19] + 1)))
-#define CALL_parser___parser_prod___AInterfaceClasskind___empty_init(recv) ((parser___parser_prod___AInterfaceClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[20] + 0)))
-#define CALL_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(recv) ((parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind_t)CALL((recv), (SFT_parser___parser_prod[20] + 1)))
-#define CALL_parser___parser_prod___AEnumClasskind___empty_init(recv) ((parser___parser_prod___AEnumClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[21] + 0)))
-#define CALL_parser___parser_prod___AEnumClasskind___init_aenumclasskind(recv) ((parser___parser_prod___AEnumClasskind___init_aenumclasskind_t)CALL((recv), (SFT_parser___parser_prod[21] + 1)))
-#define CALL_parser___parser_prod___AExternClasskind___empty_init(recv) ((parser___parser_prod___AExternClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[22] + 0)))
-#define CALL_parser___parser_prod___AExternClasskind___init_aexternclasskind(recv) ((parser___parser_prod___AExternClasskind___init_aexternclasskind_t)CALL((recv), (SFT_parser___parser_prod[22] + 1)))
-#define CALL_parser___parser_prod___AFormaldef___empty_init(recv) ((parser___parser_prod___AFormaldef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[23] + 0)))
-#define CALL_parser___parser_prod___AFormaldef___init_aformaldef(recv) ((parser___parser_prod___AFormaldef___init_aformaldef_t)CALL((recv), (SFT_parser___parser_prod[23] + 1)))
-#define CALL_parser___parser_prod___ASuperclass___empty_init(recv) ((parser___parser_prod___ASuperclass___empty_init_t)CALL((recv), (SFT_parser___parser_prod[24] + 0)))
-#define CALL_parser___parser_prod___ASuperclass___init_asuperclass(recv) ((parser___parser_prod___ASuperclass___init_asuperclass_t)CALL((recv), (SFT_parser___parser_prod[24] + 1)))
-#define CALL_parser___parser_prod___AAttrPropdef___empty_init(recv) ((parser___parser_prod___AAttrPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[25] + 0)))
-#define CALL_parser___parser_prod___AAttrPropdef___init_aattrpropdef(recv) ((parser___parser_prod___AAttrPropdef___init_aattrpropdef_t)CALL((recv), (SFT_parser___parser_prod[25] + 1)))
-#define CALL_parser___parser_prod___AMethPropdef___empty_init(recv) ((parser___parser_prod___AMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[26] + 0)))
-#define CALL_parser___parser_prod___AMethPropdef___init_amethpropdef(recv) ((parser___parser_prod___AMethPropdef___init_amethpropdef_t)CALL((recv), (SFT_parser___parser_prod[26] + 1)))
-#define CALL_parser___parser_prod___ADeferredMethPropdef___empty_init(recv) ((parser___parser_prod___ADeferredMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[27] + 0)))
-#define CALL_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(recv) ((parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[27] + 1)))
-#define CALL_parser___parser_prod___AInternMethPropdef___empty_init(recv) ((parser___parser_prod___AInternMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[28] + 0)))
-#define CALL_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(recv) ((parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[28] + 1)))
-#define CALL_parser___parser_prod___AExternMethPropdef___empty_init(recv) ((parser___parser_prod___AExternMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[29] + 0)))
-#define CALL_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(recv) ((parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[29] + 1)))
-#define CALL_parser___parser_prod___AConcreteMethPropdef___empty_init(recv) ((parser___parser_prod___AConcreteMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[30] + 0)))
-#define CALL_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(recv) ((parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef_t)CALL((recv), (SFT_parser___parser_prod[30] + 1)))
-#define CALL_parser___parser_prod___AConcreteInitPropdef___empty_init(recv) ((parser___parser_prod___AConcreteInitPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[31] + 0)))
-#define CALL_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(recv) ((parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef_t)CALL((recv), (SFT_parser___parser_prod[31] + 1)))
-#define CALL_parser___parser_prod___AExternInitPropdef___empty_init(recv) ((parser___parser_prod___AExternInitPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[32] + 0)))
-#define CALL_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(recv) ((parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef_t)CALL((recv), (SFT_parser___parser_prod[32] + 1)))
-#define CALL_parser___parser_prod___AMainMethPropdef___empty_init(recv) ((parser___parser_prod___AMainMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[33] + 0)))
-#define CALL_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(recv) ((parser___parser_prod___AMainMethPropdef___init_amainmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[33] + 1)))
-#define CALL_parser___parser_prod___ATypePropdef___empty_init(recv) ((parser___parser_prod___ATypePropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[34] + 0)))
-#define CALL_parser___parser_prod___ATypePropdef___init_atypepropdef(recv) ((parser___parser_prod___ATypePropdef___init_atypepropdef_t)CALL((recv), (SFT_parser___parser_prod[34] + 1)))
-#define CALL_parser___parser_prod___AReadAble___empty_init(recv) ((parser___parser_prod___AReadAble___empty_init_t)CALL((recv), (SFT_parser___parser_prod[35] + 0)))
-#define CALL_parser___parser_prod___AReadAble___init_areadable(recv) ((parser___parser_prod___AReadAble___init_areadable_t)CALL((recv), (SFT_parser___parser_prod[35] + 1)))
-#define CALL_parser___parser_prod___AWriteAble___empty_init(recv) ((parser___parser_prod___AWriteAble___empty_init_t)CALL((recv), (SFT_parser___parser_prod[36] + 0)))
-#define CALL_parser___parser_prod___AWriteAble___init_awriteable(recv) ((parser___parser_prod___AWriteAble___init_awriteable_t)CALL((recv), (SFT_parser___parser_prod[36] + 1)))
-#define CALL_parser___parser_prod___AIdMethid___empty_init(recv) ((parser___parser_prod___AIdMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[37] + 0)))
-#define CALL_parser___parser_prod___AIdMethid___init_aidmethid(recv) ((parser___parser_prod___AIdMethid___init_aidmethid_t)CALL((recv), (SFT_parser___parser_prod[37] + 1)))
-#define CALL_parser___parser_prod___APlusMethid___empty_init(recv) ((parser___parser_prod___APlusMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[38] + 0)))
-#define CALL_parser___parser_prod___APlusMethid___init_aplusmethid(recv) ((parser___parser_prod___APlusMethid___init_aplusmethid_t)CALL((recv), (SFT_parser___parser_prod[38] + 1)))
-#define CALL_parser___parser_prod___AMinusMethid___empty_init(recv) ((parser___parser_prod___AMinusMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[39] + 0)))
-#define CALL_parser___parser_prod___AMinusMethid___init_aminusmethid(recv) ((parser___parser_prod___AMinusMethid___init_aminusmethid_t)CALL((recv), (SFT_parser___parser_prod[39] + 1)))
-#define CALL_parser___parser_prod___AStarMethid___empty_init(recv) ((parser___parser_prod___AStarMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[40] + 0)))
-#define CALL_parser___parser_prod___AStarMethid___init_astarmethid(recv) ((parser___parser_prod___AStarMethid___init_astarmethid_t)CALL((recv), (SFT_parser___parser_prod[40] + 1)))
-#define CALL_parser___parser_prod___ASlashMethid___empty_init(recv) ((parser___parser_prod___ASlashMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[41] + 0)))
-#define CALL_parser___parser_prod___ASlashMethid___init_aslashmethid(recv) ((parser___parser_prod___ASlashMethid___init_aslashmethid_t)CALL((recv), (SFT_parser___parser_prod[41] + 1)))
-#define CALL_parser___parser_prod___APercentMethid___empty_init(recv) ((parser___parser_prod___APercentMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[42] + 0)))
-#define CALL_parser___parser_prod___APercentMethid___init_apercentmethid(recv) ((parser___parser_prod___APercentMethid___init_apercentmethid_t)CALL((recv), (SFT_parser___parser_prod[42] + 1)))
-#define CALL_parser___parser_prod___AEqMethid___empty_init(recv) ((parser___parser_prod___AEqMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[43] + 0)))
-#define CALL_parser___parser_prod___AEqMethid___init_aeqmethid(recv) ((parser___parser_prod___AEqMethid___init_aeqmethid_t)CALL((recv), (SFT_parser___parser_prod[43] + 1)))
-#define CALL_parser___parser_prod___ANeMethid___empty_init(recv) ((parser___parser_prod___ANeMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[44] + 0)))
-#define CALL_parser___parser_prod___ANeMethid___init_anemethid(recv) ((parser___parser_prod___ANeMethid___init_anemethid_t)CALL((recv), (SFT_parser___parser_prod[44] + 1)))
-#define CALL_parser___parser_prod___ALeMethid___empty_init(recv) ((parser___parser_prod___ALeMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[45] + 0)))
-#define CALL_parser___parser_prod___ALeMethid___init_alemethid(recv) ((parser___parser_prod___ALeMethid___init_alemethid_t)CALL((recv), (SFT_parser___parser_prod[45] + 1)))
-#define CALL_parser___parser_prod___AGeMethid___empty_init(recv) ((parser___parser_prod___AGeMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[46] + 0)))
-#define CALL_parser___parser_prod___AGeMethid___init_agemethid(recv) ((parser___parser_prod___AGeMethid___init_agemethid_t)CALL((recv), (SFT_parser___parser_prod[46] + 1)))
-#define CALL_parser___parser_prod___ALtMethid___empty_init(recv) ((parser___parser_prod___ALtMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[47] + 0)))
-#define CALL_parser___parser_prod___ALtMethid___init_altmethid(recv) ((parser___parser_prod___ALtMethid___init_altmethid_t)CALL((recv), (SFT_parser___parser_prod[47] + 1)))
-#define CALL_parser___parser_prod___AGtMethid___empty_init(recv) ((parser___parser_prod___AGtMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[48] + 0)))
-#define CALL_parser___parser_prod___AGtMethid___init_agtmethid(recv) ((parser___parser_prod___AGtMethid___init_agtmethid_t)CALL((recv), (SFT_parser___parser_prod[48] + 1)))
-#define CALL_parser___parser_prod___ALlMethid___empty_init(recv) ((parser___parser_prod___ALlMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[49] + 0)))
-#define CALL_parser___parser_prod___ALlMethid___init_allmethid(recv) ((parser___parser_prod___ALlMethid___init_allmethid_t)CALL((recv), (SFT_parser___parser_prod[49] + 1)))
-#define CALL_parser___parser_prod___AGgMethid___empty_init(recv) ((parser___parser_prod___AGgMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[50] + 0)))
-#define CALL_parser___parser_prod___AGgMethid___init_aggmethid(recv) ((parser___parser_prod___AGgMethid___init_aggmethid_t)CALL((recv), (SFT_parser___parser_prod[50] + 1)))
-#define CALL_parser___parser_prod___ABraMethid___empty_init(recv) ((parser___parser_prod___ABraMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[51] + 0)))
-#define CALL_parser___parser_prod___ABraMethid___init_abramethid(recv) ((parser___parser_prod___ABraMethid___init_abramethid_t)CALL((recv), (SFT_parser___parser_prod[51] + 1)))
-#define CALL_parser___parser_prod___AStarshipMethid___empty_init(recv) ((parser___parser_prod___AStarshipMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[52] + 0)))
-#define CALL_parser___parser_prod___AStarshipMethid___init_astarshipmethid(recv) ((parser___parser_prod___AStarshipMethid___init_astarshipmethid_t)CALL((recv), (SFT_parser___parser_prod[52] + 1)))
-#define CALL_parser___parser_prod___AAssignMethid___empty_init(recv) ((parser___parser_prod___AAssignMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[53] + 0)))
-#define CALL_parser___parser_prod___AAssignMethid___init_aassignmethid(recv) ((parser___parser_prod___AAssignMethid___init_aassignmethid_t)CALL((recv), (SFT_parser___parser_prod[53] + 1)))
-#define CALL_parser___parser_prod___ABraassignMethid___empty_init(recv) ((parser___parser_prod___ABraassignMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[54] + 0)))
-#define CALL_parser___parser_prod___ABraassignMethid___init_abraassignmethid(recv) ((parser___parser_prod___ABraassignMethid___init_abraassignmethid_t)CALL((recv), (SFT_parser___parser_prod[54] + 1)))
-#define CALL_parser___parser_prod___ASignature___empty_init(recv) ((parser___parser_prod___ASignature___empty_init_t)CALL((recv), (SFT_parser___parser_prod[55] + 0)))
-#define CALL_parser___parser_prod___ASignature___init_asignature(recv) ((parser___parser_prod___ASignature___init_asignature_t)CALL((recv), (SFT_parser___parser_prod[55] + 1)))
-#define CALL_parser___parser_prod___AParam___empty_init(recv) ((parser___parser_prod___AParam___empty_init_t)CALL((recv), (SFT_parser___parser_prod[56] + 0)))
-#define CALL_parser___parser_prod___AParam___init_aparam(recv) ((parser___parser_prod___AParam___init_aparam_t)CALL((recv), (SFT_parser___parser_prod[56] + 1)))
-#define CALL_parser___parser_prod___AClosureDecl___empty_init(recv) ((parser___parser_prod___AClosureDecl___empty_init_t)CALL((recv), (SFT_parser___parser_prod[57] + 0)))
-#define CALL_parser___parser_prod___AClosureDecl___init_aclosuredecl(recv) ((parser___parser_prod___AClosureDecl___init_aclosuredecl_t)CALL((recv), (SFT_parser___parser_prod[57] + 1)))
-#define CALL_parser___parser_prod___AType___empty_init(recv) ((parser___parser_prod___AType___empty_init_t)CALL((recv), (SFT_parser___parser_prod[58] + 0)))
-#define CALL_parser___parser_prod___AType___init_atype(recv) ((parser___parser_prod___AType___init_atype_t)CALL((recv), (SFT_parser___parser_prod[58] + 1)))
-#define CALL_parser___parser_prod___ALabel___empty_init(recv) ((parser___parser_prod___ALabel___empty_init_t)CALL((recv), (SFT_parser___parser_prod[59] + 0)))
-#define CALL_parser___parser_prod___ALabel___init_alabel(recv) ((parser___parser_prod___ALabel___init_alabel_t)CALL((recv), (SFT_parser___parser_prod[59] + 1)))
-#define CALL_parser___parser_prod___ABlockExpr___empty_init(recv) ((parser___parser_prod___ABlockExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[60] + 0)))
-#define CALL_parser___parser_prod___ABlockExpr___init_ablockexpr(recv) ((parser___parser_prod___ABlockExpr___init_ablockexpr_t)CALL((recv), (SFT_parser___parser_prod[60] + 1)))
-#define CALL_parser___parser_prod___AVardeclExpr___empty_init(recv) ((parser___parser_prod___AVardeclExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[61] + 0)))
-#define CALL_parser___parser_prod___AVardeclExpr___init_avardeclexpr(recv) ((parser___parser_prod___AVardeclExpr___init_avardeclexpr_t)CALL((recv), (SFT_parser___parser_prod[61] + 1)))
-#define CALL_parser___parser_prod___AReturnExpr___empty_init(recv) ((parser___parser_prod___AReturnExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[62] + 0)))
-#define CALL_parser___parser_prod___AReturnExpr___init_areturnexpr(recv) ((parser___parser_prod___AReturnExpr___init_areturnexpr_t)CALL((recv), (SFT_parser___parser_prod[62] + 1)))
-#define CALL_parser___parser_prod___ABreakExpr___empty_init(recv) ((parser___parser_prod___ABreakExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[63] + 0)))
-#define CALL_parser___parser_prod___ABreakExpr___init_abreakexpr(recv) ((parser___parser_prod___ABreakExpr___init_abreakexpr_t)CALL((recv), (SFT_parser___parser_prod[63] + 1)))
-#define CALL_parser___parser_prod___AAbortExpr___empty_init(recv) ((parser___parser_prod___AAbortExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[64] + 0)))
-#define CALL_parser___parser_prod___AAbortExpr___init_aabortexpr(recv) ((parser___parser_prod___AAbortExpr___init_aabortexpr_t)CALL((recv), (SFT_parser___parser_prod[64] + 1)))
-#define CALL_parser___parser_prod___AContinueExpr___empty_init(recv) ((parser___parser_prod___AContinueExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[65] + 0)))
-#define CALL_parser___parser_prod___AContinueExpr___init_acontinueexpr(recv) ((parser___parser_prod___AContinueExpr___init_acontinueexpr_t)CALL((recv), (SFT_parser___parser_prod[65] + 1)))
-#define CALL_parser___parser_prod___ADoExpr___empty_init(recv) ((parser___parser_prod___ADoExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[66] + 0)))
-#define CALL_parser___parser_prod___ADoExpr___init_adoexpr(recv) ((parser___parser_prod___ADoExpr___init_adoexpr_t)CALL((recv), (SFT_parser___parser_prod[66] + 1)))
-#define CALL_parser___parser_prod___AIfExpr___empty_init(recv) ((parser___parser_prod___AIfExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[67] + 0)))
-#define CALL_parser___parser_prod___AIfExpr___init_aifexpr(recv) ((parser___parser_prod___AIfExpr___init_aifexpr_t)CALL((recv), (SFT_parser___parser_prod[67] + 1)))
-#define CALL_parser___parser_prod___AIfexprExpr___empty_init(recv) ((parser___parser_prod___AIfexprExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[68] + 0)))
-#define CALL_parser___parser_prod___AIfexprExpr___init_aifexprexpr(recv) ((parser___parser_prod___AIfexprExpr___init_aifexprexpr_t)CALL((recv), (SFT_parser___parser_prod[68] + 1)))
-#define CALL_parser___parser_prod___AWhileExpr___empty_init(recv) ((parser___parser_prod___AWhileExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[69] + 0)))
-#define CALL_parser___parser_prod___AWhileExpr___init_awhileexpr(recv) ((parser___parser_prod___AWhileExpr___init_awhileexpr_t)CALL((recv), (SFT_parser___parser_prod[69] + 1)))
-#define CALL_parser___parser_prod___ALoopExpr___empty_init(recv) ((parser___parser_prod___ALoopExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[70] + 0)))
-#define CALL_parser___parser_prod___ALoopExpr___init_aloopexpr(recv) ((parser___parser_prod___ALoopExpr___init_aloopexpr_t)CALL((recv), (SFT_parser___parser_prod[70] + 1)))
-#define CALL_parser___parser_prod___AForExpr___empty_init(recv) ((parser___parser_prod___AForExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[71] + 0)))
-#define CALL_parser___parser_prod___AForExpr___init_aforexpr(recv) ((parser___parser_prod___AForExpr___init_aforexpr_t)CALL((recv), (SFT_parser___parser_prod[71] + 1)))
-#define CALL_parser___parser_prod___AAssertExpr___empty_init(recv) ((parser___parser_prod___AAssertExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[72] + 0)))
-#define CALL_parser___parser_prod___AAssertExpr___init_aassertexpr(recv) ((parser___parser_prod___AAssertExpr___init_aassertexpr_t)CALL((recv), (SFT_parser___parser_prod[72] + 1)))
-#define CALL_parser___parser_prod___AOnceExpr___empty_init(recv) ((parser___parser_prod___AOnceExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[73] + 0)))
-#define CALL_parser___parser_prod___AOnceExpr___init_aonceexpr(recv) ((parser___parser_prod___AOnceExpr___init_aonceexpr_t)CALL((recv), (SFT_parser___parser_prod[73] + 1)))
-#define CALL_parser___parser_prod___ASendExpr___empty_init(recv) ((parser___parser_prod___ASendExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[74] + 0)))
-#define CALL_parser___parser_prod___ASendExpr___init_asendexpr(recv) ((parser___parser_prod___ASendExpr___init_asendexpr_t)CALL((recv), (SFT_parser___parser_prod[74] + 1)))
-#define CALL_parser___parser_prod___ABinopExpr___empty_init(recv) ((parser___parser_prod___ABinopExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[75] + 0)))
-#define CALL_parser___parser_prod___ABinopExpr___init_abinopexpr(recv) ((parser___parser_prod___ABinopExpr___init_abinopexpr_t)CALL((recv), (SFT_parser___parser_prod[75] + 1)))
-#define CALL_parser___parser_prod___AOrExpr___empty_init(recv) ((parser___parser_prod___AOrExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[76] + 0)))
-#define CALL_parser___parser_prod___AOrExpr___init_aorexpr(recv) ((parser___parser_prod___AOrExpr___init_aorexpr_t)CALL((recv), (SFT_parser___parser_prod[76] + 1)))
-#define CALL_parser___parser_prod___AAndExpr___empty_init(recv) ((parser___parser_prod___AAndExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[77] + 0)))
-#define CALL_parser___parser_prod___AAndExpr___init_aandexpr(recv) ((parser___parser_prod___AAndExpr___init_aandexpr_t)CALL((recv), (SFT_parser___parser_prod[77] + 1)))
-#define CALL_parser___parser_prod___AOrElseExpr___empty_init(recv) ((parser___parser_prod___AOrElseExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[78] + 0)))
-#define CALL_parser___parser_prod___AOrElseExpr___init_aorelseexpr(recv) ((parser___parser_prod___AOrElseExpr___init_aorelseexpr_t)CALL((recv), (SFT_parser___parser_prod[78] + 1)))
-#define CALL_parser___parser_prod___ANotExpr___empty_init(recv) ((parser___parser_prod___ANotExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[79] + 0)))
-#define CALL_parser___parser_prod___ANotExpr___init_anotexpr(recv) ((parser___parser_prod___ANotExpr___init_anotexpr_t)CALL((recv), (SFT_parser___parser_prod[79] + 1)))
-#define CALL_parser___parser_prod___AEqExpr___empty_init(recv) ((parser___parser_prod___AEqExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[80] + 0)))
-#define CALL_parser___parser_prod___AEqExpr___init_aeqexpr(recv) ((parser___parser_prod___AEqExpr___init_aeqexpr_t)CALL((recv), (SFT_parser___parser_prod[80] + 1)))
-#define CALL_parser___parser_prod___AEeExpr___empty_init(recv) ((parser___parser_prod___AEeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[81] + 0)))
-#define CALL_parser___parser_prod___AEeExpr___init_aeeexpr(recv) ((parser___parser_prod___AEeExpr___init_aeeexpr_t)CALL((recv), (SFT_parser___parser_prod[81] + 1)))
-#define CALL_parser___parser_prod___ANeExpr___empty_init(recv) ((parser___parser_prod___ANeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[82] + 0)))
-#define CALL_parser___parser_prod___ANeExpr___init_aneexpr(recv) ((parser___parser_prod___ANeExpr___init_aneexpr_t)CALL((recv), (SFT_parser___parser_prod[82] + 1)))
-#define CALL_parser___parser_prod___ALtExpr___empty_init(recv) ((parser___parser_prod___ALtExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[83] + 0)))
-#define CALL_parser___parser_prod___ALtExpr___init_altexpr(recv) ((parser___parser_prod___ALtExpr___init_altexpr_t)CALL((recv), (SFT_parser___parser_prod[83] + 1)))
-#define CALL_parser___parser_prod___ALeExpr___empty_init(recv) ((parser___parser_prod___ALeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[84] + 0)))
-#define CALL_parser___parser_prod___ALeExpr___init_aleexpr(recv) ((parser___parser_prod___ALeExpr___init_aleexpr_t)CALL((recv), (SFT_parser___parser_prod[84] + 1)))
-#define CALL_parser___parser_prod___ALlExpr___empty_init(recv) ((parser___parser_prod___ALlExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[85] + 0)))
-#define CALL_parser___parser_prod___ALlExpr___init_allexpr(recv) ((parser___parser_prod___ALlExpr___init_allexpr_t)CALL((recv), (SFT_parser___parser_prod[85] + 1)))
-#define CALL_parser___parser_prod___AGtExpr___empty_init(recv) ((parser___parser_prod___AGtExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[86] + 0)))
-#define CALL_parser___parser_prod___AGtExpr___init_agtexpr(recv) ((parser___parser_prod___AGtExpr___init_agtexpr_t)CALL((recv), (SFT_parser___parser_prod[86] + 1)))
-#define CALL_parser___parser_prod___AGeExpr___empty_init(recv) ((parser___parser_prod___AGeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[87] + 0)))
-#define CALL_parser___parser_prod___AGeExpr___init_ageexpr(recv) ((parser___parser_prod___AGeExpr___init_ageexpr_t)CALL((recv), (SFT_parser___parser_prod[87] + 1)))
-#define CALL_parser___parser_prod___AGgExpr___empty_init(recv) ((parser___parser_prod___AGgExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[88] + 0)))
-#define CALL_parser___parser_prod___AGgExpr___init_aggexpr(recv) ((parser___parser_prod___AGgExpr___init_aggexpr_t)CALL((recv), (SFT_parser___parser_prod[88] + 1)))
-#define CALL_parser___parser_prod___AIsaExpr___empty_init(recv) ((parser___parser_prod___AIsaExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[89] + 0)))
-#define CALL_parser___parser_prod___AIsaExpr___init_aisaexpr(recv) ((parser___parser_prod___AIsaExpr___init_aisaexpr_t)CALL((recv), (SFT_parser___parser_prod[89] + 1)))
-#define CALL_parser___parser_prod___APlusExpr___empty_init(recv) ((parser___parser_prod___APlusExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[90] + 0)))
-#define CALL_parser___parser_prod___APlusExpr___init_aplusexpr(recv) ((parser___parser_prod___APlusExpr___init_aplusexpr_t)CALL((recv), (SFT_parser___parser_prod[90] + 1)))
-#define CALL_parser___parser_prod___AMinusExpr___empty_init(recv) ((parser___parser_prod___AMinusExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[91] + 0)))
-#define CALL_parser___parser_prod___AMinusExpr___init_aminusexpr(recv) ((parser___parser_prod___AMinusExpr___init_aminusexpr_t)CALL((recv), (SFT_parser___parser_prod[91] + 1)))
-#define CALL_parser___parser_prod___AStarshipExpr___empty_init(recv) ((parser___parser_prod___AStarshipExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[92] + 0)))
-#define CALL_parser___parser_prod___AStarshipExpr___init_astarshipexpr(recv) ((parser___parser_prod___AStarshipExpr___init_astarshipexpr_t)CALL((recv), (SFT_parser___parser_prod[92] + 1)))
-#define CALL_parser___parser_prod___AStarExpr___empty_init(recv) ((parser___parser_prod___AStarExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[93] + 0)))
-#define CALL_parser___parser_prod___AStarExpr___init_astarexpr(recv) ((parser___parser_prod___AStarExpr___init_astarexpr_t)CALL((recv), (SFT_parser___parser_prod[93] + 1)))
-#define CALL_parser___parser_prod___ASlashExpr___empty_init(recv) ((parser___parser_prod___ASlashExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[94] + 0)))
-#define CALL_parser___parser_prod___ASlashExpr___init_aslashexpr(recv) ((parser___parser_prod___ASlashExpr___init_aslashexpr_t)CALL((recv), (SFT_parser___parser_prod[94] + 1)))
-#define CALL_parser___parser_prod___APercentExpr___empty_init(recv) ((parser___parser_prod___APercentExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[95] + 0)))
-#define CALL_parser___parser_prod___APercentExpr___init_apercentexpr(recv) ((parser___parser_prod___APercentExpr___init_apercentexpr_t)CALL((recv), (SFT_parser___parser_prod[95] + 1)))
-#define CALL_parser___parser_prod___AUminusExpr___empty_init(recv) ((parser___parser_prod___AUminusExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[96] + 0)))
-#define CALL_parser___parser_prod___AUminusExpr___init_auminusexpr(recv) ((parser___parser_prod___AUminusExpr___init_auminusexpr_t)CALL((recv), (SFT_parser___parser_prod[96] + 1)))
-#define CALL_parser___parser_prod___ANewExpr___empty_init(recv) ((parser___parser_prod___ANewExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[97] + 0)))
-#define CALL_parser___parser_prod___ANewExpr___init_anewexpr(recv) ((parser___parser_prod___ANewExpr___init_anewexpr_t)CALL((recv), (SFT_parser___parser_prod[97] + 1)))
-#define CALL_parser___parser_prod___AAttrExpr___empty_init(recv) ((parser___parser_prod___AAttrExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[98] + 0)))
-#define CALL_parser___parser_prod___AAttrExpr___init_aattrexpr(recv) ((parser___parser_prod___AAttrExpr___init_aattrexpr_t)CALL((recv), (SFT_parser___parser_prod[98] + 1)))
-#define CALL_parser___parser_prod___AAttrAssignExpr___empty_init(recv) ((parser___parser_prod___AAttrAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[99] + 0)))
-#define CALL_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(recv) ((parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr_t)CALL((recv), (SFT_parser___parser_prod[99] + 1)))
-#define CALL_parser___parser_prod___AAttrReassignExpr___empty_init(recv) ((parser___parser_prod___AAttrReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[100] + 0)))
-#define CALL_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(recv) ((parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr_t)CALL((recv), (SFT_parser___parser_prod[100] + 1)))
-#define CALL_parser___parser_prod___ACallExpr___empty_init(recv) ((parser___parser_prod___ACallExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[101] + 0)))
-#define CALL_parser___parser_prod___ACallExpr___init_acallexpr(recv) ((parser___parser_prod___ACallExpr___init_acallexpr_t)CALL((recv), (SFT_parser___parser_prod[101] + 1)))
-#define CALL_parser___parser_prod___ACallAssignExpr___empty_init(recv) ((parser___parser_prod___ACallAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[102] + 0)))
-#define CALL_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(recv) ((parser___parser_prod___ACallAssignExpr___init_acallassignexpr_t)CALL((recv), (SFT_parser___parser_prod[102] + 1)))
-#define CALL_parser___parser_prod___ACallReassignExpr___empty_init(recv) ((parser___parser_prod___ACallReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[103] + 0)))
-#define CALL_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(recv) ((parser___parser_prod___ACallReassignExpr___init_acallreassignexpr_t)CALL((recv), (SFT_parser___parser_prod[103] + 1)))
-#define CALL_parser___parser_prod___ASuperExpr___empty_init(recv) ((parser___parser_prod___ASuperExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[104] + 0)))
-#define CALL_parser___parser_prod___ASuperExpr___init_asuperexpr(recv) ((parser___parser_prod___ASuperExpr___init_asuperexpr_t)CALL((recv), (SFT_parser___parser_prod[104] + 1)))
-#define CALL_parser___parser_prod___AInitExpr___empty_init(recv) ((parser___parser_prod___AInitExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[105] + 0)))
-#define CALL_parser___parser_prod___AInitExpr___init_ainitexpr(recv) ((parser___parser_prod___AInitExpr___init_ainitexpr_t)CALL((recv), (SFT_parser___parser_prod[105] + 1)))
-#define CALL_parser___parser_prod___ABraExpr___empty_init(recv) ((parser___parser_prod___ABraExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[106] + 0)))
-#define CALL_parser___parser_prod___ABraExpr___init_abraexpr(recv) ((parser___parser_prod___ABraExpr___init_abraexpr_t)CALL((recv), (SFT_parser___parser_prod[106] + 1)))
-#define CALL_parser___parser_prod___ABraAssignExpr___empty_init(recv) ((parser___parser_prod___ABraAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[107] + 0)))
-#define CALL_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(recv) ((parser___parser_prod___ABraAssignExpr___init_abraassignexpr_t)CALL((recv), (SFT_parser___parser_prod[107] + 1)))
-#define CALL_parser___parser_prod___ABraReassignExpr___empty_init(recv) ((parser___parser_prod___ABraReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[108] + 0)))
-#define CALL_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(recv) ((parser___parser_prod___ABraReassignExpr___init_abrareassignexpr_t)CALL((recv), (SFT_parser___parser_prod[108] + 1)))
-#define CALL_parser___parser_prod___AClosureCallExpr___empty_init(recv) ((parser___parser_prod___AClosureCallExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[109] + 0)))
-#define CALL_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(recv) ((parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr_t)CALL((recv), (SFT_parser___parser_prod[109] + 1)))
-#define CALL_parser___parser_prod___AVarExpr___empty_init(recv) ((parser___parser_prod___AVarExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[110] + 0)))
-#define CALL_parser___parser_prod___AVarExpr___init_avarexpr(recv) ((parser___parser_prod___AVarExpr___init_avarexpr_t)CALL((recv), (SFT_parser___parser_prod[110] + 1)))
-#define CALL_parser___parser_prod___AVarAssignExpr___empty_init(recv) ((parser___parser_prod___AVarAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[111] + 0)))
-#define CALL_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(recv) ((parser___parser_prod___AVarAssignExpr___init_avarassignexpr_t)CALL((recv), (SFT_parser___parser_prod[111] + 1)))
-#define CALL_parser___parser_prod___AVarReassignExpr___empty_init(recv) ((parser___parser_prod___AVarReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[112] + 0)))
-#define CALL_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(recv) ((parser___parser_prod___AVarReassignExpr___init_avarreassignexpr_t)CALL((recv), (SFT_parser___parser_prod[112] + 1)))
-#define CALL_parser___parser_prod___ARangeExpr___empty_init(recv) ((parser___parser_prod___ARangeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[113] + 0)))
-#define CALL_parser___parser_prod___ARangeExpr___init_arangeexpr(recv) ((parser___parser_prod___ARangeExpr___init_arangeexpr_t)CALL((recv), (SFT_parser___parser_prod[113] + 1)))
-#define CALL_parser___parser_prod___ACrangeExpr___empty_init(recv) ((parser___parser_prod___ACrangeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[114] + 0)))
-#define CALL_parser___parser_prod___ACrangeExpr___init_acrangeexpr(recv) ((parser___parser_prod___ACrangeExpr___init_acrangeexpr_t)CALL((recv), (SFT_parser___parser_prod[114] + 1)))
-#define CALL_parser___parser_prod___AOrangeExpr___empty_init(recv) ((parser___parser_prod___AOrangeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[115] + 0)))
-#define CALL_parser___parser_prod___AOrangeExpr___init_aorangeexpr(recv) ((parser___parser_prod___AOrangeExpr___init_aorangeexpr_t)CALL((recv), (SFT_parser___parser_prod[115] + 1)))
-#define CALL_parser___parser_prod___AArrayExpr___empty_init(recv) ((parser___parser_prod___AArrayExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[116] + 0)))
-#define CALL_parser___parser_prod___AArrayExpr___init_aarrayexpr(recv) ((parser___parser_prod___AArrayExpr___init_aarrayexpr_t)CALL((recv), (SFT_parser___parser_prod[116] + 1)))
-#define CALL_parser___parser_prod___ASelfExpr___empty_init(recv) ((parser___parser_prod___ASelfExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[117] + 0)))
-#define CALL_parser___parser_prod___ASelfExpr___init_aselfexpr(recv) ((parser___parser_prod___ASelfExpr___init_aselfexpr_t)CALL((recv), (SFT_parser___parser_prod[117] + 1)))
-#define CALL_parser___parser_prod___AImplicitSelfExpr___empty_init(recv) ((parser___parser_prod___AImplicitSelfExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[118] + 0)))
-#define CALL_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(recv) ((parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr_t)CALL((recv), (SFT_parser___parser_prod[118] + 1)))
-#define CALL_parser___parser_prod___ATrueExpr___empty_init(recv) ((parser___parser_prod___ATrueExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[119] + 0)))
-#define CALL_parser___parser_prod___ATrueExpr___init_atrueexpr(recv) ((parser___parser_prod___ATrueExpr___init_atrueexpr_t)CALL((recv), (SFT_parser___parser_prod[119] + 1)))
-#define CALL_parser___parser_prod___AFalseExpr___empty_init(recv) ((parser___parser_prod___AFalseExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[120] + 0)))
-#define CALL_parser___parser_prod___AFalseExpr___init_afalseexpr(recv) ((parser___parser_prod___AFalseExpr___init_afalseexpr_t)CALL((recv), (SFT_parser___parser_prod[120] + 1)))
-#define CALL_parser___parser_prod___ANullExpr___empty_init(recv) ((parser___parser_prod___ANullExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[121] + 0)))
-#define CALL_parser___parser_prod___ANullExpr___init_anullexpr(recv) ((parser___parser_prod___ANullExpr___init_anullexpr_t)CALL((recv), (SFT_parser___parser_prod[121] + 1)))
-#define CALL_parser___parser_prod___AIntExpr___empty_init(recv) ((parser___parser_prod___AIntExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[122] + 0)))
-#define CALL_parser___parser_prod___AIntExpr___init_aintexpr(recv) ((parser___parser_prod___AIntExpr___init_aintexpr_t)CALL((recv), (SFT_parser___parser_prod[122] + 1)))
-#define CALL_parser___parser_prod___AFloatExpr___empty_init(recv) ((parser___parser_prod___AFloatExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[123] + 0)))
-#define CALL_parser___parser_prod___AFloatExpr___init_afloatexpr(recv) ((parser___parser_prod___AFloatExpr___init_afloatexpr_t)CALL((recv), (SFT_parser___parser_prod[123] + 1)))
-#define CALL_parser___parser_prod___ACharExpr___empty_init(recv) ((parser___parser_prod___ACharExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[124] + 0)))
-#define CALL_parser___parser_prod___ACharExpr___init_acharexpr(recv) ((parser___parser_prod___ACharExpr___init_acharexpr_t)CALL((recv), (SFT_parser___parser_prod[124] + 1)))
-#define CALL_parser___parser_prod___AStringExpr___empty_init(recv) ((parser___parser_prod___AStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[125] + 0)))
-#define CALL_parser___parser_prod___AStringExpr___init_astringexpr(recv) ((parser___parser_prod___AStringExpr___init_astringexpr_t)CALL((recv), (SFT_parser___parser_prod[125] + 1)))
-#define CALL_parser___parser_prod___AStartStringExpr___empty_init(recv) ((parser___parser_prod___AStartStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[126] + 0)))
-#define CALL_parser___parser_prod___AStartStringExpr___init_astartstringexpr(recv) ((parser___parser_prod___AStartStringExpr___init_astartstringexpr_t)CALL((recv), (SFT_parser___parser_prod[126] + 1)))
-#define CALL_parser___parser_prod___AMidStringExpr___empty_init(recv) ((parser___parser_prod___AMidStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[127] + 0)))
-#define CALL_parser___parser_prod___AMidStringExpr___init_amidstringexpr(recv) ((parser___parser_prod___AMidStringExpr___init_amidstringexpr_t)CALL((recv), (SFT_parser___parser_prod[127] + 1)))
-#define CALL_parser___parser_prod___AEndStringExpr___empty_init(recv) ((parser___parser_prod___AEndStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[128] + 0)))
-#define CALL_parser___parser_prod___AEndStringExpr___init_aendstringexpr(recv) ((parser___parser_prod___AEndStringExpr___init_aendstringexpr_t)CALL((recv), (SFT_parser___parser_prod[128] + 1)))
-#define CALL_parser___parser_prod___ASuperstringExpr___empty_init(recv) ((parser___parser_prod___ASuperstringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[129] + 0)))
-#define CALL_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(recv) ((parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_t)CALL((recv), (SFT_parser___parser_prod[129] + 1)))
-#define CALL_parser___parser_prod___AParExpr___empty_init(recv) ((parser___parser_prod___AParExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[130] + 0)))
-#define CALL_parser___parser_prod___AParExpr___init_aparexpr(recv) ((parser___parser_prod___AParExpr___init_aparexpr_t)CALL((recv), (SFT_parser___parser_prod[130] + 1)))
-#define CALL_parser___parser_prod___AAsCastExpr___empty_init(recv) ((parser___parser_prod___AAsCastExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[131] + 0)))
-#define CALL_parser___parser_prod___AAsCastExpr___init_aascastexpr(recv) ((parser___parser_prod___AAsCastExpr___init_aascastexpr_t)CALL((recv), (SFT_parser___parser_prod[131] + 1)))
-#define CALL_parser___parser_prod___AAsNotnullExpr___empty_init(recv) ((parser___parser_prod___AAsNotnullExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[132] + 0)))
-#define CALL_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(recv) ((parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr_t)CALL((recv), (SFT_parser___parser_prod[132] + 1)))
-#define CALL_parser___parser_prod___AIssetAttrExpr___empty_init(recv) ((parser___parser_prod___AIssetAttrExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[133] + 0)))
-#define CALL_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(recv) ((parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr_t)CALL((recv), (SFT_parser___parser_prod[133] + 1)))
-#define CALL_parser___parser_prod___ADebugTypeExpr___empty_init(recv) ((parser___parser_prod___ADebugTypeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[134] + 0)))
-#define CALL_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(recv) ((parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr_t)CALL((recv), (SFT_parser___parser_prod[134] + 1)))
-#define CALL_parser___parser_prod___AListExprs___empty_init(recv) ((parser___parser_prod___AListExprs___empty_init_t)CALL((recv), (SFT_parser___parser_prod[135] + 0)))
-#define CALL_parser___parser_prod___AListExprs___init_alistexprs(recv) ((parser___parser_prod___AListExprs___init_alistexprs_t)CALL((recv), (SFT_parser___parser_prod[135] + 1)))
-#define CALL_parser___parser_prod___AParExprs___empty_init(recv) ((parser___parser_prod___AParExprs___empty_init_t)CALL((recv), (SFT_parser___parser_prod[136] + 0)))
-#define CALL_parser___parser_prod___AParExprs___init_aparexprs(recv) ((parser___parser_prod___AParExprs___init_aparexprs_t)CALL((recv), (SFT_parser___parser_prod[136] + 1)))
-#define CALL_parser___parser_prod___ABraExprs___empty_init(recv) ((parser___parser_prod___ABraExprs___empty_init_t)CALL((recv), (SFT_parser___parser_prod[137] + 0)))
-#define CALL_parser___parser_prod___ABraExprs___init_abraexprs(recv) ((parser___parser_prod___ABraExprs___init_abraexprs_t)CALL((recv), (SFT_parser___parser_prod[137] + 1)))
-#define CALL_parser___parser_prod___APlusAssignOp___empty_init(recv) ((parser___parser_prod___APlusAssignOp___empty_init_t)CALL((recv), (SFT_parser___parser_prod[138] + 0)))
-#define CALL_parser___parser_prod___APlusAssignOp___init_aplusassignop(recv) ((parser___parser_prod___APlusAssignOp___init_aplusassignop_t)CALL((recv), (SFT_parser___parser_prod[138] + 1)))
-#define CALL_parser___parser_prod___AMinusAssignOp___empty_init(recv) ((parser___parser_prod___AMinusAssignOp___empty_init_t)CALL((recv), (SFT_parser___parser_prod[139] + 0)))
-#define CALL_parser___parser_prod___AMinusAssignOp___init_aminusassignop(recv) ((parser___parser_prod___AMinusAssignOp___init_aminusassignop_t)CALL((recv), (SFT_parser___parser_prod[139] + 1)))
-#define CALL_parser___parser_prod___AClosureDef___empty_init(recv) ((parser___parser_prod___AClosureDef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[140] + 0)))
-#define CALL_parser___parser_prod___AClosureDef___init_aclosuredef(recv) ((parser___parser_prod___AClosureDef___init_aclosuredef_t)CALL((recv), (SFT_parser___parser_prod[140] + 1)))
-#define CALL_parser___parser_prod___ASimpleClosureId___empty_init(recv) ((parser___parser_prod___ASimpleClosureId___empty_init_t)CALL((recv), (SFT_parser___parser_prod[141] + 0)))
-#define CALL_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(recv) ((parser___parser_prod___ASimpleClosureId___init_asimpleclosureid_t)CALL((recv), (SFT_parser___parser_prod[141] + 1)))
-#define CALL_parser___parser_prod___ABreakClosureId___empty_init(recv) ((parser___parser_prod___ABreakClosureId___empty_init_t)CALL((recv), (SFT_parser___parser_prod[142] + 0)))
-#define CALL_parser___parser_prod___ABreakClosureId___init_abreakclosureid(recv) ((parser___parser_prod___ABreakClosureId___init_abreakclosureid_t)CALL((recv), (SFT_parser___parser_prod[142] + 1)))
-#define CALL_parser___parser_prod___AModuleName___empty_init(recv) ((parser___parser_prod___AModuleName___empty_init_t)CALL((recv), (SFT_parser___parser_prod[143] + 0)))
-#define CALL_parser___parser_prod___AModuleName___init_amodulename(recv) ((parser___parser_prod___AModuleName___init_amodulename_t)CALL((recv), (SFT_parser___parser_prod[143] + 1)))
-#define CALL_parser___parser_prod___AExternCalls___empty_init(recv) ((parser___parser_prod___AExternCalls___empty_init_t)CALL((recv), (SFT_parser___parser_prod[144] + 0)))
-#define CALL_parser___parser_prod___AExternCalls___init_aexterncalls(recv) ((parser___parser_prod___AExternCalls___init_aexterncalls_t)CALL((recv), (SFT_parser___parser_prod[144] + 1)))
-#define CALL_parser___parser_prod___AExternCall___empty_init(recv) ((parser___parser_prod___AExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[145] + 0)))
-#define CALL_parser___parser_prod___AExternCall___init_aexterncall(recv) ((parser___parser_prod___AExternCall___init_aexterncall_t)CALL((recv), (SFT_parser___parser_prod[145] + 1)))
-#define CALL_parser___parser_prod___ASuperExternCall___empty_init(recv) ((parser___parser_prod___ASuperExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[146] + 0)))
-#define CALL_parser___parser_prod___ASuperExternCall___init_asuperexterncall(recv) ((parser___parser_prod___ASuperExternCall___init_asuperexterncall_t)CALL((recv), (SFT_parser___parser_prod[146] + 1)))
-#define CALL_parser___parser_prod___ALocalPropExternCall___empty_init(recv) ((parser___parser_prod___ALocalPropExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[147] + 0)))
-#define CALL_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(recv) ((parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall_t)CALL((recv), (SFT_parser___parser_prod[147] + 1)))
-#define CALL_parser___parser_prod___AFullPropExternCall___empty_init(recv) ((parser___parser_prod___AFullPropExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[148] + 0)))
-#define CALL_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(recv) ((parser___parser_prod___AFullPropExternCall___init_afullpropexterncall_t)CALL((recv), (SFT_parser___parser_prod[148] + 1)))
-#define CALL_parser___parser_prod___AInitPropExternCall___empty_init(recv) ((parser___parser_prod___AInitPropExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[149] + 0)))
-#define CALL_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(recv) ((parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall_t)CALL((recv), (SFT_parser___parser_prod[149] + 1)))
-#define CALL_parser___parser_prod___ACastAsExternCall___empty_init(recv) ((parser___parser_prod___ACastAsExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[150] + 0)))
-#define CALL_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(recv) ((parser___parser_prod___ACastAsExternCall___init_acastasexterncall_t)CALL((recv), (SFT_parser___parser_prod[150] + 1)))
-#define CALL_parser___parser_prod___AAsNullableExternCall___empty_init(recv) ((parser___parser_prod___AAsNullableExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[151] + 0)))
-#define CALL_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(recv) ((parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall_t)CALL((recv), (SFT_parser___parser_prod[151] + 1)))
-#define CALL_parser___parser_prod___AAsNotNullableExternCall___empty_init(recv) ((parser___parser_prod___AAsNotNullableExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[152] + 0)))
-#define CALL_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(recv) ((parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall_t)CALL((recv), (SFT_parser___parser_prod[152] + 1)))
-#define CALL_parser___parser_prod___AInLanguage___empty_init(recv) ((parser___parser_prod___AInLanguage___empty_init_t)CALL((recv), (SFT_parser___parser_prod[153] + 0)))
-#define CALL_parser___parser_prod___AInLanguage___init_ainlanguage(recv) ((parser___parser_prod___AInLanguage___init_ainlanguage_t)CALL((recv), (SFT_parser___parser_prod[153] + 1)))
-#define CALL_parser___parser_prod___AExternCodeBlock___empty_init(recv) ((parser___parser_prod___AExternCodeBlock___empty_init_t)CALL((recv), (SFT_parser___parser_prod[154] + 0)))
-#define CALL_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(recv) ((parser___parser_prod___AExternCodeBlock___init_aexterncodeblock_t)CALL((recv), (SFT_parser___parser_prod[154] + 1)))
-#define CALL_parser___parser_prod___AQualified___empty_init(recv) ((parser___parser_prod___AQualified___empty_init_t)CALL((recv), (SFT_parser___parser_prod[155] + 0)))
-#define CALL_parser___parser_prod___AQualified___init_aqualified(recv) ((parser___parser_prod___AQualified___init_aqualified_t)CALL((recv), (SFT_parser___parser_prod[155] + 1)))
-#define CALL_parser___parser_prod___ADoc___empty_init(recv) ((parser___parser_prod___ADoc___empty_init_t)CALL((recv), (SFT_parser___parser_prod[156] + 0)))
-#define CALL_parser___parser_prod___ADoc___init_adoc(recv) ((parser___parser_prod___ADoc___init_adoc_t)CALL((recv), (SFT_parser___parser_prod[156] + 1)))
-#define CALL_parser___parser_prod___AAnnotations___empty_init(recv) ((parser___parser_prod___AAnnotations___empty_init_t)CALL((recv), (SFT_parser___parser_prod[157] + 0)))
-#define CALL_parser___parser_prod___AAnnotations___init_aannotations(recv) ((parser___parser_prod___AAnnotations___init_aannotations_t)CALL((recv), (SFT_parser___parser_prod[157] + 1)))
-#define CALL_parser___parser_prod___AAnnotation___empty_init(recv) ((parser___parser_prod___AAnnotation___empty_init_t)CALL((recv), (SFT_parser___parser_prod[158] + 0)))
-#define CALL_parser___parser_prod___AAnnotation___init_aannotation(recv) ((parser___parser_prod___AAnnotation___init_aannotation_t)CALL((recv), (SFT_parser___parser_prod[158] + 1)))
-#define CALL_parser___parser_prod___ATypeAtArg___empty_init(recv) ((parser___parser_prod___ATypeAtArg___empty_init_t)CALL((recv), (SFT_parser___parser_prod[159] + 0)))
-#define CALL_parser___parser_prod___ATypeAtArg___init_atypeatarg(recv) ((parser___parser_prod___ATypeAtArg___init_atypeatarg_t)CALL((recv), (SFT_parser___parser_prod[159] + 1)))
-#define CALL_parser___parser_prod___AExprAtArg___empty_init(recv) ((parser___parser_prod___AExprAtArg___empty_init_t)CALL((recv), (SFT_parser___parser_prod[160] + 0)))
-#define CALL_parser___parser_prod___AExprAtArg___init_aexpratarg(recv) ((parser___parser_prod___AExprAtArg___init_aexpratarg_t)CALL((recv), (SFT_parser___parser_prod[160] + 1)))
-#define CALL_parser___parser_prod___AAtAtArg___empty_init(recv) ((parser___parser_prod___AAtAtArg___empty_init_t)CALL((recv), (SFT_parser___parser_prod[161] + 0)))
-#define CALL_parser___parser_prod___AAtAtArg___init_aatatarg(recv) ((parser___parser_prod___AAtAtArg___init_aatatarg_t)CALL((recv), (SFT_parser___parser_prod[161] + 1)))
-#define CALL_parser___parser_prod___AIdAtid___empty_init(recv) ((parser___parser_prod___AIdAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[162] + 0)))
-#define CALL_parser___parser_prod___AIdAtid___init_aidatid(recv) ((parser___parser_prod___AIdAtid___init_aidatid_t)CALL((recv), (SFT_parser___parser_prod[162] + 1)))
-#define CALL_parser___parser_prod___AKwexternAtid___empty_init(recv) ((parser___parser_prod___AKwexternAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[163] + 0)))
-#define CALL_parser___parser_prod___AKwexternAtid___init_akwexternatid(recv) ((parser___parser_prod___AKwexternAtid___init_akwexternatid_t)CALL((recv), (SFT_parser___parser_prod[163] + 1)))
-#define CALL_parser___parser_prod___AKwinternAtid___empty_init(recv) ((parser___parser_prod___AKwinternAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[164] + 0)))
-#define CALL_parser___parser_prod___AKwinternAtid___init_akwinternatid(recv) ((parser___parser_prod___AKwinternAtid___init_akwinternatid_t)CALL((recv), (SFT_parser___parser_prod[164] + 1)))
-#define CALL_parser___parser_prod___AKwreadableAtid___empty_init(recv) ((parser___parser_prod___AKwreadableAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[165] + 0)))
-#define CALL_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(recv) ((parser___parser_prod___AKwreadableAtid___init_akwreadableatid_t)CALL((recv), (SFT_parser___parser_prod[165] + 1)))
-#define CALL_parser___parser_prod___AKwwritableAtid___empty_init(recv) ((parser___parser_prod___AKwwritableAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[166] + 0)))
-#define CALL_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(recv) ((parser___parser_prod___AKwwritableAtid___init_akwwritableatid_t)CALL((recv), (SFT_parser___parser_prod[166] + 1)))
-#define CALL_parser___parser_prod___AKwimportAtid___empty_init(recv) ((parser___parser_prod___AKwimportAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[167] + 0)))
-#define CALL_parser___parser_prod___AKwimportAtid___init_akwimportatid(recv) ((parser___parser_prod___AKwimportAtid___init_akwimportatid_t)CALL((recv), (SFT_parser___parser_prod[167] + 1)))
-val_t parser___parser_prod___ANode___parent(val_t p0);
-typedef val_t (*parser___parser_prod___ANode___parent_t)(val_t p0);
-void parser___parser_prod___ANode___parent__eq(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___ANode___parent__eq_t)(val_t p0, val_t p1);
-void parser___parser_prod___ANode___remove_child(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___ANode___remove_child_t)(val_t p0, val_t p1);
-void parser___parser_prod___ANode___replace_child(val_t p0, val_t p1, val_t p2);
-typedef void (*parser___parser_prod___ANode___replace_child_t)(val_t p0, val_t p1, val_t p2);
-void parser___parser_prod___ANode___replace_with(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___ANode___replace_with_t)(val_t p0, val_t p1);
-void parser___parser_prod___ANode___visit_all(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___ANode___visit_all_t)(val_t p0, val_t p1);
-val_t NEW_ANode_parser___parser_nodes___ANode___init();
-void parser___parser_prod___Token___visit_all(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___Token___visit_all_t)(val_t p0, val_t p1);
-void parser___parser_prod___Token___replace_child(val_t p0, val_t p1, val_t p2);
-typedef void (*parser___parser_prod___Token___replace_child_t)(val_t p0, val_t p1, val_t p2);
-val_t NEW_Token_parser___parser_nodes___ANode___init();
-void parser___parser_prod___Prod___replace_with(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___Prod___replace_with_t)(val_t p0, val_t p1);
-val_t NEW_Prod_parser___parser_nodes___ANode___init();
-void parser___parser_prod___Visitor___visit(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___Visitor___visit_t)(val_t p0, val_t p1);
-void parser___parser_prod___Visitor___enter_visit(val_t p0, val_t p1);
-typedef void (*parser___parser_prod___Visitor___enter_visit_t)(val_t p0, val_t p1);
-val_t parser___parser_prod___Visitor___current_node(val_t p0);
-typedef val_t (*parser___parser_prod___Visitor___current_node_t)(val_t p0);
-void parser___parser_prod___Visitor___init(val_t p0, int* init_table);
-typedef void (*parser___parser_prod___Visitor___init_t)(val_t p0, int* init_table);
-val_t NEW_Visitor_parser___parser_prod___Visitor___init();
+#define CALL_parser___parser_prod___AModule___empty_init(recv) ((parser___parser_prod___AModule___empty_init_t)CALL((recv), (SFT_parser___parser_prod[0] + 0)))
+#define CALL_parser___parser_prod___AModule___init_amodule(recv) ((parser___parser_prod___AModule___init_amodule_t)CALL((recv), (SFT_parser___parser_prod[0] + 1)))
+#define CALL_parser___parser_prod___AModuledecl___empty_init(recv) ((parser___parser_prod___AModuledecl___empty_init_t)CALL((recv), (SFT_parser___parser_prod[1] + 0)))
+#define CALL_parser___parser_prod___AModuledecl___init_amoduledecl(recv) ((parser___parser_prod___AModuledecl___init_amoduledecl_t)CALL((recv), (SFT_parser___parser_prod[1] + 1)))
+#define CALL_parser___parser_prod___AStdImport___empty_init(recv) ((parser___parser_prod___AStdImport___empty_init_t)CALL((recv), (SFT_parser___parser_prod[2] + 0)))
+#define CALL_parser___parser_prod___AStdImport___init_astdimport(recv) ((parser___parser_prod___AStdImport___init_astdimport_t)CALL((recv), (SFT_parser___parser_prod[2] + 1)))
+#define CALL_parser___parser_prod___ANoImport___empty_init(recv) ((parser___parser_prod___ANoImport___empty_init_t)CALL((recv), (SFT_parser___parser_prod[3] + 0)))
+#define CALL_parser___parser_prod___ANoImport___init_anoimport(recv) ((parser___parser_prod___ANoImport___init_anoimport_t)CALL((recv), (SFT_parser___parser_prod[3] + 1)))
+#define CALL_parser___parser_prod___APublicVisibility___empty_init(recv) ((parser___parser_prod___APublicVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[4] + 0)))
+#define CALL_parser___parser_prod___APublicVisibility___init_apublicvisibility(recv) ((parser___parser_prod___APublicVisibility___init_apublicvisibility_t)CALL((recv), (SFT_parser___parser_prod[4] + 1)))
+#define CALL_parser___parser_prod___APrivateVisibility___empty_init(recv) ((parser___parser_prod___APrivateVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[5] + 0)))
+#define CALL_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(recv) ((parser___parser_prod___APrivateVisibility___init_aprivatevisibility_t)CALL((recv), (SFT_parser___parser_prod[5] + 1)))
+#define CALL_parser___parser_prod___AProtectedVisibility___empty_init(recv) ((parser___parser_prod___AProtectedVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[6] + 0)))
+#define CALL_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(recv) ((parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility_t)CALL((recv), (SFT_parser___parser_prod[6] + 1)))
+#define CALL_parser___parser_prod___AIntrudeVisibility___empty_init(recv) ((parser___parser_prod___AIntrudeVisibility___empty_init_t)CALL((recv), (SFT_parser___parser_prod[7] + 0)))
+#define CALL_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(recv) ((parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility_t)CALL((recv), (SFT_parser___parser_prod[7] + 1)))
+#define CALL_parser___parser_prod___AStdClassdef___empty_init(recv) ((parser___parser_prod___AStdClassdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[8] + 0)))
+#define CALL_parser___parser_prod___AStdClassdef___init_astdclassdef(recv) ((parser___parser_prod___AStdClassdef___init_astdclassdef_t)CALL((recv), (SFT_parser___parser_prod[8] + 1)))
+#define CALL_parser___parser_prod___ATopClassdef___empty_init(recv) ((parser___parser_prod___ATopClassdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[9] + 0)))
+#define CALL_parser___parser_prod___ATopClassdef___init_atopclassdef(recv) ((parser___parser_prod___ATopClassdef___init_atopclassdef_t)CALL((recv), (SFT_parser___parser_prod[9] + 1)))
+#define CALL_parser___parser_prod___AMainClassdef___empty_init(recv) ((parser___parser_prod___AMainClassdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[10] + 0)))
+#define CALL_parser___parser_prod___AMainClassdef___init_amainclassdef(recv) ((parser___parser_prod___AMainClassdef___init_amainclassdef_t)CALL((recv), (SFT_parser___parser_prod[10] + 1)))
+#define CALL_parser___parser_prod___AConcreteClasskind___empty_init(recv) ((parser___parser_prod___AConcreteClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[11] + 0)))
+#define CALL_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(recv) ((parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind_t)CALL((recv), (SFT_parser___parser_prod[11] + 1)))
+#define CALL_parser___parser_prod___AAbstractClasskind___empty_init(recv) ((parser___parser_prod___AAbstractClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[12] + 0)))
+#define CALL_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(recv) ((parser___parser_prod___AAbstractClasskind___init_aabstractclasskind_t)CALL((recv), (SFT_parser___parser_prod[12] + 1)))
+#define CALL_parser___parser_prod___AInterfaceClasskind___empty_init(recv) ((parser___parser_prod___AInterfaceClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[13] + 0)))
+#define CALL_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(recv) ((parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind_t)CALL((recv), (SFT_parser___parser_prod[13] + 1)))
+#define CALL_parser___parser_prod___AEnumClasskind___empty_init(recv) ((parser___parser_prod___AEnumClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[14] + 0)))
+#define CALL_parser___parser_prod___AEnumClasskind___init_aenumclasskind(recv) ((parser___parser_prod___AEnumClasskind___init_aenumclasskind_t)CALL((recv), (SFT_parser___parser_prod[14] + 1)))
+#define CALL_parser___parser_prod___AExternClasskind___empty_init(recv) ((parser___parser_prod___AExternClasskind___empty_init_t)CALL((recv), (SFT_parser___parser_prod[15] + 0)))
+#define CALL_parser___parser_prod___AExternClasskind___init_aexternclasskind(recv) ((parser___parser_prod___AExternClasskind___init_aexternclasskind_t)CALL((recv), (SFT_parser___parser_prod[15] + 1)))
+#define CALL_parser___parser_prod___AFormaldef___empty_init(recv) ((parser___parser_prod___AFormaldef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[16] + 0)))
+#define CALL_parser___parser_prod___AFormaldef___init_aformaldef(recv) ((parser___parser_prod___AFormaldef___init_aformaldef_t)CALL((recv), (SFT_parser___parser_prod[16] + 1)))
+#define CALL_parser___parser_prod___ASuperclass___empty_init(recv) ((parser___parser_prod___ASuperclass___empty_init_t)CALL((recv), (SFT_parser___parser_prod[17] + 0)))
+#define CALL_parser___parser_prod___ASuperclass___init_asuperclass(recv) ((parser___parser_prod___ASuperclass___init_asuperclass_t)CALL((recv), (SFT_parser___parser_prod[17] + 1)))
+#define CALL_parser___parser_prod___AAttrPropdef___empty_init(recv) ((parser___parser_prod___AAttrPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[18] + 0)))
+#define CALL_parser___parser_prod___AAttrPropdef___init_aattrpropdef(recv) ((parser___parser_prod___AAttrPropdef___init_aattrpropdef_t)CALL((recv), (SFT_parser___parser_prod[18] + 1)))
+#define CALL_parser___parser_prod___AMethPropdef___empty_init(recv) ((parser___parser_prod___AMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[19] + 0)))
+#define CALL_parser___parser_prod___AMethPropdef___init_amethpropdef(recv) ((parser___parser_prod___AMethPropdef___init_amethpropdef_t)CALL((recv), (SFT_parser___parser_prod[19] + 1)))
+#define CALL_parser___parser_prod___ADeferredMethPropdef___empty_init(recv) ((parser___parser_prod___ADeferredMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[20] + 0)))
+#define CALL_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(recv) ((parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[20] + 1)))
+#define CALL_parser___parser_prod___AInternMethPropdef___empty_init(recv) ((parser___parser_prod___AInternMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[21] + 0)))
+#define CALL_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(recv) ((parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[21] + 1)))
+#define CALL_parser___parser_prod___AExternMethPropdef___empty_init(recv) ((parser___parser_prod___AExternMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[22] + 0)))
+#define CALL_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(recv) ((parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[22] + 1)))
+#define CALL_parser___parser_prod___AConcreteMethPropdef___empty_init(recv) ((parser___parser_prod___AConcreteMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[23] + 0)))
+#define CALL_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(recv) ((parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef_t)CALL((recv), (SFT_parser___parser_prod[23] + 1)))
+#define CALL_parser___parser_prod___AConcreteInitPropdef___empty_init(recv) ((parser___parser_prod___AConcreteInitPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[24] + 0)))
+#define CALL_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(recv) ((parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef_t)CALL((recv), (SFT_parser___parser_prod[24] + 1)))
+#define CALL_parser___parser_prod___AExternInitPropdef___empty_init(recv) ((parser___parser_prod___AExternInitPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[25] + 0)))
+#define CALL_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(recv) ((parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef_t)CALL((recv), (SFT_parser___parser_prod[25] + 1)))
+#define CALL_parser___parser_prod___AMainMethPropdef___empty_init(recv) ((parser___parser_prod___AMainMethPropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[26] + 0)))
+#define CALL_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(recv) ((parser___parser_prod___AMainMethPropdef___init_amainmethpropdef_t)CALL((recv), (SFT_parser___parser_prod[26] + 1)))
+#define CALL_parser___parser_prod___ATypePropdef___empty_init(recv) ((parser___parser_prod___ATypePropdef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[27] + 0)))
+#define CALL_parser___parser_prod___ATypePropdef___init_atypepropdef(recv) ((parser___parser_prod___ATypePropdef___init_atypepropdef_t)CALL((recv), (SFT_parser___parser_prod[27] + 1)))
+#define CALL_parser___parser_prod___AReadAble___empty_init(recv) ((parser___parser_prod___AReadAble___empty_init_t)CALL((recv), (SFT_parser___parser_prod[28] + 0)))
+#define CALL_parser___parser_prod___AReadAble___init_areadable(recv) ((parser___parser_prod___AReadAble___init_areadable_t)CALL((recv), (SFT_parser___parser_prod[28] + 1)))
+#define CALL_parser___parser_prod___AWriteAble___empty_init(recv) ((parser___parser_prod___AWriteAble___empty_init_t)CALL((recv), (SFT_parser___parser_prod[29] + 0)))
+#define CALL_parser___parser_prod___AWriteAble___init_awriteable(recv) ((parser___parser_prod___AWriteAble___init_awriteable_t)CALL((recv), (SFT_parser___parser_prod[29] + 1)))
+#define CALL_parser___parser_prod___AIdMethid___empty_init(recv) ((parser___parser_prod___AIdMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[30] + 0)))
+#define CALL_parser___parser_prod___AIdMethid___init_aidmethid(recv) ((parser___parser_prod___AIdMethid___init_aidmethid_t)CALL((recv), (SFT_parser___parser_prod[30] + 1)))
+#define CALL_parser___parser_prod___APlusMethid___empty_init(recv) ((parser___parser_prod___APlusMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[31] + 0)))
+#define CALL_parser___parser_prod___APlusMethid___init_aplusmethid(recv) ((parser___parser_prod___APlusMethid___init_aplusmethid_t)CALL((recv), (SFT_parser___parser_prod[31] + 1)))
+#define CALL_parser___parser_prod___AMinusMethid___empty_init(recv) ((parser___parser_prod___AMinusMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[32] + 0)))
+#define CALL_parser___parser_prod___AMinusMethid___init_aminusmethid(recv) ((parser___parser_prod___AMinusMethid___init_aminusmethid_t)CALL((recv), (SFT_parser___parser_prod[32] + 1)))
+#define CALL_parser___parser_prod___AStarMethid___empty_init(recv) ((parser___parser_prod___AStarMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[33] + 0)))
+#define CALL_parser___parser_prod___AStarMethid___init_astarmethid(recv) ((parser___parser_prod___AStarMethid___init_astarmethid_t)CALL((recv), (SFT_parser___parser_prod[33] + 1)))
+#define CALL_parser___parser_prod___ASlashMethid___empty_init(recv) ((parser___parser_prod___ASlashMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[34] + 0)))
+#define CALL_parser___parser_prod___ASlashMethid___init_aslashmethid(recv) ((parser___parser_prod___ASlashMethid___init_aslashmethid_t)CALL((recv), (SFT_parser___parser_prod[34] + 1)))
+#define CALL_parser___parser_prod___APercentMethid___empty_init(recv) ((parser___parser_prod___APercentMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[35] + 0)))
+#define CALL_parser___parser_prod___APercentMethid___init_apercentmethid(recv) ((parser___parser_prod___APercentMethid___init_apercentmethid_t)CALL((recv), (SFT_parser___parser_prod[35] + 1)))
+#define CALL_parser___parser_prod___AEqMethid___empty_init(recv) ((parser___parser_prod___AEqMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[36] + 0)))
+#define CALL_parser___parser_prod___AEqMethid___init_aeqmethid(recv) ((parser___parser_prod___AEqMethid___init_aeqmethid_t)CALL((recv), (SFT_parser___parser_prod[36] + 1)))
+#define CALL_parser___parser_prod___ANeMethid___empty_init(recv) ((parser___parser_prod___ANeMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[37] + 0)))
+#define CALL_parser___parser_prod___ANeMethid___init_anemethid(recv) ((parser___parser_prod___ANeMethid___init_anemethid_t)CALL((recv), (SFT_parser___parser_prod[37] + 1)))
+#define CALL_parser___parser_prod___ALeMethid___empty_init(recv) ((parser___parser_prod___ALeMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[38] + 0)))
+#define CALL_parser___parser_prod___ALeMethid___init_alemethid(recv) ((parser___parser_prod___ALeMethid___init_alemethid_t)CALL((recv), (SFT_parser___parser_prod[38] + 1)))
+#define CALL_parser___parser_prod___AGeMethid___empty_init(recv) ((parser___parser_prod___AGeMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[39] + 0)))
+#define CALL_parser___parser_prod___AGeMethid___init_agemethid(recv) ((parser___parser_prod___AGeMethid___init_agemethid_t)CALL((recv), (SFT_parser___parser_prod[39] + 1)))
+#define CALL_parser___parser_prod___ALtMethid___empty_init(recv) ((parser___parser_prod___ALtMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[40] + 0)))
+#define CALL_parser___parser_prod___ALtMethid___init_altmethid(recv) ((parser___parser_prod___ALtMethid___init_altmethid_t)CALL((recv), (SFT_parser___parser_prod[40] + 1)))
+#define CALL_parser___parser_prod___AGtMethid___empty_init(recv) ((parser___parser_prod___AGtMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[41] + 0)))
+#define CALL_parser___parser_prod___AGtMethid___init_agtmethid(recv) ((parser___parser_prod___AGtMethid___init_agtmethid_t)CALL((recv), (SFT_parser___parser_prod[41] + 1)))
+#define CALL_parser___parser_prod___ALlMethid___empty_init(recv) ((parser___parser_prod___ALlMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[42] + 0)))
+#define CALL_parser___parser_prod___ALlMethid___init_allmethid(recv) ((parser___parser_prod___ALlMethid___init_allmethid_t)CALL((recv), (SFT_parser___parser_prod[42] + 1)))
+#define CALL_parser___parser_prod___AGgMethid___empty_init(recv) ((parser___parser_prod___AGgMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[43] + 0)))
+#define CALL_parser___parser_prod___AGgMethid___init_aggmethid(recv) ((parser___parser_prod___AGgMethid___init_aggmethid_t)CALL((recv), (SFT_parser___parser_prod[43] + 1)))
+#define CALL_parser___parser_prod___ABraMethid___empty_init(recv) ((parser___parser_prod___ABraMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[44] + 0)))
+#define CALL_parser___parser_prod___ABraMethid___init_abramethid(recv) ((parser___parser_prod___ABraMethid___init_abramethid_t)CALL((recv), (SFT_parser___parser_prod[44] + 1)))
+#define CALL_parser___parser_prod___AStarshipMethid___empty_init(recv) ((parser___parser_prod___AStarshipMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[45] + 0)))
+#define CALL_parser___parser_prod___AStarshipMethid___init_astarshipmethid(recv) ((parser___parser_prod___AStarshipMethid___init_astarshipmethid_t)CALL((recv), (SFT_parser___parser_prod[45] + 1)))
+#define CALL_parser___parser_prod___AAssignMethid___empty_init(recv) ((parser___parser_prod___AAssignMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[46] + 0)))
+#define CALL_parser___parser_prod___AAssignMethid___init_aassignmethid(recv) ((parser___parser_prod___AAssignMethid___init_aassignmethid_t)CALL((recv), (SFT_parser___parser_prod[46] + 1)))
+#define CALL_parser___parser_prod___ABraassignMethid___empty_init(recv) ((parser___parser_prod___ABraassignMethid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[47] + 0)))
+#define CALL_parser___parser_prod___ABraassignMethid___init_abraassignmethid(recv) ((parser___parser_prod___ABraassignMethid___init_abraassignmethid_t)CALL((recv), (SFT_parser___parser_prod[47] + 1)))
+#define CALL_parser___parser_prod___ASignature___empty_init(recv) ((parser___parser_prod___ASignature___empty_init_t)CALL((recv), (SFT_parser___parser_prod[48] + 0)))
+#define CALL_parser___parser_prod___ASignature___init_asignature(recv) ((parser___parser_prod___ASignature___init_asignature_t)CALL((recv), (SFT_parser___parser_prod[48] + 1)))
+#define CALL_parser___parser_prod___AParam___empty_init(recv) ((parser___parser_prod___AParam___empty_init_t)CALL((recv), (SFT_parser___parser_prod[49] + 0)))
+#define CALL_parser___parser_prod___AParam___init_aparam(recv) ((parser___parser_prod___AParam___init_aparam_t)CALL((recv), (SFT_parser___parser_prod[49] + 1)))
+#define CALL_parser___parser_prod___AClosureDecl___empty_init(recv) ((parser___parser_prod___AClosureDecl___empty_init_t)CALL((recv), (SFT_parser___parser_prod[50] + 0)))
+#define CALL_parser___parser_prod___AClosureDecl___init_aclosuredecl(recv) ((parser___parser_prod___AClosureDecl___init_aclosuredecl_t)CALL((recv), (SFT_parser___parser_prod[50] + 1)))
+#define CALL_parser___parser_prod___AType___empty_init(recv) ((parser___parser_prod___AType___empty_init_t)CALL((recv), (SFT_parser___parser_prod[51] + 0)))
+#define CALL_parser___parser_prod___AType___init_atype(recv) ((parser___parser_prod___AType___init_atype_t)CALL((recv), (SFT_parser___parser_prod[51] + 1)))
+#define CALL_parser___parser_prod___ALabel___empty_init(recv) ((parser___parser_prod___ALabel___empty_init_t)CALL((recv), (SFT_parser___parser_prod[52] + 0)))
+#define CALL_parser___parser_prod___ALabel___init_alabel(recv) ((parser___parser_prod___ALabel___init_alabel_t)CALL((recv), (SFT_parser___parser_prod[52] + 1)))
+#define CALL_parser___parser_prod___ABlockExpr___empty_init(recv) ((parser___parser_prod___ABlockExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[53] + 0)))
+#define CALL_parser___parser_prod___ABlockExpr___init_ablockexpr(recv) ((parser___parser_prod___ABlockExpr___init_ablockexpr_t)CALL((recv), (SFT_parser___parser_prod[53] + 1)))
+#define CALL_parser___parser_prod___AVardeclExpr___empty_init(recv) ((parser___parser_prod___AVardeclExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[54] + 0)))
+#define CALL_parser___parser_prod___AVardeclExpr___init_avardeclexpr(recv) ((parser___parser_prod___AVardeclExpr___init_avardeclexpr_t)CALL((recv), (SFT_parser___parser_prod[54] + 1)))
+#define CALL_parser___parser_prod___AReturnExpr___empty_init(recv) ((parser___parser_prod___AReturnExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[55] + 0)))
+#define CALL_parser___parser_prod___AReturnExpr___init_areturnexpr(recv) ((parser___parser_prod___AReturnExpr___init_areturnexpr_t)CALL((recv), (SFT_parser___parser_prod[55] + 1)))
+#define CALL_parser___parser_prod___ABreakExpr___empty_init(recv) ((parser___parser_prod___ABreakExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[56] + 0)))
+#define CALL_parser___parser_prod___ABreakExpr___init_abreakexpr(recv) ((parser___parser_prod___ABreakExpr___init_abreakexpr_t)CALL((recv), (SFT_parser___parser_prod[56] + 1)))
+#define CALL_parser___parser_prod___AAbortExpr___empty_init(recv) ((parser___parser_prod___AAbortExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[57] + 0)))
+#define CALL_parser___parser_prod___AAbortExpr___init_aabortexpr(recv) ((parser___parser_prod___AAbortExpr___init_aabortexpr_t)CALL((recv), (SFT_parser___parser_prod[57] + 1)))
+#define CALL_parser___parser_prod___AContinueExpr___empty_init(recv) ((parser___parser_prod___AContinueExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[58] + 0)))
+#define CALL_parser___parser_prod___AContinueExpr___init_acontinueexpr(recv) ((parser___parser_prod___AContinueExpr___init_acontinueexpr_t)CALL((recv), (SFT_parser___parser_prod[58] + 1)))
+#define CALL_parser___parser_prod___ADoExpr___empty_init(recv) ((parser___parser_prod___ADoExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[59] + 0)))
+#define CALL_parser___parser_prod___ADoExpr___init_adoexpr(recv) ((parser___parser_prod___ADoExpr___init_adoexpr_t)CALL((recv), (SFT_parser___parser_prod[59] + 1)))
+#define CALL_parser___parser_prod___AIfExpr___empty_init(recv) ((parser___parser_prod___AIfExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[60] + 0)))
+#define CALL_parser___parser_prod___AIfExpr___init_aifexpr(recv) ((parser___parser_prod___AIfExpr___init_aifexpr_t)CALL((recv), (SFT_parser___parser_prod[60] + 1)))
+#define CALL_parser___parser_prod___AIfexprExpr___empty_init(recv) ((parser___parser_prod___AIfexprExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[61] + 0)))
+#define CALL_parser___parser_prod___AIfexprExpr___init_aifexprexpr(recv) ((parser___parser_prod___AIfexprExpr___init_aifexprexpr_t)CALL((recv), (SFT_parser___parser_prod[61] + 1)))
+#define CALL_parser___parser_prod___AWhileExpr___empty_init(recv) ((parser___parser_prod___AWhileExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[62] + 0)))
+#define CALL_parser___parser_prod___AWhileExpr___init_awhileexpr(recv) ((parser___parser_prod___AWhileExpr___init_awhileexpr_t)CALL((recv), (SFT_parser___parser_prod[62] + 1)))
+#define CALL_parser___parser_prod___ALoopExpr___empty_init(recv) ((parser___parser_prod___ALoopExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[63] + 0)))
+#define CALL_parser___parser_prod___ALoopExpr___init_aloopexpr(recv) ((parser___parser_prod___ALoopExpr___init_aloopexpr_t)CALL((recv), (SFT_parser___parser_prod[63] + 1)))
+#define CALL_parser___parser_prod___AForExpr___empty_init(recv) ((parser___parser_prod___AForExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[64] + 0)))
+#define CALL_parser___parser_prod___AForExpr___init_aforexpr(recv) ((parser___parser_prod___AForExpr___init_aforexpr_t)CALL((recv), (SFT_parser___parser_prod[64] + 1)))
+#define CALL_parser___parser_prod___AAssertExpr___empty_init(recv) ((parser___parser_prod___AAssertExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[65] + 0)))
+#define CALL_parser___parser_prod___AAssertExpr___init_aassertexpr(recv) ((parser___parser_prod___AAssertExpr___init_aassertexpr_t)CALL((recv), (SFT_parser___parser_prod[65] + 1)))
+#define CALL_parser___parser_prod___AOnceExpr___empty_init(recv) ((parser___parser_prod___AOnceExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[66] + 0)))
+#define CALL_parser___parser_prod___AOnceExpr___init_aonceexpr(recv) ((parser___parser_prod___AOnceExpr___init_aonceexpr_t)CALL((recv), (SFT_parser___parser_prod[66] + 1)))
+#define CALL_parser___parser_prod___ASendExpr___empty_init(recv) ((parser___parser_prod___ASendExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[67] + 0)))
+#define CALL_parser___parser_prod___ASendExpr___init_asendexpr(recv) ((parser___parser_prod___ASendExpr___init_asendexpr_t)CALL((recv), (SFT_parser___parser_prod[67] + 1)))
+#define CALL_parser___parser_prod___ABinopExpr___empty_init(recv) ((parser___parser_prod___ABinopExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[68] + 0)))
+#define CALL_parser___parser_prod___ABinopExpr___init_abinopexpr(recv) ((parser___parser_prod___ABinopExpr___init_abinopexpr_t)CALL((recv), (SFT_parser___parser_prod[68] + 1)))
+#define CALL_parser___parser_prod___AOrExpr___empty_init(recv) ((parser___parser_prod___AOrExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[69] + 0)))
+#define CALL_parser___parser_prod___AOrExpr___init_aorexpr(recv) ((parser___parser_prod___AOrExpr___init_aorexpr_t)CALL((recv), (SFT_parser___parser_prod[69] + 1)))
+#define CALL_parser___parser_prod___AAndExpr___empty_init(recv) ((parser___parser_prod___AAndExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[70] + 0)))
+#define CALL_parser___parser_prod___AAndExpr___init_aandexpr(recv) ((parser___parser_prod___AAndExpr___init_aandexpr_t)CALL((recv), (SFT_parser___parser_prod[70] + 1)))
+#define CALL_parser___parser_prod___AOrElseExpr___empty_init(recv) ((parser___parser_prod___AOrElseExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[71] + 0)))
+#define CALL_parser___parser_prod___AOrElseExpr___init_aorelseexpr(recv) ((parser___parser_prod___AOrElseExpr___init_aorelseexpr_t)CALL((recv), (SFT_parser___parser_prod[71] + 1)))
+#define CALL_parser___parser_prod___ANotExpr___empty_init(recv) ((parser___parser_prod___ANotExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[72] + 0)))
+#define CALL_parser___parser_prod___ANotExpr___init_anotexpr(recv) ((parser___parser_prod___ANotExpr___init_anotexpr_t)CALL((recv), (SFT_parser___parser_prod[72] + 1)))
+#define CALL_parser___parser_prod___AEqExpr___empty_init(recv) ((parser___parser_prod___AEqExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[73] + 0)))
+#define CALL_parser___parser_prod___AEqExpr___init_aeqexpr(recv) ((parser___parser_prod___AEqExpr___init_aeqexpr_t)CALL((recv), (SFT_parser___parser_prod[73] + 1)))
+#define CALL_parser___parser_prod___AEeExpr___empty_init(recv) ((parser___parser_prod___AEeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[74] + 0)))
+#define CALL_parser___parser_prod___AEeExpr___init_aeeexpr(recv) ((parser___parser_prod___AEeExpr___init_aeeexpr_t)CALL((recv), (SFT_parser___parser_prod[74] + 1)))
+#define CALL_parser___parser_prod___ANeExpr___empty_init(recv) ((parser___parser_prod___ANeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[75] + 0)))
+#define CALL_parser___parser_prod___ANeExpr___init_aneexpr(recv) ((parser___parser_prod___ANeExpr___init_aneexpr_t)CALL((recv), (SFT_parser___parser_prod[75] + 1)))
+#define CALL_parser___parser_prod___ALtExpr___empty_init(recv) ((parser___parser_prod___ALtExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[76] + 0)))
+#define CALL_parser___parser_prod___ALtExpr___init_altexpr(recv) ((parser___parser_prod___ALtExpr___init_altexpr_t)CALL((recv), (SFT_parser___parser_prod[76] + 1)))
+#define CALL_parser___parser_prod___ALeExpr___empty_init(recv) ((parser___parser_prod___ALeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[77] + 0)))
+#define CALL_parser___parser_prod___ALeExpr___init_aleexpr(recv) ((parser___parser_prod___ALeExpr___init_aleexpr_t)CALL((recv), (SFT_parser___parser_prod[77] + 1)))
+#define CALL_parser___parser_prod___ALlExpr___empty_init(recv) ((parser___parser_prod___ALlExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[78] + 0)))
+#define CALL_parser___parser_prod___ALlExpr___init_allexpr(recv) ((parser___parser_prod___ALlExpr___init_allexpr_t)CALL((recv), (SFT_parser___parser_prod[78] + 1)))
+#define CALL_parser___parser_prod___AGtExpr___empty_init(recv) ((parser___parser_prod___AGtExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[79] + 0)))
+#define CALL_parser___parser_prod___AGtExpr___init_agtexpr(recv) ((parser___parser_prod___AGtExpr___init_agtexpr_t)CALL((recv), (SFT_parser___parser_prod[79] + 1)))
+#define CALL_parser___parser_prod___AGeExpr___empty_init(recv) ((parser___parser_prod___AGeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[80] + 0)))
+#define CALL_parser___parser_prod___AGeExpr___init_ageexpr(recv) ((parser___parser_prod___AGeExpr___init_ageexpr_t)CALL((recv), (SFT_parser___parser_prod[80] + 1)))
+#define CALL_parser___parser_prod___AGgExpr___empty_init(recv) ((parser___parser_prod___AGgExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[81] + 0)))
+#define CALL_parser___parser_prod___AGgExpr___init_aggexpr(recv) ((parser___parser_prod___AGgExpr___init_aggexpr_t)CALL((recv), (SFT_parser___parser_prod[81] + 1)))
+#define CALL_parser___parser_prod___AIsaExpr___empty_init(recv) ((parser___parser_prod___AIsaExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[82] + 0)))
+#define CALL_parser___parser_prod___AIsaExpr___init_aisaexpr(recv) ((parser___parser_prod___AIsaExpr___init_aisaexpr_t)CALL((recv), (SFT_parser___parser_prod[82] + 1)))
+#define CALL_parser___parser_prod___APlusExpr___empty_init(recv) ((parser___parser_prod___APlusExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[83] + 0)))
+#define CALL_parser___parser_prod___APlusExpr___init_aplusexpr(recv) ((parser___parser_prod___APlusExpr___init_aplusexpr_t)CALL((recv), (SFT_parser___parser_prod[83] + 1)))
+#define CALL_parser___parser_prod___AMinusExpr___empty_init(recv) ((parser___parser_prod___AMinusExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[84] + 0)))
+#define CALL_parser___parser_prod___AMinusExpr___init_aminusexpr(recv) ((parser___parser_prod___AMinusExpr___init_aminusexpr_t)CALL((recv), (SFT_parser___parser_prod[84] + 1)))
+#define CALL_parser___parser_prod___AStarshipExpr___empty_init(recv) ((parser___parser_prod___AStarshipExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[85] + 0)))
+#define CALL_parser___parser_prod___AStarshipExpr___init_astarshipexpr(recv) ((parser___parser_prod___AStarshipExpr___init_astarshipexpr_t)CALL((recv), (SFT_parser___parser_prod[85] + 1)))
+#define CALL_parser___parser_prod___AStarExpr___empty_init(recv) ((parser___parser_prod___AStarExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[86] + 0)))
+#define CALL_parser___parser_prod___AStarExpr___init_astarexpr(recv) ((parser___parser_prod___AStarExpr___init_astarexpr_t)CALL((recv), (SFT_parser___parser_prod[86] + 1)))
+#define CALL_parser___parser_prod___ASlashExpr___empty_init(recv) ((parser___parser_prod___ASlashExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[87] + 0)))
+#define CALL_parser___parser_prod___ASlashExpr___init_aslashexpr(recv) ((parser___parser_prod___ASlashExpr___init_aslashexpr_t)CALL((recv), (SFT_parser___parser_prod[87] + 1)))
+#define CALL_parser___parser_prod___APercentExpr___empty_init(recv) ((parser___parser_prod___APercentExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[88] + 0)))
+#define CALL_parser___parser_prod___APercentExpr___init_apercentexpr(recv) ((parser___parser_prod___APercentExpr___init_apercentexpr_t)CALL((recv), (SFT_parser___parser_prod[88] + 1)))
+#define CALL_parser___parser_prod___AUminusExpr___empty_init(recv) ((parser___parser_prod___AUminusExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[89] + 0)))
+#define CALL_parser___parser_prod___AUminusExpr___init_auminusexpr(recv) ((parser___parser_prod___AUminusExpr___init_auminusexpr_t)CALL((recv), (SFT_parser___parser_prod[89] + 1)))
+#define CALL_parser___parser_prod___ANewExpr___empty_init(recv) ((parser___parser_prod___ANewExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[90] + 0)))
+#define CALL_parser___parser_prod___ANewExpr___init_anewexpr(recv) ((parser___parser_prod___ANewExpr___init_anewexpr_t)CALL((recv), (SFT_parser___parser_prod[90] + 1)))
+#define CALL_parser___parser_prod___AAttrExpr___empty_init(recv) ((parser___parser_prod___AAttrExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[91] + 0)))
+#define CALL_parser___parser_prod___AAttrExpr___init_aattrexpr(recv) ((parser___parser_prod___AAttrExpr___init_aattrexpr_t)CALL((recv), (SFT_parser___parser_prod[91] + 1)))
+#define CALL_parser___parser_prod___AAttrAssignExpr___empty_init(recv) ((parser___parser_prod___AAttrAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[92] + 0)))
+#define CALL_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(recv) ((parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr_t)CALL((recv), (SFT_parser___parser_prod[92] + 1)))
+#define CALL_parser___parser_prod___AAttrReassignExpr___empty_init(recv) ((parser___parser_prod___AAttrReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[93] + 0)))
+#define CALL_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(recv) ((parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr_t)CALL((recv), (SFT_parser___parser_prod[93] + 1)))
+#define CALL_parser___parser_prod___ACallExpr___empty_init(recv) ((parser___parser_prod___ACallExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[94] + 0)))
+#define CALL_parser___parser_prod___ACallExpr___init_acallexpr(recv) ((parser___parser_prod___ACallExpr___init_acallexpr_t)CALL((recv), (SFT_parser___parser_prod[94] + 1)))
+#define CALL_parser___parser_prod___ACallAssignExpr___empty_init(recv) ((parser___parser_prod___ACallAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[95] + 0)))
+#define CALL_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(recv) ((parser___parser_prod___ACallAssignExpr___init_acallassignexpr_t)CALL((recv), (SFT_parser___parser_prod[95] + 1)))
+#define CALL_parser___parser_prod___ACallReassignExpr___empty_init(recv) ((parser___parser_prod___ACallReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[96] + 0)))
+#define CALL_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(recv) ((parser___parser_prod___ACallReassignExpr___init_acallreassignexpr_t)CALL((recv), (SFT_parser___parser_prod[96] + 1)))
+#define CALL_parser___parser_prod___ASuperExpr___empty_init(recv) ((parser___parser_prod___ASuperExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[97] + 0)))
+#define CALL_parser___parser_prod___ASuperExpr___init_asuperexpr(recv) ((parser___parser_prod___ASuperExpr___init_asuperexpr_t)CALL((recv), (SFT_parser___parser_prod[97] + 1)))
+#define CALL_parser___parser_prod___AInitExpr___empty_init(recv) ((parser___parser_prod___AInitExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[98] + 0)))
+#define CALL_parser___parser_prod___AInitExpr___init_ainitexpr(recv) ((parser___parser_prod___AInitExpr___init_ainitexpr_t)CALL((recv), (SFT_parser___parser_prod[98] + 1)))
+#define CALL_parser___parser_prod___ABraExpr___empty_init(recv) ((parser___parser_prod___ABraExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[99] + 0)))
+#define CALL_parser___parser_prod___ABraExpr___init_abraexpr(recv) ((parser___parser_prod___ABraExpr___init_abraexpr_t)CALL((recv), (SFT_parser___parser_prod[99] + 1)))
+#define CALL_parser___parser_prod___ABraAssignExpr___empty_init(recv) ((parser___parser_prod___ABraAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[100] + 0)))
+#define CALL_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(recv) ((parser___parser_prod___ABraAssignExpr___init_abraassignexpr_t)CALL((recv), (SFT_parser___parser_prod[100] + 1)))
+#define CALL_parser___parser_prod___ABraReassignExpr___empty_init(recv) ((parser___parser_prod___ABraReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[101] + 0)))
+#define CALL_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(recv) ((parser___parser_prod___ABraReassignExpr___init_abrareassignexpr_t)CALL((recv), (SFT_parser___parser_prod[101] + 1)))
+#define CALL_parser___parser_prod___AClosureCallExpr___empty_init(recv) ((parser___parser_prod___AClosureCallExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[102] + 0)))
+#define CALL_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(recv) ((parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr_t)CALL((recv), (SFT_parser___parser_prod[102] + 1)))
+#define CALL_parser___parser_prod___AVarExpr___empty_init(recv) ((parser___parser_prod___AVarExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[103] + 0)))
+#define CALL_parser___parser_prod___AVarExpr___init_avarexpr(recv) ((parser___parser_prod___AVarExpr___init_avarexpr_t)CALL((recv), (SFT_parser___parser_prod[103] + 1)))
+#define CALL_parser___parser_prod___AVarAssignExpr___empty_init(recv) ((parser___parser_prod___AVarAssignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[104] + 0)))
+#define CALL_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(recv) ((parser___parser_prod___AVarAssignExpr___init_avarassignexpr_t)CALL((recv), (SFT_parser___parser_prod[104] + 1)))
+#define CALL_parser___parser_prod___AVarReassignExpr___empty_init(recv) ((parser___parser_prod___AVarReassignExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[105] + 0)))
+#define CALL_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(recv) ((parser___parser_prod___AVarReassignExpr___init_avarreassignexpr_t)CALL((recv), (SFT_parser___parser_prod[105] + 1)))
+#define CALL_parser___parser_prod___ARangeExpr___empty_init(recv) ((parser___parser_prod___ARangeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[106] + 0)))
+#define CALL_parser___parser_prod___ARangeExpr___init_arangeexpr(recv) ((parser___parser_prod___ARangeExpr___init_arangeexpr_t)CALL((recv), (SFT_parser___parser_prod[106] + 1)))
+#define CALL_parser___parser_prod___ACrangeExpr___empty_init(recv) ((parser___parser_prod___ACrangeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[107] + 0)))
+#define CALL_parser___parser_prod___ACrangeExpr___init_acrangeexpr(recv) ((parser___parser_prod___ACrangeExpr___init_acrangeexpr_t)CALL((recv), (SFT_parser___parser_prod[107] + 1)))
+#define CALL_parser___parser_prod___AOrangeExpr___empty_init(recv) ((parser___parser_prod___AOrangeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[108] + 0)))
+#define CALL_parser___parser_prod___AOrangeExpr___init_aorangeexpr(recv) ((parser___parser_prod___AOrangeExpr___init_aorangeexpr_t)CALL((recv), (SFT_parser___parser_prod[108] + 1)))
+#define CALL_parser___parser_prod___AArrayExpr___empty_init(recv) ((parser___parser_prod___AArrayExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[109] + 0)))
+#define CALL_parser___parser_prod___AArrayExpr___init_aarrayexpr(recv) ((parser___parser_prod___AArrayExpr___init_aarrayexpr_t)CALL((recv), (SFT_parser___parser_prod[109] + 1)))
+#define CALL_parser___parser_prod___ASelfExpr___empty_init(recv) ((parser___parser_prod___ASelfExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[110] + 0)))
+#define CALL_parser___parser_prod___ASelfExpr___init_aselfexpr(recv) ((parser___parser_prod___ASelfExpr___init_aselfexpr_t)CALL((recv), (SFT_parser___parser_prod[110] + 1)))
+#define CALL_parser___parser_prod___AImplicitSelfExpr___empty_init(recv) ((parser___parser_prod___AImplicitSelfExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[111] + 0)))
+#define CALL_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(recv) ((parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr_t)CALL((recv), (SFT_parser___parser_prod[111] + 1)))
+#define CALL_parser___parser_prod___ATrueExpr___empty_init(recv) ((parser___parser_prod___ATrueExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[112] + 0)))
+#define CALL_parser___parser_prod___ATrueExpr___init_atrueexpr(recv) ((parser___parser_prod___ATrueExpr___init_atrueexpr_t)CALL((recv), (SFT_parser___parser_prod[112] + 1)))
+#define CALL_parser___parser_prod___AFalseExpr___empty_init(recv) ((parser___parser_prod___AFalseExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[113] + 0)))
+#define CALL_parser___parser_prod___AFalseExpr___init_afalseexpr(recv) ((parser___parser_prod___AFalseExpr___init_afalseexpr_t)CALL((recv), (SFT_parser___parser_prod[113] + 1)))
+#define CALL_parser___parser_prod___ANullExpr___empty_init(recv) ((parser___parser_prod___ANullExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[114] + 0)))
+#define CALL_parser___parser_prod___ANullExpr___init_anullexpr(recv) ((parser___parser_prod___ANullExpr___init_anullexpr_t)CALL((recv), (SFT_parser___parser_prod[114] + 1)))
+#define CALL_parser___parser_prod___AIntExpr___empty_init(recv) ((parser___parser_prod___AIntExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[115] + 0)))
+#define CALL_parser___parser_prod___AIntExpr___init_aintexpr(recv) ((parser___parser_prod___AIntExpr___init_aintexpr_t)CALL((recv), (SFT_parser___parser_prod[115] + 1)))
+#define CALL_parser___parser_prod___AFloatExpr___empty_init(recv) ((parser___parser_prod___AFloatExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[116] + 0)))
+#define CALL_parser___parser_prod___AFloatExpr___init_afloatexpr(recv) ((parser___parser_prod___AFloatExpr___init_afloatexpr_t)CALL((recv), (SFT_parser___parser_prod[116] + 1)))
+#define CALL_parser___parser_prod___ACharExpr___empty_init(recv) ((parser___parser_prod___ACharExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[117] + 0)))
+#define CALL_parser___parser_prod___ACharExpr___init_acharexpr(recv) ((parser___parser_prod___ACharExpr___init_acharexpr_t)CALL((recv), (SFT_parser___parser_prod[117] + 1)))
+#define CALL_parser___parser_prod___AStringExpr___empty_init(recv) ((parser___parser_prod___AStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[118] + 0)))
+#define CALL_parser___parser_prod___AStringExpr___init_astringexpr(recv) ((parser___parser_prod___AStringExpr___init_astringexpr_t)CALL((recv), (SFT_parser___parser_prod[118] + 1)))
+#define CALL_parser___parser_prod___AStartStringExpr___empty_init(recv) ((parser___parser_prod___AStartStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[119] + 0)))
+#define CALL_parser___parser_prod___AStartStringExpr___init_astartstringexpr(recv) ((parser___parser_prod___AStartStringExpr___init_astartstringexpr_t)CALL((recv), (SFT_parser___parser_prod[119] + 1)))
+#define CALL_parser___parser_prod___AMidStringExpr___empty_init(recv) ((parser___parser_prod___AMidStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[120] + 0)))
+#define CALL_parser___parser_prod___AMidStringExpr___init_amidstringexpr(recv) ((parser___parser_prod___AMidStringExpr___init_amidstringexpr_t)CALL((recv), (SFT_parser___parser_prod[120] + 1)))
+#define CALL_parser___parser_prod___AEndStringExpr___empty_init(recv) ((parser___parser_prod___AEndStringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[121] + 0)))
+#define CALL_parser___parser_prod___AEndStringExpr___init_aendstringexpr(recv) ((parser___parser_prod___AEndStringExpr___init_aendstringexpr_t)CALL((recv), (SFT_parser___parser_prod[121] + 1)))
+#define CALL_parser___parser_prod___ASuperstringExpr___empty_init(recv) ((parser___parser_prod___ASuperstringExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[122] + 0)))
+#define CALL_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(recv) ((parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_t)CALL((recv), (SFT_parser___parser_prod[122] + 1)))
+#define CALL_parser___parser_prod___AParExpr___empty_init(recv) ((parser___parser_prod___AParExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[123] + 0)))
+#define CALL_parser___parser_prod___AParExpr___init_aparexpr(recv) ((parser___parser_prod___AParExpr___init_aparexpr_t)CALL((recv), (SFT_parser___parser_prod[123] + 1)))
+#define CALL_parser___parser_prod___AAsCastExpr___empty_init(recv) ((parser___parser_prod___AAsCastExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[124] + 0)))
+#define CALL_parser___parser_prod___AAsCastExpr___init_aascastexpr(recv) ((parser___parser_prod___AAsCastExpr___init_aascastexpr_t)CALL((recv), (SFT_parser___parser_prod[124] + 1)))
+#define CALL_parser___parser_prod___AAsNotnullExpr___empty_init(recv) ((parser___parser_prod___AAsNotnullExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[125] + 0)))
+#define CALL_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(recv) ((parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr_t)CALL((recv), (SFT_parser___parser_prod[125] + 1)))
+#define CALL_parser___parser_prod___AIssetAttrExpr___empty_init(recv) ((parser___parser_prod___AIssetAttrExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[126] + 0)))
+#define CALL_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(recv) ((parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr_t)CALL((recv), (SFT_parser___parser_prod[126] + 1)))
+#define CALL_parser___parser_prod___ADebugTypeExpr___empty_init(recv) ((parser___parser_prod___ADebugTypeExpr___empty_init_t)CALL((recv), (SFT_parser___parser_prod[127] + 0)))
+#define CALL_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(recv) ((parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr_t)CALL((recv), (SFT_parser___parser_prod[127] + 1)))
+#define CALL_parser___parser_prod___AListExprs___empty_init(recv) ((parser___parser_prod___AListExprs___empty_init_t)CALL((recv), (SFT_parser___parser_prod[128] + 0)))
+#define CALL_parser___parser_prod___AListExprs___init_alistexprs(recv) ((parser___parser_prod___AListExprs___init_alistexprs_t)CALL((recv), (SFT_parser___parser_prod[128] + 1)))
+#define CALL_parser___parser_prod___AParExprs___empty_init(recv) ((parser___parser_prod___AParExprs___empty_init_t)CALL((recv), (SFT_parser___parser_prod[129] + 0)))
+#define CALL_parser___parser_prod___AParExprs___init_aparexprs(recv) ((parser___parser_prod___AParExprs___init_aparexprs_t)CALL((recv), (SFT_parser___parser_prod[129] + 1)))
+#define CALL_parser___parser_prod___ABraExprs___empty_init(recv) ((parser___parser_prod___ABraExprs___empty_init_t)CALL((recv), (SFT_parser___parser_prod[130] + 0)))
+#define CALL_parser___parser_prod___ABraExprs___init_abraexprs(recv) ((parser___parser_prod___ABraExprs___init_abraexprs_t)CALL((recv), (SFT_parser___parser_prod[130] + 1)))
+#define CALL_parser___parser_prod___APlusAssignOp___empty_init(recv) ((parser___parser_prod___APlusAssignOp___empty_init_t)CALL((recv), (SFT_parser___parser_prod[131] + 0)))
+#define CALL_parser___parser_prod___APlusAssignOp___init_aplusassignop(recv) ((parser___parser_prod___APlusAssignOp___init_aplusassignop_t)CALL((recv), (SFT_parser___parser_prod[131] + 1)))
+#define CALL_parser___parser_prod___AMinusAssignOp___empty_init(recv) ((parser___parser_prod___AMinusAssignOp___empty_init_t)CALL((recv), (SFT_parser___parser_prod[132] + 0)))
+#define CALL_parser___parser_prod___AMinusAssignOp___init_aminusassignop(recv) ((parser___parser_prod___AMinusAssignOp___init_aminusassignop_t)CALL((recv), (SFT_parser___parser_prod[132] + 1)))
+#define CALL_parser___parser_prod___AClosureDef___empty_init(recv) ((parser___parser_prod___AClosureDef___empty_init_t)CALL((recv), (SFT_parser___parser_prod[133] + 0)))
+#define CALL_parser___parser_prod___AClosureDef___init_aclosuredef(recv) ((parser___parser_prod___AClosureDef___init_aclosuredef_t)CALL((recv), (SFT_parser___parser_prod[133] + 1)))
+#define CALL_parser___parser_prod___ASimpleClosureId___empty_init(recv) ((parser___parser_prod___ASimpleClosureId___empty_init_t)CALL((recv), (SFT_parser___parser_prod[134] + 0)))
+#define CALL_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(recv) ((parser___parser_prod___ASimpleClosureId___init_asimpleclosureid_t)CALL((recv), (SFT_parser___parser_prod[134] + 1)))
+#define CALL_parser___parser_prod___ABreakClosureId___empty_init(recv) ((parser___parser_prod___ABreakClosureId___empty_init_t)CALL((recv), (SFT_parser___parser_prod[135] + 0)))
+#define CALL_parser___parser_prod___ABreakClosureId___init_abreakclosureid(recv) ((parser___parser_prod___ABreakClosureId___init_abreakclosureid_t)CALL((recv), (SFT_parser___parser_prod[135] + 1)))
+#define CALL_parser___parser_prod___AModuleName___empty_init(recv) ((parser___parser_prod___AModuleName___empty_init_t)CALL((recv), (SFT_parser___parser_prod[136] + 0)))
+#define CALL_parser___parser_prod___AModuleName___init_amodulename(recv) ((parser___parser_prod___AModuleName___init_amodulename_t)CALL((recv), (SFT_parser___parser_prod[136] + 1)))
+#define CALL_parser___parser_prod___AExternCalls___empty_init(recv) ((parser___parser_prod___AExternCalls___empty_init_t)CALL((recv), (SFT_parser___parser_prod[137] + 0)))
+#define CALL_parser___parser_prod___AExternCalls___init_aexterncalls(recv) ((parser___parser_prod___AExternCalls___init_aexterncalls_t)CALL((recv), (SFT_parser___parser_prod[137] + 1)))
+#define CALL_parser___parser_prod___AExternCall___empty_init(recv) ((parser___parser_prod___AExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[138] + 0)))
+#define CALL_parser___parser_prod___AExternCall___init_aexterncall(recv) ((parser___parser_prod___AExternCall___init_aexterncall_t)CALL((recv), (SFT_parser___parser_prod[138] + 1)))
+#define CALL_parser___parser_prod___ASuperExternCall___empty_init(recv) ((parser___parser_prod___ASuperExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[139] + 0)))
+#define CALL_parser___parser_prod___ASuperExternCall___init_asuperexterncall(recv) ((parser___parser_prod___ASuperExternCall___init_asuperexterncall_t)CALL((recv), (SFT_parser___parser_prod[139] + 1)))
+#define CALL_parser___parser_prod___ALocalPropExternCall___empty_init(recv) ((parser___parser_prod___ALocalPropExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[140] + 0)))
+#define CALL_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(recv) ((parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall_t)CALL((recv), (SFT_parser___parser_prod[140] + 1)))
+#define CALL_parser___parser_prod___AFullPropExternCall___empty_init(recv) ((parser___parser_prod___AFullPropExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[141] + 0)))
+#define CALL_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(recv) ((parser___parser_prod___AFullPropExternCall___init_afullpropexterncall_t)CALL((recv), (SFT_parser___parser_prod[141] + 1)))
+#define CALL_parser___parser_prod___AInitPropExternCall___empty_init(recv) ((parser___parser_prod___AInitPropExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[142] + 0)))
+#define CALL_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(recv) ((parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall_t)CALL((recv), (SFT_parser___parser_prod[142] + 1)))
+#define CALL_parser___parser_prod___ACastAsExternCall___empty_init(recv) ((parser___parser_prod___ACastAsExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[143] + 0)))
+#define CALL_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(recv) ((parser___parser_prod___ACastAsExternCall___init_acastasexterncall_t)CALL((recv), (SFT_parser___parser_prod[143] + 1)))
+#define CALL_parser___parser_prod___AAsNullableExternCall___empty_init(recv) ((parser___parser_prod___AAsNullableExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[144] + 0)))
+#define CALL_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(recv) ((parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall_t)CALL((recv), (SFT_parser___parser_prod[144] + 1)))
+#define CALL_parser___parser_prod___AAsNotNullableExternCall___empty_init(recv) ((parser___parser_prod___AAsNotNullableExternCall___empty_init_t)CALL((recv), (SFT_parser___parser_prod[145] + 0)))
+#define CALL_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(recv) ((parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall_t)CALL((recv), (SFT_parser___parser_prod[145] + 1)))
+#define CALL_parser___parser_prod___AInLanguage___empty_init(recv) ((parser___parser_prod___AInLanguage___empty_init_t)CALL((recv), (SFT_parser___parser_prod[146] + 0)))
+#define CALL_parser___parser_prod___AInLanguage___init_ainlanguage(recv) ((parser___parser_prod___AInLanguage___init_ainlanguage_t)CALL((recv), (SFT_parser___parser_prod[146] + 1)))
+#define CALL_parser___parser_prod___AExternCodeBlock___empty_init(recv) ((parser___parser_prod___AExternCodeBlock___empty_init_t)CALL((recv), (SFT_parser___parser_prod[147] + 0)))
+#define CALL_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(recv) ((parser___parser_prod___AExternCodeBlock___init_aexterncodeblock_t)CALL((recv), (SFT_parser___parser_prod[147] + 1)))
+#define CALL_parser___parser_prod___AQualified___empty_init(recv) ((parser___parser_prod___AQualified___empty_init_t)CALL((recv), (SFT_parser___parser_prod[148] + 0)))
+#define CALL_parser___parser_prod___AQualified___init_aqualified(recv) ((parser___parser_prod___AQualified___init_aqualified_t)CALL((recv), (SFT_parser___parser_prod[148] + 1)))
+#define CALL_parser___parser_prod___ADoc___empty_init(recv) ((parser___parser_prod___ADoc___empty_init_t)CALL((recv), (SFT_parser___parser_prod[149] + 0)))
+#define CALL_parser___parser_prod___ADoc___init_adoc(recv) ((parser___parser_prod___ADoc___init_adoc_t)CALL((recv), (SFT_parser___parser_prod[149] + 1)))
+#define CALL_parser___parser_prod___AAnnotations___empty_init(recv) ((parser___parser_prod___AAnnotations___empty_init_t)CALL((recv), (SFT_parser___parser_prod[150] + 0)))
+#define CALL_parser___parser_prod___AAnnotations___init_aannotations(recv) ((parser___parser_prod___AAnnotations___init_aannotations_t)CALL((recv), (SFT_parser___parser_prod[150] + 1)))
+#define CALL_parser___parser_prod___AAnnotation___empty_init(recv) ((parser___parser_prod___AAnnotation___empty_init_t)CALL((recv), (SFT_parser___parser_prod[151] + 0)))
+#define CALL_parser___parser_prod___AAnnotation___init_aannotation(recv) ((parser___parser_prod___AAnnotation___init_aannotation_t)CALL((recv), (SFT_parser___parser_prod[151] + 1)))
+#define CALL_parser___parser_prod___ATypeAtArg___empty_init(recv) ((parser___parser_prod___ATypeAtArg___empty_init_t)CALL((recv), (SFT_parser___parser_prod[152] + 0)))
+#define CALL_parser___parser_prod___ATypeAtArg___init_atypeatarg(recv) ((parser___parser_prod___ATypeAtArg___init_atypeatarg_t)CALL((recv), (SFT_parser___parser_prod[152] + 1)))
+#define CALL_parser___parser_prod___AExprAtArg___empty_init(recv) ((parser___parser_prod___AExprAtArg___empty_init_t)CALL((recv), (SFT_parser___parser_prod[153] + 0)))
+#define CALL_parser___parser_prod___AExprAtArg___init_aexpratarg(recv) ((parser___parser_prod___AExprAtArg___init_aexpratarg_t)CALL((recv), (SFT_parser___parser_prod[153] + 1)))
+#define CALL_parser___parser_prod___AAtAtArg___empty_init(recv) ((parser___parser_prod___AAtAtArg___empty_init_t)CALL((recv), (SFT_parser___parser_prod[154] + 0)))
+#define CALL_parser___parser_prod___AAtAtArg___init_aatatarg(recv) ((parser___parser_prod___AAtAtArg___init_aatatarg_t)CALL((recv), (SFT_parser___parser_prod[154] + 1)))
+#define CALL_parser___parser_prod___AIdAtid___empty_init(recv) ((parser___parser_prod___AIdAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[155] + 0)))
+#define CALL_parser___parser_prod___AIdAtid___init_aidatid(recv) ((parser___parser_prod___AIdAtid___init_aidatid_t)CALL((recv), (SFT_parser___parser_prod[155] + 1)))
+#define CALL_parser___parser_prod___AKwexternAtid___empty_init(recv) ((parser___parser_prod___AKwexternAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[156] + 0)))
+#define CALL_parser___parser_prod___AKwexternAtid___init_akwexternatid(recv) ((parser___parser_prod___AKwexternAtid___init_akwexternatid_t)CALL((recv), (SFT_parser___parser_prod[156] + 1)))
+#define CALL_parser___parser_prod___AKwinternAtid___empty_init(recv) ((parser___parser_prod___AKwinternAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[157] + 0)))
+#define CALL_parser___parser_prod___AKwinternAtid___init_akwinternatid(recv) ((parser___parser_prod___AKwinternAtid___init_akwinternatid_t)CALL((recv), (SFT_parser___parser_prod[157] + 1)))
+#define CALL_parser___parser_prod___AKwreadableAtid___empty_init(recv) ((parser___parser_prod___AKwreadableAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[158] + 0)))
+#define CALL_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(recv) ((parser___parser_prod___AKwreadableAtid___init_akwreadableatid_t)CALL((recv), (SFT_parser___parser_prod[158] + 1)))
+#define CALL_parser___parser_prod___AKwwritableAtid___empty_init(recv) ((parser___parser_prod___AKwwritableAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[159] + 0)))
+#define CALL_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(recv) ((parser___parser_prod___AKwwritableAtid___init_akwwritableatid_t)CALL((recv), (SFT_parser___parser_prod[159] + 1)))
+#define CALL_parser___parser_prod___AKwimportAtid___empty_init(recv) ((parser___parser_prod___AKwimportAtid___empty_init_t)CALL((recv), (SFT_parser___parser_prod[160] + 0)))
+#define CALL_parser___parser_prod___AKwimportAtid___init_akwimportatid(recv) ((parser___parser_prod___AKwimportAtid___init_akwimportatid_t)CALL((recv), (SFT_parser___parser_prod[160] + 1)))
 void parser___parser_prod___AModule___empty_init(val_t p0, int* init_table);
 typedef void (*parser___parser_prod___AModule___empty_init_t)(val_t p0, int* init_table);
 val_t NEW_AModule_parser___parser_prod___AModule___empty_init();
@@ -392,6 +344,8 @@ typedef void (*parser___parser_prod___AModule___init_amodule_t)(val_t p0, val_t
 val_t NEW_AModule_parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AModule___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AModule___n_moduledecl__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModule___n_moduledecl__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AModule___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AModule___visit_all_1_0)(struct stack_frame_t *);
@@ -412,6 +366,14 @@ typedef void (*parser___parser_prod___AModuledecl___init_amoduledecl_t)(val_t p0
 val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AModuledecl___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AModuledecl___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModuledecl___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AModuledecl___n_kwmodule__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModuledecl___n_kwmodule__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AModuledecl___n_name__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModuledecl___n_name__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AModuledecl___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModuledecl___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AModuledecl___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AModuledecl_parser___parser_nodes___ANode___init();
@@ -423,6 +385,14 @@ typedef void (*parser___parser_prod___AStdImport___init_astdimport_t)(val_t p0,
 val_t NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AStdImport___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStdImport___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStdImport___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdImport___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdImport___n_kwimport__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdImport___n_kwimport__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdImport___n_name__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdImport___n_name__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdImport___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdImport___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStdImport___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStdImport___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStdImport_parser___parser_nodes___ANode___init();
@@ -434,6 +404,12 @@ typedef void (*parser___parser_prod___ANoImport___init_anoimport_t)(val_t p0, va
 val_t NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ANoImport___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ANoImport___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ANoImport___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANoImport___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANoImport___n_kwimport__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANoImport___n_kwimport__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANoImport___n_kwend__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANoImport___n_kwend__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ANoImport___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ANoImport___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ANoImport_parser___parser_nodes___ANode___init();
@@ -456,6 +432,8 @@ typedef void (*parser___parser_prod___APrivateVisibility___init_aprivatevisibili
 val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0);
 void parser___parser_prod___APrivateVisibility___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___APrivateVisibility___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___APrivateVisibility___n_kwprivate__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APrivateVisibility___n_kwprivate__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___APrivateVisibility___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___APrivateVisibility___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init();
@@ -467,6 +445,8 @@ typedef void (*parser___parser_prod___AProtectedVisibility___init_aprotectedvisi
 val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0);
 void parser___parser_prod___AProtectedVisibility___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AProtectedVisibility___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AProtectedVisibility___n_kwprotected__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AProtectedVisibility___n_kwprotected__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AProtectedVisibility___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AProtectedVisibility___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init();
@@ -478,6 +458,8 @@ typedef void (*parser___parser_prod___AIntrudeVisibility___init_aintrudevisibili
 val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0);
 void parser___parser_prod___AIntrudeVisibility___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIntrudeVisibility___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIntrudeVisibility___n_kwintrude__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIntrudeVisibility___n_kwintrude__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIntrudeVisibility___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIntrudeVisibility___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init();
@@ -498,6 +480,22 @@ typedef void (*parser___parser_prod___AStdClassdef___init_astdclassdef_t)(val_t
 val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, val_t p10);
 void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStdClassdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStdClassdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_classkind__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_classkind__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_annotations__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_extern_code_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_extern_code_block__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStdClassdef___n_kwend__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStdClassdef___n_kwend__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStdClassdef___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AStdClassdef___visit_all_1_0)(struct stack_frame_t *);
@@ -552,6 +550,8 @@ typedef void (*parser___parser_prod___AConcreteClasskind___init_aconcreteclasski
 val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0);
 void parser___parser_prod___AConcreteClasskind___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AConcreteClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AConcreteClasskind___n_kwclass__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteClasskind___n_kwclass__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AConcreteClasskind___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AConcreteClasskind___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init();
@@ -563,6 +563,10 @@ typedef void (*parser___parser_prod___AAbstractClasskind___init_aabstractclasski
 val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1);
 void parser___parser_prod___AAbstractClasskind___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAbstractClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAbstractClasskind___n_kwabstract__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAbstractClasskind___n_kwabstract__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAbstractClasskind___n_kwclass__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAbstractClasskind___n_kwclass__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAbstractClasskind___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAbstractClasskind___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init();
@@ -574,6 +578,8 @@ typedef void (*parser___parser_prod___AInterfaceClasskind___init_ainterfaceclass
 val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0);
 void parser___parser_prod___AInterfaceClasskind___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AInterfaceClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AInterfaceClasskind___n_kwinterface__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInterfaceClasskind___n_kwinterface__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AInterfaceClasskind___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AInterfaceClasskind___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init();
@@ -585,6 +591,8 @@ typedef void (*parser___parser_prod___AEnumClasskind___init_aenumclasskind_t)(va
 val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0);
 void parser___parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AEnumClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AEnumClasskind___n_kwenum__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEnumClasskind___n_kwenum__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AEnumClasskind___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AEnumClasskind___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init();
@@ -596,6 +604,10 @@ typedef void (*parser___parser_prod___AExternClasskind___init_aexternclasskind_t
 val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, val_t p1);
 void parser___parser_prod___AExternClasskind___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AExternClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AExternClasskind___n_kwextern__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternClasskind___n_kwextern__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternClasskind___n_kwclass__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternClasskind___n_kwclass__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AExternClasskind___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AExternClasskind___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init();
@@ -607,6 +619,12 @@ typedef void (*parser___parser_prod___AFormaldef___init_aformaldef_t)(val_t p0,
 val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AFormaldef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AFormaldef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFormaldef___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AFormaldef___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFormaldef___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AFormaldef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFormaldef___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AFormaldef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AFormaldef_parser___parser_nodes___ANode___init();
@@ -618,6 +636,12 @@ typedef void (*parser___parser_prod___ASuperclass___init_asuperclass_t)(val_t p0
 val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASuperclass___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASuperclass___n_kwsuper__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperclass___n_kwsuper__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASuperclass___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperclass___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASuperclass___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperclass___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASuperclass___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASuperclass_parser___parser_nodes___ANode___init();
@@ -629,6 +653,28 @@ typedef void (*parser___parser_prod___AAttrPropdef___init_aattrpropdef_t)(val_t
 val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9, val_t p10);
 void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAttrPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAttrPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_readable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_readable__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_writable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_writable__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_kwvar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_kwvar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_id2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_id2__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_annotations__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrPropdef___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrPropdef___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAttrPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init();
@@ -640,6 +686,16 @@ typedef void (*parser___parser_prod___AMethPropdef___init_amethpropdef_t)(val_t
 val_t NEW_AMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AMethPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AMethPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMethPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AMethPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMethPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AMethPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMethPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AMethPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMethPropdef___n_signature__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AMethPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AMethPropdef_parser___parser_nodes___ANode___init();
@@ -652,6 +708,20 @@ typedef void (*parser___parser_prod___ADeferredMethPropdef___init_adeferredmethp
 val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
 void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ADeferredMethPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ADeferredMethPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADeferredMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADeferredMethPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADeferredMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADeferredMethPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADeferredMethPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_signature__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADeferredMethPropdef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADeferredMethPropdef___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ADeferredMethPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init();
@@ -665,6 +735,18 @@ typedef void (*parser___parser_prod___AInternMethPropdef___init_ainternmethpropd
 val_t NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
 void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AInternMethPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AInternMethPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInternMethPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInternMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInternMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInternMethPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInternMethPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInternMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInternMethPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInternMethPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInternMethPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInternMethPropdef___n_signature__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AInternMethPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init();
@@ -678,6 +760,24 @@ typedef void (*parser___parser_prod___AExternMethPropdef___init_aexternmethpropd
 val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8);
 void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AExternMethPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AExternMethPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_signature__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_extern__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_extern__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_extern_calls__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_extern_calls__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternMethPropdef___n_extern_code_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternMethPropdef___n_extern_code_block__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AExternMethPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init();
@@ -691,6 +791,22 @@ typedef void (*parser___parser_prod___AConcreteMethPropdef___init_aconcretemethp
 val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7);
 void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AConcreteMethPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AConcreteMethPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_kwmeth__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_signature__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_annotations__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteMethPropdef___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteMethPropdef___n_block__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AConcreteMethPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init();
@@ -704,6 +820,22 @@ typedef void (*parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitp
 val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7);
 void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AConcreteInitPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AConcreteInitPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_kwinit__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_kwinit__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_signature__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_annotations__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AConcreteInitPropdef___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AConcreteInitPropdef___n_block__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AConcreteInitPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init();
@@ -719,6 +851,24 @@ typedef void (*parser___parser_prod___AExternInitPropdef___init_aexterninitpropd
 val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8);
 void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AExternInitPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AExternInitPropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_kwnew__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_kwnew__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_methid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_signature__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_extern__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_extern__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_extern_calls__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_extern_calls__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternInitPropdef___n_extern_code_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternInitPropdef___n_extern_code_block__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AExternInitPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AExternInitPropdef_parser___parser_nodes___ANode___init();
@@ -732,6 +882,10 @@ typedef void (*parser___parser_prod___AMainMethPropdef___init_amainmethpropdef_t
 val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1);
 void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AMainMethPropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AMainMethPropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMainMethPropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AMainMethPropdef___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMainMethPropdef___n_block__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AMainMethPropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init();
@@ -746,6 +900,20 @@ typedef void (*parser___parser_prod___ATypePropdef___init_atypepropdef_t)(val_t
 val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
 void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ATypePropdef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ATypePropdef___n_doc__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_doc__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATypePropdef___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATypePropdef___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATypePropdef___n_kwtype__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_kwtype__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATypePropdef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATypePropdef___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATypePropdef___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypePropdef___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ATypePropdef___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init();
@@ -757,6 +925,10 @@ typedef void (*parser___parser_prod___AReadAble___init_areadable_t)(val_t p0, va
 val_t NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1);
 void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AReadAble___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AReadAble___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AReadAble___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AReadAble___n_kwreadable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AReadAble___n_kwreadable__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AReadAble___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AReadAble_parser___parser_nodes___ANode___init();
@@ -768,6 +940,12 @@ typedef void (*parser___parser_prod___AWriteAble___init_awriteable_t)(val_t p0,
 val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AWriteAble___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AWriteAble___n_kwredef__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWriteAble___n_kwredef__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AWriteAble___n_visibility__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWriteAble___n_visibility__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AWriteAble___n_kwwritable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWriteAble___n_kwwritable__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AWriteAble___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AWriteAble_parser___parser_nodes___ANode___init();
@@ -779,6 +957,8 @@ typedef void (*parser___parser_prod___AIdMethid___init_aidmethid_t)(val_t p0, va
 val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(val_t p0);
 void parser___parser_prod___AIdMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIdMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIdMethid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIdMethid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIdMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIdMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIdMethid_parser___parser_nodes___ANode___init();
@@ -790,6 +970,8 @@ typedef void (*parser___parser_prod___APlusMethid___init_aplusmethid_t)(val_t p0
 val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(val_t p0);
 void parser___parser_prod___APlusMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___APlusMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___APlusMethid___n_plus__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APlusMethid___n_plus__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___APlusMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___APlusMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_APlusMethid_parser___parser_nodes___ANode___init();
@@ -801,6 +983,8 @@ typedef void (*parser___parser_prod___AMinusMethid___init_aminusmethid_t)(val_t
 val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(val_t p0);
 void parser___parser_prod___AMinusMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AMinusMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AMinusMethid___n_minus__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMinusMethid___n_minus__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AMinusMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AMinusMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init();
@@ -812,6 +996,8 @@ typedef void (*parser___parser_prod___AStarMethid___init_astarmethid_t)(val_t p0
 val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(val_t p0);
 void parser___parser_prod___AStarMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStarMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStarMethid___n_star__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStarMethid___n_star__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStarMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStarMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStarMethid_parser___parser_nodes___ANode___init();
@@ -823,6 +1009,8 @@ typedef void (*parser___parser_prod___ASlashMethid___init_aslashmethid_t)(val_t
 val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(val_t p0);
 void parser___parser_prod___ASlashMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASlashMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASlashMethid___n_slash__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASlashMethid___n_slash__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASlashMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASlashMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init();
@@ -834,6 +1022,8 @@ typedef void (*parser___parser_prod___APercentMethid___init_apercentmethid_t)(va
 val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid(val_t p0);
 void parser___parser_prod___APercentMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___APercentMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___APercentMethid___n_percent__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APercentMethid___n_percent__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___APercentMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___APercentMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_APercentMethid_parser___parser_nodes___ANode___init();
@@ -845,6 +1035,8 @@ typedef void (*parser___parser_prod___AEqMethid___init_aeqmethid_t)(val_t p0, va
 val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0);
 void parser___parser_prod___AEqMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AEqMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AEqMethid___n_eq__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEqMethid___n_eq__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AEqMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AEqMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AEqMethid_parser___parser_nodes___ANode___init();
@@ -856,6 +1048,8 @@ typedef void (*parser___parser_prod___ANeMethid___init_anemethid_t)(val_t p0, va
 val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(val_t p0);
 void parser___parser_prod___ANeMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ANeMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ANeMethid___n_ne__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANeMethid___n_ne__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ANeMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ANeMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ANeMethid_parser___parser_nodes___ANode___init();
@@ -867,6 +1061,8 @@ typedef void (*parser___parser_prod___ALeMethid___init_alemethid_t)(val_t p0, va
 val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(val_t p0);
 void parser___parser_prod___ALeMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALeMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALeMethid___n_le__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALeMethid___n_le__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALeMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALeMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALeMethid_parser___parser_nodes___ANode___init();
@@ -878,6 +1074,8 @@ typedef void (*parser___parser_prod___AGeMethid___init_agemethid_t)(val_t p0, va
 val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(val_t p0);
 void parser___parser_prod___AGeMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AGeMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AGeMethid___n_ge__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGeMethid___n_ge__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AGeMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AGeMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AGeMethid_parser___parser_nodes___ANode___init();
@@ -889,6 +1087,8 @@ typedef void (*parser___parser_prod___ALtMethid___init_altmethid_t)(val_t p0, va
 val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(val_t p0);
 void parser___parser_prod___ALtMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALtMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALtMethid___n_lt__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALtMethid___n_lt__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALtMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALtMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALtMethid_parser___parser_nodes___ANode___init();
@@ -900,6 +1100,8 @@ typedef void (*parser___parser_prod___AGtMethid___init_agtmethid_t)(val_t p0, va
 val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(val_t p0);
 void parser___parser_prod___AGtMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AGtMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AGtMethid___n_gt__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGtMethid___n_gt__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AGtMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AGtMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AGtMethid_parser___parser_nodes___ANode___init();
@@ -911,6 +1113,8 @@ typedef void (*parser___parser_prod___ALlMethid___init_allmethid_t)(val_t p0, va
 val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(val_t p0);
 void parser___parser_prod___ALlMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALlMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALlMethid___n_ll__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALlMethid___n_ll__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALlMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALlMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALlMethid_parser___parser_nodes___ANode___init();
@@ -922,6 +1126,8 @@ typedef void (*parser___parser_prod___AGgMethid___init_aggmethid_t)(val_t p0, va
 val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(val_t p0);
 void parser___parser_prod___AGgMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AGgMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AGgMethid___n_gg__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGgMethid___n_gg__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AGgMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AGgMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AGgMethid_parser___parser_nodes___ANode___init();
@@ -933,6 +1139,10 @@ typedef void (*parser___parser_prod___ABraMethid___init_abramethid_t)(val_t p0,
 val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1);
 void parser___parser_prod___ABraMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABraMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABraMethid___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraMethid___n_obra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraMethid___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraMethid___n_cbra__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABraMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABraMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABraMethid_parser___parser_nodes___ANode___init();
@@ -944,6 +1154,8 @@ typedef void (*parser___parser_prod___AStarshipMethid___init_astarshipmethid_t)(
 val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0);
 void parser___parser_prod___AStarshipMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStarshipMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStarshipMethid___n_starship__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStarshipMethid___n_starship__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStarshipMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStarshipMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init();
@@ -955,6 +1167,10 @@ typedef void (*parser___parser_prod___AAssignMethid___init_aassignmethid_t)(val_
 val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1);
 void parser___parser_prod___AAssignMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAssignMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAssignMethid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAssignMethid___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAssignMethid___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAssignMethid___n_assign__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAssignMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAssignMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init();
@@ -966,6 +1182,12 @@ typedef void (*parser___parser_prod___ABraassignMethid___init_abraassignmethid_t
 val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ABraassignMethid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABraassignMethid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABraassignMethid___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraassignMethid___n_obra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraassignMethid___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraassignMethid___n_cbra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraassignMethid___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraassignMethid___n_assign__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABraassignMethid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABraassignMethid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init();
@@ -983,6 +1205,12 @@ typedef void (*parser___parser_prod___ASignature___init_asignature_t)(val_t p0,
 val_t NEW_ASignature_parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASignature___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASignature___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASignature___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASignature___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASignature___n_cpar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASignature___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASignature___n_type__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASignature___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___ASignature___visit_all_1_0)(struct stack_frame_t *);
@@ -1000,6 +1228,14 @@ typedef void (*parser___parser_prod___AParam___init_aparam_t)(val_t p0, val_t p1
 val_t NEW_AParam_parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AParam___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AParam___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParam___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParam___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParam___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParam___n_dotdotdot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParam___n_dotdotdot__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParam___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParam___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AParam___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AParam_parser___parser_nodes___ANode___init();
@@ -1011,6 +1247,16 @@ typedef void (*parser___parser_prod___AClosureDecl___init_aclosuredecl_t)(val_t
 val_t NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AClosureDecl___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AClosureDecl___n_kwbreak__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDecl___n_kwbreak__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDecl___n_bang__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDecl___n_bang__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDecl___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDecl___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDecl___n_signature__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDecl___n_signature__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDecl___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDecl___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AClosureDecl___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init();
@@ -1025,6 +1271,12 @@ typedef void (*parser___parser_prod___AType___init_atype_t)(val_t p0, val_t p1,
 val_t NEW_AType_parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AType___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AType___n_kwnullable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AType___n_kwnullable__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AType___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AType___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AType___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AType___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AType___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AType___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AType___visit_all_1_0)(struct stack_frame_t *);
@@ -1039,6 +1291,10 @@ typedef void (*parser___parser_prod___ALabel___init_alabel_t)(val_t p0, val_t p1
 val_t NEW_ALabel_parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1);
 void parser___parser_prod___ALabel___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALabel___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALabel___n_kwlabel__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALabel___n_kwlabel__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ALabel___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALabel___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALabel___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALabel___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALabel_parser___parser_nodes___ANode___init();
@@ -1053,6 +1309,8 @@ typedef void (*parser___parser_prod___ABlockExpr___init_ablockexpr_t)(val_t p0,
 val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1);
 void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABlockExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABlockExpr___n_kwend__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABlockExpr___n_kwend__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABlockExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABlockExpr___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___ABlockExpr___visit_all_1_0)(struct stack_frame_t *);
@@ -1067,6 +1325,18 @@ typedef void (*parser___parser_prod___AVardeclExpr___init_avardeclexpr_t)(val_t
 val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
 void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AVardeclExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AVardeclExpr___n_kwvar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVardeclExpr___n_kwvar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVardeclExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVardeclExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVardeclExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVardeclExpr___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVardeclExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVardeclExpr___n_assign__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVardeclExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVardeclExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVardeclExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVardeclExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AVardeclExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init();
@@ -1078,6 +1348,10 @@ typedef void (*parser___parser_prod___AReturnExpr___init_areturnexpr_t)(val_t p0
 val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1);
 void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AReturnExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AReturnExpr___n_kwreturn__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AReturnExpr___n_kwreturn__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AReturnExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AReturnExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AReturnExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init();
@@ -1089,6 +1363,12 @@ typedef void (*parser___parser_prod___ABreakExpr___init_abreakexpr_t)(val_t p0,
 val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABreakExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABreakExpr___n_kwbreak__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABreakExpr___n_kwbreak__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABreakExpr___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABreakExpr___n_label__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABreakExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABreakExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABreakExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init();
@@ -1100,6 +1380,8 @@ typedef void (*parser___parser_prod___AAbortExpr___init_aabortexpr_t)(val_t p0,
 val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p0);
 void parser___parser_prod___AAbortExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAbortExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAbortExpr___n_kwabort__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAbortExpr___n_kwabort__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAbortExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAbortExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init();
@@ -1111,6 +1393,12 @@ typedef void (*parser___parser_prod___AContinueExpr___init_acontinueexpr_t)(val_
 val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AContinueExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AContinueExpr___n_kwcontinue__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AContinueExpr___n_kwcontinue__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AContinueExpr___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AContinueExpr___n_label__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AContinueExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AContinueExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AContinueExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init();
@@ -1122,6 +1410,12 @@ typedef void (*parser___parser_prod___ADoExpr___init_adoexpr_t)(val_t p0, val_t
 val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ADoExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ADoExpr___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADoExpr___n_kwdo__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADoExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADoExpr___n_block__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADoExpr___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADoExpr___n_label__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ADoExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ADoExpr_parser___parser_nodes___ANode___init();
@@ -1133,6 +1427,14 @@ typedef void (*parser___parser_prod___AIfExpr___init_aifexpr_t)(val_t p0, val_t
 val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIfExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIfExpr___n_kwif__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfExpr___n_kwif__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfExpr___n_then__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfExpr___n_then__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfExpr___n_else__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfExpr___n_else__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIfExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIfExpr_parser___parser_nodes___ANode___init();
@@ -1144,6 +1446,18 @@ typedef void (*parser___parser_prod___AIfexprExpr___init_aifexprexpr_t)(val_t p0
 val_t NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
 void parser___parser_prod___AIfexprExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIfexprExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIfexprExpr___n_kwif__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfexprExpr___n_kwif__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfexprExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfexprExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfexprExpr___n_kwthen__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfexprExpr___n_kwthen__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfexprExpr___n_then__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfexprExpr___n_then__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfexprExpr___n_kwelse__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfexprExpr___n_kwelse__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIfexprExpr___n_else__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIfexprExpr___n_else__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIfexprExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIfexprExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init();
@@ -1155,6 +1469,16 @@ typedef void (*parser___parser_prod___AWhileExpr___init_awhileexpr_t)(val_t p0,
 val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AWhileExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AWhileExpr___n_kwwhile__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWhileExpr___n_kwwhile__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AWhileExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWhileExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AWhileExpr___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWhileExpr___n_kwdo__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AWhileExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWhileExpr___n_block__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AWhileExpr___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AWhileExpr___n_label__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AWhileExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init();
@@ -1166,6 +1490,12 @@ typedef void (*parser___parser_prod___ALoopExpr___init_aloopexpr_t)(val_t p0, va
 val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALoopExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALoopExpr___n_kwloop__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALoopExpr___n_kwloop__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ALoopExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALoopExpr___n_block__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ALoopExpr___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALoopExpr___n_label__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALoopExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init();
@@ -1180,6 +1510,16 @@ typedef void (*parser___parser_prod___AForExpr___init_aforexpr_t)(val_t p0, val_
 val_t NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
 void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AForExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AForExpr___n_kwfor__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AForExpr___n_kwfor__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AForExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AForExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AForExpr___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AForExpr___n_kwdo__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AForExpr___n_block__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AForExpr___n_block__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AForExpr___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AForExpr___n_label__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AForExpr___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AForExpr___visit_all_1_0)(struct stack_frame_t *);
@@ -1194,6 +1534,14 @@ typedef void (*parser___parser_prod___AAssertExpr___init_aassertexpr_t)(val_t p0
 val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAssertExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAssertExpr___n_kwassert__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAssertExpr___n_kwassert__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAssertExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAssertExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAssertExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAssertExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAssertExpr___n_else__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAssertExpr___n_else__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAssertExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init();
@@ -1205,6 +1553,10 @@ typedef void (*parser___parser_prod___AOnceExpr___init_aonceexpr_t)(val_t p0, va
 val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1);
 void parser___parser_prod___AOnceExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AOnceExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AOnceExpr___n_kwonce__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOnceExpr___n_kwonce__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOnceExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOnceExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AOnceExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AOnceExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init();
@@ -1216,6 +1568,8 @@ typedef void (*parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0, va
 val_t NEW_ASendExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 void parser___parser_prod___ASendExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASendExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASendExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASendExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASendExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASendExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASendExpr_parser___parser_nodes___ANode___init();
@@ -1228,6 +1582,10 @@ typedef void (*parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0,
 val_t NEW_ABinopExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 void parser___parser_prod___ABinopExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABinopExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABinopExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABinopExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABinopExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABinopExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABinopExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABinopExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABinopExpr_parser___parser_nodes___ANode___init();
@@ -1240,6 +1598,10 @@ typedef void (*parser___parser_prod___AOrExpr___init_aorexpr_t)(val_t p0, val_t
 val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1);
 void parser___parser_prod___AOrExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AOrExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AOrExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOrExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AOrExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AOrExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AOrExpr_parser___parser_nodes___ANode___init();
@@ -1251,6 +1613,10 @@ typedef void (*parser___parser_prod___AAndExpr___init_aandexpr_t)(val_t p0, val_
 val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1);
 void parser___parser_prod___AAndExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAndExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAndExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAndExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAndExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAndExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAndExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAndExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAndExpr_parser___parser_nodes___ANode___init();
@@ -1262,6 +1628,10 @@ typedef void (*parser___parser_prod___AOrElseExpr___init_aorelseexpr_t)(val_t p0
 val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1);
 void parser___parser_prod___AOrElseExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AOrElseExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AOrElseExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrElseExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOrElseExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrElseExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AOrElseExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AOrElseExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init();
@@ -1273,6 +1643,10 @@ typedef void (*parser___parser_prod___ANotExpr___init_anotexpr_t)(val_t p0, val_
 val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1);
 void parser___parser_prod___ANotExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ANotExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ANotExpr___n_kwnot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANotExpr___n_kwnot__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANotExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANotExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ANotExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ANotExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ANotExpr_parser___parser_nodes___ANode___init();
@@ -1285,6 +1659,10 @@ typedef void (*parser___parser_prod___AEqExpr___init_aeqexpr_t)(val_t p0, val_t
 val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1);
 void parser___parser_prod___AEqExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AEqExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AEqExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEqExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AEqExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEqExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AEqExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AEqExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AEqExpr_parser___parser_nodes___ANode___init();
@@ -1299,6 +1677,10 @@ typedef void (*parser___parser_prod___AEeExpr___init_aeeexpr_t)(val_t p0, val_t
 val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1);
 void parser___parser_prod___AEeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AEeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AEeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AEeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AEeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AEeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AEeExpr_parser___parser_nodes___ANode___init();
@@ -1311,6 +1693,10 @@ typedef void (*parser___parser_prod___ANeExpr___init_aneexpr_t)(val_t p0, val_t
 val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1);
 void parser___parser_prod___ANeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ANeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ANeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ANeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ANeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ANeExpr_parser___parser_nodes___ANode___init();
@@ -1326,6 +1712,10 @@ typedef void (*parser___parser_prod___ALtExpr___init_altexpr_t)(val_t p0, val_t
 val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1);
 void parser___parser_prod___ALtExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALtExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALtExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALtExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ALtExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALtExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALtExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALtExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALtExpr_parser___parser_nodes___ANode___init();
@@ -1341,6 +1731,10 @@ typedef void (*parser___parser_prod___ALeExpr___init_aleexpr_t)(val_t p0, val_t
 val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1);
 void parser___parser_prod___ALeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ALeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALeExpr_parser___parser_nodes___ANode___init();
@@ -1356,6 +1750,10 @@ typedef void (*parser___parser_prod___ALlExpr___init_allexpr_t)(val_t p0, val_t
 val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1);
 void parser___parser_prod___ALlExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALlExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALlExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALlExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ALlExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALlExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALlExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALlExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALlExpr_parser___parser_nodes___ANode___init();
@@ -1371,6 +1769,10 @@ typedef void (*parser___parser_prod___AGtExpr___init_agtexpr_t)(val_t p0, val_t
 val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1);
 void parser___parser_prod___AGtExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AGtExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AGtExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGtExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AGtExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGtExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AGtExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AGtExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AGtExpr_parser___parser_nodes___ANode___init();
@@ -1386,6 +1788,10 @@ typedef void (*parser___parser_prod___AGeExpr___init_ageexpr_t)(val_t p0, val_t
 val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1);
 void parser___parser_prod___AGeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AGeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AGeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AGeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AGeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AGeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AGeExpr_parser___parser_nodes___ANode___init();
@@ -1401,6 +1807,10 @@ typedef void (*parser___parser_prod___AGgExpr___init_aggexpr_t)(val_t p0, val_t
 val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1);
 void parser___parser_prod___AGgExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AGgExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AGgExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGgExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AGgExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AGgExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AGgExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AGgExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AGgExpr_parser___parser_nodes___ANode___init();
@@ -1415,6 +1825,10 @@ typedef void (*parser___parser_prod___AIsaExpr___init_aisaexpr_t)(val_t p0, val_
 val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1);
 void parser___parser_prod___AIsaExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIsaExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIsaExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIsaExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIsaExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIsaExpr___n_type__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIsaExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIsaExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init();
@@ -1427,6 +1841,10 @@ typedef void (*parser___parser_prod___APlusExpr___init_aplusexpr_t)(val_t p0, va
 val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1);
 void parser___parser_prod___APlusExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___APlusExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___APlusExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APlusExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___APlusExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APlusExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___APlusExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___APlusExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_APlusExpr_parser___parser_nodes___ANode___init();
@@ -1442,6 +1860,10 @@ typedef void (*parser___parser_prod___AMinusExpr___init_aminusexpr_t)(val_t p0,
 val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1);
 void parser___parser_prod___AMinusExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AMinusExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AMinusExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMinusExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AMinusExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMinusExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AMinusExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AMinusExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AMinusExpr_parser___parser_nodes___ANode___init();
@@ -1457,6 +1879,10 @@ typedef void (*parser___parser_prod___AStarshipExpr___init_astarshipexpr_t)(val_
 val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1);
 void parser___parser_prod___AStarshipExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStarshipExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStarshipExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStarshipExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStarshipExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStarshipExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStarshipExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStarshipExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStarshipExpr_parser___parser_nodes___ANode___init();
@@ -1472,6 +1898,10 @@ typedef void (*parser___parser_prod___AStarExpr___init_astarexpr_t)(val_t p0, va
 val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1);
 void parser___parser_prod___AStarExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStarExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStarExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStarExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStarExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStarExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStarExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStarExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStarExpr_parser___parser_nodes___ANode___init();
@@ -1487,6 +1917,10 @@ typedef void (*parser___parser_prod___ASlashExpr___init_aslashexpr_t)(val_t p0,
 val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1);
 void parser___parser_prod___ASlashExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASlashExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASlashExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASlashExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASlashExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASlashExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASlashExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASlashExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASlashExpr_parser___parser_nodes___ANode___init();
@@ -1502,6 +1936,10 @@ typedef void (*parser___parser_prod___APercentExpr___init_apercentexpr_t)(val_t
 val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1);
 void parser___parser_prod___APercentExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___APercentExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___APercentExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APercentExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___APercentExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APercentExpr___n_expr2__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___APercentExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___APercentExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_APercentExpr_parser___parser_nodes___ANode___init();
@@ -1517,6 +1955,10 @@ typedef void (*parser___parser_prod___AUminusExpr___init_auminusexpr_t)(val_t p0
 val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1);
 void parser___parser_prod___AUminusExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AUminusExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AUminusExpr___n_minus__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AUminusExpr___n_minus__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AUminusExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AUminusExpr___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AUminusExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AUminusExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AUminusExpr_parser___parser_nodes___ANode___init();
@@ -1529,6 +1971,14 @@ typedef void (*parser___parser_prod___ANewExpr___init_anewexpr_t)(val_t p0, val_
 val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ANewExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ANewExpr___n_kwnew__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANewExpr___n_kwnew__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANewExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANewExpr___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANewExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANewExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANewExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANewExpr___n_args__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ANewExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ANewExpr_parser___parser_nodes___ANode___init();
@@ -1540,6 +1990,10 @@ typedef void (*parser___parser_prod___AAttrExpr___init_aattrexpr_t)(val_t p0, va
 val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1);
 void parser___parser_prod___AAttrExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAttrExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAttrExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrExpr___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAttrExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAttrExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init();
@@ -1551,6 +2005,14 @@ typedef void (*parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr_t)(
 val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AAttrAssignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAttrAssignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAttrAssignExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrAssignExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrAssignExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrAssignExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrAssignExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrAssignExpr___n_assign__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrAssignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrAssignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAttrAssignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAttrAssignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init();
@@ -1562,6 +2024,14 @@ typedef void (*parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr
 val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AAttrReassignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAttrReassignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAttrReassignExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrReassignExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrReassignExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrReassignExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrReassignExpr___n_assign_op__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrReassignExpr___n_assign_op__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAttrReassignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAttrReassignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAttrReassignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAttrReassignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init();
@@ -1577,6 +2047,12 @@ typedef void (*parser___parser_prod___ACallExpr___init_acallexpr_t)(val_t p0, va
 val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ACallExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ACallExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallExpr___n_args__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ACallExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ACallExpr___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___ACallExpr___visit_all_1_0)(struct stack_frame_t *);
@@ -1593,6 +2069,16 @@ typedef void (*parser___parser_prod___ACallAssignExpr___init_acallassignexpr_t)(
 val_t NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ACallAssignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ACallAssignExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallAssignExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallAssignExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallAssignExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallAssignExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallAssignExpr___n_args__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallAssignExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallAssignExpr___n_assign__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallAssignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallAssignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ACallAssignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ACallAssignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ACallAssignExpr_parser___parser_nodes___ANode___init();
@@ -1606,6 +2092,16 @@ typedef void (*parser___parser_prod___ACallReassignExpr___init_acallreassignexpr
 val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ACallReassignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ACallReassignExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallReassignExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallReassignExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallReassignExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallReassignExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallReassignExpr___n_args__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallReassignExpr___n_assign_op__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallReassignExpr___n_assign_op__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACallReassignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACallReassignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ACallReassignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ACallReassignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ACallReassignExpr_parser___parser_nodes___ANode___init();
@@ -1618,6 +2114,12 @@ typedef void (*parser___parser_prod___ASuperExpr___init_asuperexpr_t)(val_t p0,
 val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASuperExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASuperExpr___n_qualified__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperExpr___n_qualified__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASuperExpr___n_kwsuper__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperExpr___n_kwsuper__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASuperExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperExpr___n_args__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASuperExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init();
@@ -1630,6 +2132,12 @@ typedef void (*parser___parser_prod___AInitExpr___init_ainitexpr_t)(val_t p0, va
 val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AInitExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AInitExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInitExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInitExpr___n_kwinit__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInitExpr___n_kwinit__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInitExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInitExpr___n_args__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AInitExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AInitExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AInitExpr_parser___parser_nodes___ANode___init();
@@ -1646,6 +2154,10 @@ typedef void (*parser___parser_prod___ABraExpr___init_abraexpr_t)(val_t p0, val_
 val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABraExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABraExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraExpr___n_args__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABraExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABraExpr___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___ABraExpr___visit_all_1_0)(struct stack_frame_t *);
@@ -1662,6 +2174,14 @@ typedef void (*parser___parser_prod___ABraAssignExpr___init_abraassignexpr_t)(va
 val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABraAssignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABraAssignExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraAssignExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraAssignExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraAssignExpr___n_args__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraAssignExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraAssignExpr___n_assign__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraAssignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraAssignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABraAssignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABraAssignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABraAssignExpr_parser___parser_nodes___ANode___init();
@@ -1675,6 +2195,14 @@ typedef void (*parser___parser_prod___ABraReassignExpr___init_abrareassignexpr_t
 val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABraReassignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABraReassignExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraReassignExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraReassignExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraReassignExpr___n_args__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraReassignExpr___n_assign_op__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraReassignExpr___n_assign_op__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraReassignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraReassignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABraReassignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABraReassignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABraReassignExpr_parser___parser_nodes___ANode___init();
@@ -1690,6 +2218,10 @@ typedef void (*parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr_t
 val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AClosureCallExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AClosureCallExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureCallExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureCallExpr___n_args__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureCallExpr___n_args__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AClosureCallExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AClosureCallExpr___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AClosureCallExpr___visit_all_1_0)(struct stack_frame_t *);
@@ -1704,6 +2236,8 @@ typedef void (*parser___parser_prod___AVarExpr___init_avarexpr_t)(val_t p0, val_
 val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(val_t p0);
 void parser___parser_prod___AVarExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AVarExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AVarExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarExpr___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AVarExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AVarExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AVarExpr_parser___parser_nodes___ANode___init();
@@ -1715,6 +2249,12 @@ typedef void (*parser___parser_prod___AVarAssignExpr___init_avarassignexpr_t)(va
 val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AVarAssignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AVarAssignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AVarAssignExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarAssignExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVarAssignExpr___n_assign__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarAssignExpr___n_assign__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVarAssignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarAssignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AVarAssignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AVarAssignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init();
@@ -1726,6 +2266,12 @@ typedef void (*parser___parser_prod___AVarReassignExpr___init_avarreassignexpr_t
 val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AVarReassignExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AVarReassignExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AVarReassignExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarReassignExpr___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVarReassignExpr___n_assign_op__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarReassignExpr___n_assign_op__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AVarReassignExpr___n_value__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AVarReassignExpr___n_value__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AVarReassignExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AVarReassignExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init();
@@ -1737,6 +2283,12 @@ typedef void (*parser___parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0,
 val_t NEW_ARangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ARangeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ARangeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ARangeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ARangeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ARangeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ARangeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ARangeExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ARangeExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ARangeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ARangeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ARangeExpr_parser___parser_nodes___ANode___init();
@@ -1749,6 +2301,16 @@ typedef void (*parser___parser_prod___ACrangeExpr___init_acrangeexpr_t)(val_t p0
 val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___ACrangeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ACrangeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ACrangeExpr___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACrangeExpr___n_obra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACrangeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACrangeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACrangeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACrangeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACrangeExpr___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACrangeExpr___n_cbra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACrangeExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACrangeExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ACrangeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ACrangeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ACrangeExpr_parser___parser_nodes___ANode___init();
@@ -1762,6 +2324,16 @@ typedef void (*parser___parser_prod___AOrangeExpr___init_aorangeexpr_t)(val_t p0
 val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___AOrangeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AOrangeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AOrangeExpr___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrangeExpr___n_obra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOrangeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrangeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOrangeExpr___n_expr2__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrangeExpr___n_expr2__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOrangeExpr___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrangeExpr___n_cbra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AOrangeExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AOrangeExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AOrangeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AOrangeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AOrangeExpr_parser___parser_nodes___ANode___init();
@@ -1774,6 +2346,10 @@ typedef void (*parser___parser_prod___AArrayExpr___init_aarrayexpr_t)(val_t p0,
 val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p0, val_t p1);
 void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AArrayExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AArrayExpr___n_exprs__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AArrayExpr___n_exprs__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AArrayExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AArrayExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AArrayExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AArrayExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init();
@@ -1785,6 +2361,10 @@ typedef void (*parser___parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0, va
 val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1);
 void parser___parser_prod___ASelfExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASelfExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASelfExpr___n_kwself__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASelfExpr___n_kwself__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ASelfExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASelfExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASelfExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASelfExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init();
@@ -1809,6 +2389,10 @@ typedef void (*parser___parser_prod___ATrueExpr___init_atrueexpr_t)(val_t p0, va
 val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1);
 void parser___parser_prod___ATrueExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ATrueExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ATrueExpr___n_kwtrue__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATrueExpr___n_kwtrue__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ATrueExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATrueExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ATrueExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ATrueExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init();
@@ -1820,6 +2404,10 @@ typedef void (*parser___parser_prod___AFalseExpr___init_afalseexpr_t)(val_t p0,
 val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1);
 void parser___parser_prod___AFalseExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AFalseExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AFalseExpr___n_kwfalse__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFalseExpr___n_kwfalse__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AFalseExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFalseExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AFalseExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AFalseExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init();
@@ -1831,6 +2419,10 @@ typedef void (*parser___parser_prod___ANullExpr___init_anullexpr_t)(val_t p0, va
 val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1);
 void parser___parser_prod___ANullExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ANullExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ANullExpr___n_kwnull__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANullExpr___n_kwnull__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ANullExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ANullExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ANullExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ANullExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ANullExpr_parser___parser_nodes___ANode___init();
@@ -1842,6 +2434,10 @@ typedef void (*parser___parser_prod___AIntExpr___init_aintexpr_t)(val_t p0, val_
 val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1);
 void parser___parser_prod___AIntExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIntExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIntExpr___n_number__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIntExpr___n_number__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIntExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIntExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIntExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIntExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIntExpr_parser___parser_nodes___ANode___init();
@@ -1853,6 +2449,10 @@ typedef void (*parser___parser_prod___AFloatExpr___init_afloatexpr_t)(val_t p0,
 val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1);
 void parser___parser_prod___AFloatExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AFloatExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AFloatExpr___n_float__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFloatExpr___n_float__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AFloatExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFloatExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AFloatExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AFloatExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init();
@@ -1864,6 +2464,10 @@ typedef void (*parser___parser_prod___ACharExpr___init_acharexpr_t)(val_t p0, va
 val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1);
 void parser___parser_prod___ACharExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ACharExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ACharExpr___n_char__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACharExpr___n_char__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACharExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACharExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ACharExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ACharExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ACharExpr_parser___parser_nodes___ANode___init();
@@ -1875,6 +2479,10 @@ typedef void (*parser___parser_prod___AStringExpr___init_astringexpr_t)(val_t p0
 val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1);
 void parser___parser_prod___AStringExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStringExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStringExpr___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStringExpr___n_string__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AStringExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStringExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStringExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStringExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStringExpr_parser___parser_nodes___ANode___init();
@@ -1886,6 +2494,8 @@ typedef void (*parser___parser_prod___AStartStringExpr___init_astartstringexpr_t
 val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0);
 void parser___parser_prod___AStartStringExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AStartStringExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AStartStringExpr___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AStartStringExpr___n_string__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AStartStringExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AStartStringExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init();
@@ -1897,6 +2507,8 @@ typedef void (*parser___parser_prod___AMidStringExpr___init_amidstringexpr_t)(va
 val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0);
 void parser___parser_prod___AMidStringExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AMidStringExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AMidStringExpr___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMidStringExpr___n_string__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AMidStringExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AMidStringExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init();
@@ -1908,6 +2520,8 @@ typedef void (*parser___parser_prod___AEndStringExpr___init_aendstringexpr_t)(va
 val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0);
 void parser___parser_prod___AEndStringExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AEndStringExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AEndStringExpr___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AEndStringExpr___n_string__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AEndStringExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AEndStringExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init();
@@ -1922,6 +2536,8 @@ typedef void (*parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_t
 val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, val_t p1);
 void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASuperstringExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASuperstringExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperstringExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASuperstringExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASuperstringExpr___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___ASuperstringExpr___visit_all_1_0)(struct stack_frame_t *);
@@ -1936,6 +2552,14 @@ typedef void (*parser___parser_prod___AParExpr___init_aparexpr_t)(val_t p0, val_
 val_t NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AParExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AParExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AParExpr___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParExpr___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParExpr___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParExpr___n_cpar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParExpr___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParExpr___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AParExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AParExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AParExpr_parser___parser_nodes___ANode___init();
@@ -1947,6 +2571,16 @@ typedef void (*parser___parser_prod___AAsCastExpr___init_aascastexpr_t)(val_t p0
 val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___AAsCastExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAsCastExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAsCastExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsCastExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsCastExpr___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsCastExpr___n_kwas__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsCastExpr___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsCastExpr___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsCastExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsCastExpr___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsCastExpr___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsCastExpr___n_cpar__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAsCastExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAsCastExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init();
@@ -1958,6 +2592,18 @@ typedef void (*parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr_t)(va
 val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
 void parser___parser_prod___AAsNotnullExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAsNotnullExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAsNotnullExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotnullExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotnullExpr___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotnullExpr___n_kwas__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotnullExpr___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotnullExpr___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotnullExpr___n_kwnot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotnullExpr___n_kwnot__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotnullExpr___n_kwnull__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotnullExpr___n_kwnull__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotnullExpr___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotnullExpr___n_cpar__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAsNotnullExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAsNotnullExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init();
@@ -1969,6 +2615,12 @@ typedef void (*parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr_t)(va
 val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AIssetAttrExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIssetAttrExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIssetAttrExpr___n_kwisset__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIssetAttrExpr___n_kwisset__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIssetAttrExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIssetAttrExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AIssetAttrExpr___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIssetAttrExpr___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIssetAttrExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIssetAttrExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init();
@@ -1980,6 +2632,14 @@ typedef void (*parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr_t)(va
 val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___ADebugTypeExpr___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ADebugTypeExpr___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ADebugTypeExpr___n_kwdebug__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADebugTypeExpr___n_kwdebug__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADebugTypeExpr___n_kwtype__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADebugTypeExpr___n_kwtype__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADebugTypeExpr___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADebugTypeExpr___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ADebugTypeExpr___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ADebugTypeExpr___n_type__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ADebugTypeExpr___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ADebugTypeExpr___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init();
@@ -2011,6 +2671,10 @@ typedef void (*parser___parser_prod___AParExprs___init_aparexprs_t)(val_t p0, va
 val_t NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AParExprs___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AParExprs___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AParExprs___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParExprs___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AParExprs___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AParExprs___n_cpar__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AParExprs___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AParExprs___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AParExprs___visit_all_1_0)(struct stack_frame_t *);
@@ -2028,6 +2692,10 @@ typedef void (*parser___parser_prod___ABraExprs___init_abraexprs_t)(val_t p0, va
 val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ABraExprs___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABraExprs___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABraExprs___n_obra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraExprs___n_obra__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ABraExprs___n_cbra__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABraExprs___n_cbra__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABraExprs___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABraExprs___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___ABraExprs___visit_all_1_0)(struct stack_frame_t *);
@@ -2042,6 +2710,8 @@ typedef void (*parser___parser_prod___APlusAssignOp___init_aplusassignop_t)(val_
 val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop(val_t p0);
 void parser___parser_prod___APlusAssignOp___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___APlusAssignOp___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___APlusAssignOp___n_pluseq__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___APlusAssignOp___n_pluseq__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___APlusAssignOp___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___APlusAssignOp___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init();
@@ -2053,6 +2723,8 @@ typedef void (*parser___parser_prod___AMinusAssignOp___init_aminusassignop_t)(va
 val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0);
 void parser___parser_prod___AMinusAssignOp___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AMinusAssignOp___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AMinusAssignOp___n_minuseq__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AMinusAssignOp___n_minuseq__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AMinusAssignOp___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AMinusAssignOp___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init();
@@ -2067,6 +2739,16 @@ typedef void (*parser___parser_prod___AClosureDef___init_aclosuredef_t)(val_t p0
 val_t NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
 void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AClosureDef___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AClosureDef___n_bang__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDef___n_bang__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDef___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDef___n_id__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDef___n_kwdo__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDef___n_kwdo__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDef___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDef___n_expr__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AClosureDef___n_label__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AClosureDef___n_label__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AClosureDef___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AClosureDef___visit_all_1_0)(struct stack_frame_t *);
@@ -2081,6 +2763,8 @@ typedef void (*parser___parser_prod___ASimpleClosureId___init_asimpleclosureid_t
 val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0);
 void parser___parser_prod___ASimpleClosureId___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASimpleClosureId___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASimpleClosureId___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASimpleClosureId___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASimpleClosureId___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASimpleClosureId___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init();
@@ -2092,6 +2776,8 @@ typedef void (*parser___parser_prod___ABreakClosureId___init_abreakclosureid_t)(
 val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0);
 void parser___parser_prod___ABreakClosureId___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ABreakClosureId___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ABreakClosureId___n_kwbreak__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ABreakClosureId___n_kwbreak__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ABreakClosureId___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ABreakClosureId___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init();
@@ -2106,6 +2792,10 @@ typedef void (*parser___parser_prod___AModuleName___init_amodulename_t)(val_t p0
 val_t NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AModuleName___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AModuleName___n_quad__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModuleName___n_quad__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AModuleName___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AModuleName___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AModuleName___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AModuleName___visit_all_1_0)(struct stack_frame_t *);
@@ -2123,6 +2813,8 @@ typedef void (*parser___parser_prod___AExternCalls___init_aexterncalls_t)(val_t
 val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1);
 void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AExternCalls___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AExternCalls___n_kwimport__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternCalls___n_kwimport__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AExternCalls___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AExternCalls___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AExternCalls___visit_all_1_0)(struct stack_frame_t *);
@@ -2149,6 +2841,8 @@ typedef void (*parser___parser_prod___ASuperExternCall___init_asuperexterncall_t
 val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(val_t p0);
 void parser___parser_prod___ASuperExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ASuperExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ASuperExternCall___n_kwsuper__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ASuperExternCall___n_kwsuper__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ASuperExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ASuperExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ASuperExternCall_parser___parser_nodes___ANode___init();
@@ -2162,6 +2856,8 @@ typedef void (*parser___parser_prod___ALocalPropExternCall___init_alocalpropexte
 val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val_t p0);
 void parser___parser_prod___ALocalPropExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ALocalPropExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ALocalPropExternCall___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ALocalPropExternCall___n_methid__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ALocalPropExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ALocalPropExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init();
@@ -2175,6 +2871,12 @@ typedef void (*parser___parser_prod___AFullPropExternCall___init_afullpropextern
 val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AFullPropExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AFullPropExternCall___n_classid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFullPropExternCall___n_classid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AFullPropExternCall___n_quad__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFullPropExternCall___n_quad__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AFullPropExternCall___n_methid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AFullPropExternCall___n_methid__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AFullPropExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AFullPropExternCall_parser___parser_nodes___ANode___init();
@@ -2188,6 +2890,8 @@ typedef void (*parser___parser_prod___AInitPropExternCall___init_ainitpropextern
 val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(val_t p0);
 void parser___parser_prod___AInitPropExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AInitPropExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AInitPropExternCall___n_classid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInitPropExternCall___n_classid__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AInitPropExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AInitPropExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AInitPropExternCall_parser___parser_nodes___ANode___init();
@@ -2201,6 +2905,12 @@ typedef void (*parser___parser_prod___ACastAsExternCall___init_acastasexterncall
 val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___ACastAsExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ACastAsExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ACastAsExternCall___n_from_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACastAsExternCall___n_from_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACastAsExternCall___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACastAsExternCall___n_kwas__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___ACastAsExternCall___n_to_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ACastAsExternCall___n_to_type__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ACastAsExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ACastAsExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init();
@@ -2214,6 +2924,12 @@ typedef void (*parser___parser_prod___AAsNullableExternCall___init_aasnullableex
 val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(val_t p0, val_t p1, val_t p2);
 void parser___parser_prod___AAsNullableExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAsNullableExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAsNullableExternCall___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNullableExternCall___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNullableExternCall___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNullableExternCall___n_kwas__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNullableExternCall___n_kwnullable__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAsNullableExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAsNullableExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init();
@@ -2227,6 +2943,14 @@ typedef void (*parser___parser_prod___AAsNotNullableExternCall___init_aasnotnull
 val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AAsNotNullableExternCall___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAsNotNullableExternCall___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAsNotNullableExternCall___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotNullableExternCall___n_type__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotNullableExternCall___n_kwas__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotNullableExternCall___n_kwas__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotNullableExternCall___n_kwnot__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotNullableExternCall___n_kwnot__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAsNotNullableExternCall___n_kwnullable__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAsNotNullableExternCall___n_kwnullable__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAsNotNullableExternCall___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAsNotNullableExternCall___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init();
@@ -2239,6 +2963,10 @@ typedef void (*parser___parser_prod___AInLanguage___init_ainlanguage_t)(val_t p0
 val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(val_t p0, val_t p1);
 void parser___parser_prod___AInLanguage___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AInLanguage___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AInLanguage___n_kwin__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInLanguage___n_kwin__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AInLanguage___n_string__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AInLanguage___n_string__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AInLanguage___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AInLanguage___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AInLanguage_parser___parser_nodes___ANode___init();
@@ -2250,6 +2978,10 @@ typedef void (*parser___parser_prod___AExternCodeBlock___init_aexterncodeblock_t
 val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(val_t p0, val_t p1);
 void parser___parser_prod___AExternCodeBlock___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AExternCodeBlock___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AExternCodeBlock___n_in_language__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternCodeBlock___n_in_language__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AExternCodeBlock___n_extern_code_segment__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExternCodeBlock___n_extern_code_segment__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AExternCodeBlock___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AExternCodeBlock___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AExternCodeBlock_parser___parser_nodes___ANode___init();
@@ -2264,6 +2996,8 @@ typedef void (*parser___parser_prod___AQualified___init_aqualified_t)(val_t p0,
 val_t NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1);
 void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AQualified___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AQualified___n_classid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AQualified___n_classid__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AQualified___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AQualified___visit_all_1_0)(struct stack_frame_t *);
@@ -2298,6 +3032,12 @@ typedef void (*parser___parser_prod___AAnnotations___init_aannotations_t)(val_t
 val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1, val_t p2, val_t p3);
 void parser___parser_prod___AAnnotations___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAnnotations___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAnnotations___n_at__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotations___n_at__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAnnotations___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotations___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAnnotations___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotations___n_cpar__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAnnotations___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAnnotations___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AAnnotations___visit_all_1_0)(struct stack_frame_t *);
@@ -2315,6 +3055,14 @@ typedef void (*parser___parser_prod___AAnnotation___init_aannotation_t)(val_t p0
 val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void parser___parser_prod___AAnnotation___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAnnotation___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAnnotation___n_atid__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotation___n_atid__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAnnotation___n_opar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotation___n_opar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAnnotation___n_cpar__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotation___n_cpar__eq_t)(val_t p0, val_t p1);
+void parser___parser_prod___AAnnotation___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAnnotation___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAnnotation___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAnnotation___visit_all_t)(val_t p0, val_t p1);
   typedef void (*CLOS_OC_parser___parser_prod___AAnnotation___visit_all_1_0)(struct stack_frame_t *);
@@ -2329,6 +3077,8 @@ typedef void (*parser___parser_prod___ATypeAtArg___init_atypeatarg_t)(val_t p0,
 val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(val_t p0);
 void parser___parser_prod___ATypeAtArg___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___ATypeAtArg___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___ATypeAtArg___n_type__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___ATypeAtArg___n_type__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___ATypeAtArg___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___ATypeAtArg___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_ATypeAtArg_parser___parser_nodes___ANode___init();
@@ -2340,6 +3090,8 @@ typedef void (*parser___parser_prod___AExprAtArg___init_aexpratarg_t)(val_t p0,
 val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(val_t p0);
 void parser___parser_prod___AExprAtArg___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AExprAtArg___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AExprAtArg___n_expr__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AExprAtArg___n_expr__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AExprAtArg___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AExprAtArg___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AExprAtArg_parser___parser_nodes___ANode___init();
@@ -2351,6 +3103,8 @@ typedef void (*parser___parser_prod___AAtAtArg___init_aatatarg_t)(val_t p0, val_
 val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(val_t p0);
 void parser___parser_prod___AAtAtArg___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AAtAtArg___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AAtAtArg___n_annotations__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AAtAtArg___n_annotations__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AAtAtArg___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AAtAtArg___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AAtAtArg_parser___parser_nodes___ANode___init();
@@ -2362,6 +3116,8 @@ typedef void (*parser___parser_prod___AIdAtid___init_aidatid_t)(val_t p0, val_t
 val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(val_t p0);
 void parser___parser_prod___AIdAtid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AIdAtid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AIdAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AIdAtid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AIdAtid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AIdAtid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AIdAtid_parser___parser_nodes___ANode___init();
@@ -2373,6 +3129,8 @@ typedef void (*parser___parser_prod___AKwexternAtid___init_akwexternatid_t)(val_
 val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid(val_t p0);
 void parser___parser_prod___AKwexternAtid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AKwexternAtid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AKwexternAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AKwexternAtid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AKwexternAtid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AKwexternAtid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AKwexternAtid_parser___parser_nodes___ANode___init();
@@ -2384,6 +3142,8 @@ typedef void (*parser___parser_prod___AKwinternAtid___init_akwinternatid_t)(val_
 val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid(val_t p0);
 void parser___parser_prod___AKwinternAtid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AKwinternAtid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AKwinternAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AKwinternAtid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AKwinternAtid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AKwinternAtid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AKwinternAtid_parser___parser_nodes___ANode___init();
@@ -2395,6 +3155,8 @@ typedef void (*parser___parser_prod___AKwreadableAtid___init_akwreadableatid_t)(
 val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(val_t p0);
 void parser___parser_prod___AKwreadableAtid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AKwreadableAtid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AKwreadableAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AKwreadableAtid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AKwreadableAtid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AKwreadableAtid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AKwreadableAtid_parser___parser_nodes___ANode___init();
@@ -2406,6 +3168,8 @@ typedef void (*parser___parser_prod___AKwwritableAtid___init_akwwritableatid_t)(
 val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(val_t p0);
 void parser___parser_prod___AKwwritableAtid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AKwwritableAtid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AKwwritableAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AKwwritableAtid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AKwwritableAtid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AKwwritableAtid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AKwwritableAtid_parser___parser_nodes___ANode___init();
@@ -2417,6 +3181,8 @@ typedef void (*parser___parser_prod___AKwimportAtid___init_akwimportatid_t)(val_
 val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid(val_t p0);
 void parser___parser_prod___AKwimportAtid___replace_child(val_t p0, val_t p1, val_t p2);
 typedef void (*parser___parser_prod___AKwimportAtid___replace_child_t)(val_t p0, val_t p1, val_t p2);
+void parser___parser_prod___AKwimportAtid___n_id__eq(val_t p0, val_t p1);
+typedef void (*parser___parser_prod___AKwimportAtid___n_id__eq_t)(val_t p0, val_t p1);
 void parser___parser_prod___AKwimportAtid___visit_all(val_t p0, val_t p1);
 typedef void (*parser___parser_prod___AKwimportAtid___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AKwimportAtid_parser___parser_nodes___ANode___init();
index 3981125..d29e987 100644 (file)
@@ -48,7 +48,7 @@ val_t primitive_info___MMLocalClass___primitive_info(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:198 */
+    /* ../lib/standard/kernel.nit:199 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* primitive_info.nit:38 */
     REGB2 = REGB1;
@@ -193,7 +193,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Int");
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -202,7 +202,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("Char");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -211,7 +211,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("Bool");
     REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -220,7 +220,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("Float");
     REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -229,7 +229,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("NativeString");
     REGB0 = TAG_Int(12);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -238,7 +238,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString("Pointer");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -265,7 +265,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("bigint");
     REGB0 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_7 = fra.me.REG[4];
     register_static_object(&once_value_7);
   } else fra.me.REG[4] = once_value_7;
@@ -274,7 +274,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_8) {
     fra.me.REG[4] = BOX_NativeString("char");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_8 = fra.me.REG[4];
     register_static_object(&once_value_8);
   } else fra.me.REG[4] = once_value_8;
@@ -283,7 +283,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_9) {
     fra.me.REG[4] = BOX_NativeString("int");
     REGB0 = TAG_Int(3);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_9 = fra.me.REG[4];
     register_static_object(&once_value_9);
   } else fra.me.REG[4] = once_value_9;
@@ -292,7 +292,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_10) {
     fra.me.REG[4] = BOX_NativeString("float");
     REGB0 = TAG_Int(5);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_10 = fra.me.REG[4];
     register_static_object(&once_value_10);
   } else fra.me.REG[4] = once_value_10;
@@ -301,7 +301,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_11) {
     fra.me.REG[4] = BOX_NativeString("char *");
     REGB0 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_11 = fra.me.REG[4];
     register_static_object(&once_value_11);
   } else fra.me.REG[4] = once_value_11;
@@ -310,7 +310,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   if (!once_value_12) {
     fra.me.REG[4] = BOX_NativeString("void *");
     REGB0 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_12 = fra.me.REG[4];
     register_static_object(&once_value_12);
   } else fra.me.REG[4] = once_value_12;
@@ -325,37 +325,37 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* primitive_info.nit:76 */
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[4] = fra.me.REG[1];
       REGB3 = REGB2;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -363,26 +363,26 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label13;
       label13: while(0);
       /* primitive_info.nit:77 */
@@ -391,24 +391,24 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
         nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 77);
       }
       fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[5] = fra.me.REG[2];
       REGB3 = REGB2;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -416,45 +416,45 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
       REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label14;
       label14: while(0);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[6] = fra.me.REG[3];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -462,40 +462,40 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
       REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label15;
       label15: while(0);
       /* primitive_info.nit:78 */
       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:79 */
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[6]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label16;
     }
   }
@@ -647,7 +647,7 @@ val_t primitive_info___MMType___cname(val_t p0){
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString("val_t");
       REGB0 = TAG_Int(5);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_1 = fra.me.REG[1];
       register_static_object(&once_value_1);
     } else fra.me.REG[1] = once_value_1;
@@ -778,7 +778,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("TAG_");
       REGB0 = TAG_Int(4);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -791,7 +791,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("((");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -806,7 +806,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     if (!once_value_3) {
       fra.me.REG[1] = BOX_NativeString(")0)");
       REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_3 = fra.me.REG[1];
       register_static_object(&once_value_3);
     } else fra.me.REG[1] = once_value_3;
@@ -819,7 +819,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     if (!once_value_5) {
       fra.me.REG[1] = BOX_NativeString("NIT_NULL");
       REGB0 = TAG_Int(8);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_5 = fra.me.REG[1];
       register_static_object(&once_value_5);
     } else fra.me.REG[1] = once_value_5;
@@ -897,7 +897,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString("TAG_");
         REGB0 = TAG_Int(4);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -910,7 +910,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
@@ -920,7 +920,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString(")");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -936,7 +936,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       if (!once_value_5) {
         fra.me.REG[4] = BOX_NativeString("BOX_");
         REGB0 = TAG_Int(4);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_5 = fra.me.REG[4];
         register_static_object(&once_value_5);
       } else fra.me.REG[4] = once_value_5;
@@ -949,7 +949,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       if (!once_value_6) {
         fra.me.REG[0] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
       } else fra.me.REG[0] = once_value_6;
@@ -959,7 +959,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       if (!once_value_7) {
         fra.me.REG[1] = BOX_NativeString(")");
         REGB0 = TAG_Int(1);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_7 = fra.me.REG[1];
         register_static_object(&once_value_7);
       } else fra.me.REG[1] = once_value_7;
@@ -1040,7 +1040,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString("UNTAG_");
         REGB0 = TAG_Int(6);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -1053,7 +1053,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
@@ -1063,7 +1063,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString(")");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -1079,7 +1079,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       if (!once_value_5) {
         fra.me.REG[4] = BOX_NativeString("UNBOX_");
         REGB0 = TAG_Int(6);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_5 = fra.me.REG[4];
         register_static_object(&once_value_5);
       } else fra.me.REG[4] = once_value_5;
@@ -1092,7 +1092,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       if (!once_value_6) {
         fra.me.REG[0] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
       } else fra.me.REG[0] = once_value_6;
@@ -1102,7 +1102,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       if (!once_value_7) {
         fra.me.REG[1] = BOX_NativeString(")");
         REGB0 = TAG_Int(1);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_7 = fra.me.REG[1];
         register_static_object(&once_value_7);
       } else fra.me.REG[1] = once_value_7;
@@ -1141,7 +1141,7 @@ val_t primitive_info___MMMethod___default_extern_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -1153,7 +1153,7 @@ val_t primitive_info___MMMethod___default_extern_name(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("___impl");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -1243,7 +1243,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("+");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -1259,7 +1259,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[3] = BOX_NativeString("_plus");
         REGB0 = TAG_Int(5);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
       } else fra.me.REG[3] = once_value_2;
@@ -1269,7 +1269,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("-");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
@@ -1285,7 +1285,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[4] = BOX_NativeString("_minus");
           REGB0 = TAG_Int(6);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_4 = fra.me.REG[4];
           register_static_object(&once_value_4);
         } else fra.me.REG[4] = once_value_4;
@@ -1296,7 +1296,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[4] = BOX_NativeString("*");
           REGB0 = TAG_Int(1);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
         } else fra.me.REG[4] = once_value_5;
@@ -1312,7 +1312,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
           if (!once_value_6) {
             fra.me.REG[4] = BOX_NativeString("_star");
             REGB0 = TAG_Int(5);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
             once_value_6 = fra.me.REG[4];
             register_static_object(&once_value_6);
           } else fra.me.REG[4] = once_value_6;
@@ -1323,7 +1323,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
           if (!once_value_7) {
             fra.me.REG[4] = BOX_NativeString("/");
             REGB0 = TAG_Int(1);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
             once_value_7 = fra.me.REG[4];
             register_static_object(&once_value_7);
           } else fra.me.REG[4] = once_value_7;
@@ -1339,7 +1339,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
             if (!once_value_8) {
               fra.me.REG[4] = BOX_NativeString("_slash");
               REGB0 = TAG_Int(6);
-              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+              fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
               once_value_8 = fra.me.REG[4];
               register_static_object(&once_value_8);
             } else fra.me.REG[4] = once_value_8;
@@ -1350,7 +1350,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
             if (!once_value_9) {
               fra.me.REG[4] = BOX_NativeString("%");
               REGB0 = TAG_Int(1);
-              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+              fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
               once_value_9 = fra.me.REG[4];
               register_static_object(&once_value_9);
             } else fra.me.REG[4] = once_value_9;
@@ -1366,7 +1366,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
               if (!once_value_10) {
                fra.me.REG[4] = BOX_NativeString("_percent");
                REGB0 = TAG_Int(8);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_10 = fra.me.REG[4];
                register_static_object(&once_value_10);
               } else fra.me.REG[4] = once_value_10;
@@ -1377,7 +1377,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
               if (!once_value_11) {
                fra.me.REG[4] = BOX_NativeString("[]");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_11 = fra.me.REG[4];
                register_static_object(&once_value_11);
               } else fra.me.REG[4] = once_value_11;
@@ -1393,7 +1393,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_12) {
                fra.me.REG[4] = BOX_NativeString("_index");
                REGB0 = TAG_Int(6);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_12 = fra.me.REG[4];
                register_static_object(&once_value_12);
                } else fra.me.REG[4] = once_value_12;
@@ -1404,7 +1404,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_13) {
                fra.me.REG[4] = BOX_NativeString("[]=");
                REGB0 = TAG_Int(3);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_13 = fra.me.REG[4];
                register_static_object(&once_value_13);
                } else fra.me.REG[4] = once_value_13;
@@ -1420,7 +1420,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_14) {
                fra.me.REG[4] = BOX_NativeString("_index_assign");
                REGB0 = TAG_Int(13);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_14 = fra.me.REG[4];
                register_static_object(&once_value_14);
                } else fra.me.REG[4] = once_value_14;
@@ -1431,7 +1431,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_15) {
                fra.me.REG[4] = BOX_NativeString("==");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_15 = fra.me.REG[4];
                register_static_object(&once_value_15);
                } else fra.me.REG[4] = once_value_15;
@@ -1447,7 +1447,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_16) {
                fra.me.REG[4] = BOX_NativeString("_equal");
                REGB0 = TAG_Int(6);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_16 = fra.me.REG[4];
                register_static_object(&once_value_16);
                } else fra.me.REG[4] = once_value_16;
@@ -1458,7 +1458,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_17) {
                fra.me.REG[4] = BOX_NativeString("<");
                REGB0 = TAG_Int(1);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_17 = fra.me.REG[4];
                register_static_object(&once_value_17);
                } else fra.me.REG[4] = once_value_17;
@@ -1474,7 +1474,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_18) {
                fra.me.REG[4] = BOX_NativeString("_less");
                REGB0 = TAG_Int(5);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_18 = fra.me.REG[4];
                register_static_object(&once_value_18);
                } else fra.me.REG[4] = once_value_18;
@@ -1485,7 +1485,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_19) {
                fra.me.REG[4] = BOX_NativeString(">");
                REGB0 = TAG_Int(1);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_19 = fra.me.REG[4];
                register_static_object(&once_value_19);
                } else fra.me.REG[4] = once_value_19;
@@ -1501,7 +1501,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_20) {
                fra.me.REG[4] = BOX_NativeString("_greater");
                REGB0 = TAG_Int(8);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_20 = fra.me.REG[4];
                register_static_object(&once_value_20);
                } else fra.me.REG[4] = once_value_20;
@@ -1512,7 +1512,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_21) {
                fra.me.REG[4] = BOX_NativeString("<=");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_21 = fra.me.REG[4];
                register_static_object(&once_value_21);
                } else fra.me.REG[4] = once_value_21;
@@ -1528,7 +1528,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_22) {
                fra.me.REG[4] = BOX_NativeString("_less_or_equal");
                REGB0 = TAG_Int(14);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_22 = fra.me.REG[4];
                register_static_object(&once_value_22);
                } else fra.me.REG[4] = once_value_22;
@@ -1539,7 +1539,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_23) {
                fra.me.REG[4] = BOX_NativeString(">=");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_23 = fra.me.REG[4];
                register_static_object(&once_value_23);
                } else fra.me.REG[4] = once_value_23;
@@ -1555,7 +1555,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_24) {
                fra.me.REG[4] = BOX_NativeString("_ge");
                REGB0 = TAG_Int(3);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_24 = fra.me.REG[4];
                register_static_object(&once_value_24);
                } else fra.me.REG[4] = once_value_24;
@@ -1566,7 +1566,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_25) {
                fra.me.REG[4] = BOX_NativeString("!=");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_25 = fra.me.REG[4];
                register_static_object(&once_value_25);
                } else fra.me.REG[4] = once_value_25;
@@ -1582,7 +1582,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_26) {
                fra.me.REG[4] = BOX_NativeString("_not_equal");
                REGB0 = TAG_Int(10);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_26 = fra.me.REG[4];
                register_static_object(&once_value_26);
                } else fra.me.REG[4] = once_value_26;
@@ -1593,7 +1593,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_27) {
                fra.me.REG[4] = BOX_NativeString(">>");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_27 = fra.me.REG[4];
                register_static_object(&once_value_27);
                } else fra.me.REG[4] = once_value_27;
@@ -1609,7 +1609,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_28) {
                fra.me.REG[4] = BOX_NativeString("_right");
                REGB0 = TAG_Int(6);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_28 = fra.me.REG[4];
                register_static_object(&once_value_28);
                } else fra.me.REG[4] = once_value_28;
@@ -1620,7 +1620,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_29) {
                fra.me.REG[4] = BOX_NativeString("<<");
                REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_29 = fra.me.REG[4];
                register_static_object(&once_value_29);
                } else fra.me.REG[4] = once_value_29;
@@ -1636,7 +1636,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_30) {
                fra.me.REG[4] = BOX_NativeString("_left");
                REGB0 = TAG_Int(5);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_30 = fra.me.REG[4];
                register_static_object(&once_value_30);
                } else fra.me.REG[4] = once_value_30;
@@ -1647,7 +1647,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_31) {
                fra.me.REG[4] = BOX_NativeString("<=>");
                REGB0 = TAG_Int(3);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_31 = fra.me.REG[4];
                register_static_object(&once_value_31);
                } else fra.me.REG[4] = once_value_31;
@@ -1663,7 +1663,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_32) {
                fra.me.REG[4] = BOX_NativeString("_starship");
                REGB0 = TAG_Int(9);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+               fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
                once_value_32 = fra.me.REG[4];
                register_static_object(&once_value_32);
                } else fra.me.REG[4] = once_value_32;
@@ -1679,7 +1679,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                /* primitive_info.nit:210 */
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:240 */
+               /* ../lib/standard/kernel.nit:247 */
                REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
                /* primitive_info.nit:210 */
                REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB1);
@@ -1687,7 +1687,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
                if (UNTAG_Bool(REGB2)) {
                } else {
-               /* ../lib/standard/kernel.nit:381 */
+               /* ../lib/standard/kernel.nit:434 */
                REGB0 = TAG_Bool((REGB1)==(REGB0));
                /* primitive_info.nit:210 */
                REGB2 = REGB0;
@@ -1699,7 +1699,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_33) {
                fra.me.REG[5] = BOX_NativeString("");
                REGB2 = TAG_Int(0);
-               fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+               fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
                once_value_33 = fra.me.REG[5];
                register_static_object(&once_value_33);
                } else fra.me.REG[5] = once_value_33;
@@ -1715,7 +1715,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                /* primitive_info.nit:211 */
                REGB1 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:240 */
+               /* ../lib/standard/kernel.nit:247 */
                REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
                /* primitive_info.nit:211 */
                fra.me.REG[5] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB1);
@@ -1723,7 +1723,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
                if (!once_value_34) {
                fra.me.REG[5] = BOX_NativeString("__assign");
                REGB1 = TAG_Int(8);
-               fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+               fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
                once_value_34 = fra.me.REG[5];
                register_static_object(&once_value_34);
                } else fra.me.REG[5] = once_value_34;
@@ -1757,7 +1757,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
     if (!once_value_35) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_35 = fra.me.REG[4];
       register_static_object(&once_value_35);
     } else fra.me.REG[4] = once_value_35;
@@ -1769,7 +1769,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
     if (!once_value_36) {
       fra.me.REG[4] = BOX_NativeString("_");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_36 = fra.me.REG[4];
       register_static_object(&once_value_36);
     } else fra.me.REG[4] = once_value_36;
@@ -1779,7 +1779,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
     if (!once_value_37) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_37 = fra.me.REG[3];
       register_static_object(&once_value_37);
     } else fra.me.REG[3] = once_value_37;
@@ -1794,7 +1794,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_40) {
         fra.me.REG[4] = BOX_NativeString("init");
         REGB1 = TAG_Int(4);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_40 = fra.me.REG[4];
         register_static_object(&once_value_40);
       } else fra.me.REG[4] = once_value_40;
@@ -1817,7 +1817,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_41) {
         fra.me.REG[3] = BOX_NativeString("new_");
         REGB1 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_41 = fra.me.REG[3];
         register_static_object(&once_value_41);
       } else fra.me.REG[3] = once_value_41;
@@ -1829,7 +1829,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_42) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_42 = fra.me.REG[3];
         register_static_object(&once_value_42);
       } else fra.me.REG[3] = once_value_42;
@@ -1845,7 +1845,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_43) {
         fra.me.REG[3] = BOX_NativeString("new_");
         REGB1 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
         once_value_43 = fra.me.REG[3];
         register_static_object(&once_value_43);
       } else fra.me.REG[3] = once_value_43;
@@ -1857,7 +1857,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_44) {
         fra.me.REG[1] = BOX_NativeString("_");
         REGB1 = TAG_Int(1);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
         once_value_44 = fra.me.REG[1];
         register_static_object(&once_value_44);
       } else fra.me.REG[1] = once_value_44;
@@ -1869,7 +1869,7 @@ val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
       if (!once_value_45) {
         fra.me.REG[0] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
         once_value_45 = fra.me.REG[0];
         register_static_object(&once_value_45);
       } else fra.me.REG[0] = once_value_45;
index 331bc58..89427a6 100644 (file)
@@ -205,18 +205,18 @@ void program___Program___finish_processing_classes(val_t p0){
   fra.me.REG[0] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_program___Program___finish_processing_classes_1));
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -230,27 +230,27 @@ void program___Program___finish_processing_classes(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
       /* program.nit:62 */
       CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -306,7 +306,7 @@ void program___Program___compute_main_method(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Sys");
       REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -331,7 +331,7 @@ void program___Program___compute_main_method(val_t p0){
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("main");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
@@ -455,18 +455,18 @@ void program___Program___generate_allocation_iroutines(val_t p0){
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(closctx->REG[2])(closctx->REG[2]);
       fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[1] = CALL_standard___collection___array___AbstractArrayRead___reversed(fra.me.REG[1])(fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB0 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB0 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -480,30 +480,30 @@ void program___Program___generate_allocation_iroutines(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB1)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
           /* program.nit:94 */
           closctx->REG[6] = fra.me.REG[3];
           /* program.nit:95 */
           fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[6])(closctx->REG[6]);
           CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_3));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB0 = REGB1;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label5;
         }
       }
@@ -760,16 +760,16 @@ void program___Program___generate_allocation_iroutines(val_t p0){
           nit_abort("Reciever is null", NULL, LOCATE_program, 138);
         }
         REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB2)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB2)) {
             /* program.nit:138 */
             REGB2 = REGB0;
@@ -781,14 +781,14 @@ void program___Program___generate_allocation_iroutines(val_t p0){
             fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
             fra.me.REG[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[3]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB2 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB0 = REGB2;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label10;
           }
         }
index 5690d79..bf08a67 100644 (file)
@@ -259,18 +259,18 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
   /* separate_options.nit:45 */
   REGB0 = TAG_Char('\n');
   fra.me.REG[1] = CALL_standard___string_search___String___split_with(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -284,22 +284,22 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* separate_options.nit:46 */
       if (!once_value_1) {
         fra.me.REG[5] = BOX_NativeString("\n");
         REGB1 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_1 = fra.me.REG[5];
         register_static_object(&once_value_1);
       } else fra.me.REG[5] = once_value_1;
@@ -316,18 +316,18 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
       /* separate_options.nit:49 */
       fra.me.REG[5] = CALL_separate_options___ToolContext___separate_options(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[5] = CALL_opts___OptionContext___rest(fra.me.REG[5])(fra.me.REG[5]);
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB1 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB1 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -341,16 +341,16 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
           /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -366,20 +366,20 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:237 */
+          /* ../lib/standard/kernel.nit:244 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
           /* separate_options.nit:49 */
           if (UNTAG_Bool(REGB3)) {
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
           }
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = REGB3;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label2;
         }
       }
@@ -398,7 +398,7 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
       /* separate_options.nit:50 */
       if (UNTAG_Bool(REGB3)) {
@@ -408,7 +408,7 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
         if (!once_value_3) {
           fra.me.REG[5] = BOX_NativeString("module \"");
           REGB3 = TAG_Int(8);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
           once_value_3 = fra.me.REG[5];
           register_static_object(&once_value_3);
         } else fra.me.REG[5] = once_value_3;
@@ -419,7 +419,7 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("\" args file has unknown args: ");
           REGB3 = TAG_Int(30);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
           once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
         } else fra.me.REG[5] = once_value_4;
@@ -428,7 +428,7 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString(", ");
           REGB3 = TAG_Int(2);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -438,7 +438,7 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString("");
           REGB3 = TAG_Int(0);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
           once_value_6 = fra.me.REG[5];
           register_static_object(&once_value_6);
         } else fra.me.REG[5] = once_value_6;
@@ -447,14 +447,14 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
         fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
         CALL_toolcontext___ToolContext___error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[6]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label7;
     }
   }
@@ -508,7 +508,7 @@ void separate_options___MMSrcModule___compile_separate_module(val_t p0, val_t p1
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -525,7 +525,7 @@ void separate_options___MMSrcModule___compile_separate_module(val_t p0, val_t p1
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(".args");
     REGB0 = TAG_Int(5);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
index 334bb90..51f068e 100644 (file)
@@ -2,7 +2,6 @@
 #ifndef standard_sep
 #define standard_sep
 #include "standard___environ._sep.h"
-#include "standard___time._sep.h"
 #include "standard___file._sep.h"
 #include "standard___exec._sep.h"
 #include "standard___math._sep.h"
index 40f17e3..33346d8 100644 (file)
@@ -22,31 +22,31 @@ val_t standard___collection___Sequence___subarray(val_t p0, val_t p1, val_t p2){
   REGB1 = p2;
   /* ../lib/standard/collection/collection.nit:26 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* ../lib/standard/collection/collection.nit:27 */
       REGB2 = REGB0;
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label1;
     }
   }
index 258ae9d..dd652fa 100644 (file)
@@ -81,13 +81,13 @@ val_t standard___collection___abstract_collection___Collection___length(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 59;
+  fra.me.line = 62;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Collection___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:59 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 59);
+  /* ../lib/standard/collection/abstract_collection.nit:62 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 62);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -97,13 +97,13 @@ val_t standard___collection___abstract_collection___Collection___has(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 62;
+  fra.me.line = 68;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Collection___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:62 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 62);
+  /* ../lib/standard/collection/abstract_collection.nit:68 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 68);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -113,13 +113,13 @@ val_t standard___collection___abstract_collection___Collection___has_only(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 66;
+  fra.me.line = 77;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Collection___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:66 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 66);
+  /* ../lib/standard/collection/abstract_collection.nit:77 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 77);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -129,13 +129,13 @@ val_t standard___collection___abstract_collection___Collection___count(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 71;
+  fra.me.line = 90;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Collection___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:71 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 71);
+  /* ../lib/standard/collection/abstract_collection.nit:90 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 90);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -145,13 +145,13 @@ val_t standard___collection___abstract_collection___Collection___first(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 75;
+  fra.me.line = 96;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Collection___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:75 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 75);
+  /* ../lib/standard/collection/abstract_collection.nit:96 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 96);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -164,22 +164,22 @@ val_t standard___collection___abstract_collection___NaiveCollection___is_empty(v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 83;
+  fra.me.line = 106;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___NaiveCollection___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:83 */
+  /* ../lib/standard/collection/abstract_collection.nit:106 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/collection/abstract_collection.nit:83 */
+    /* ../lib/standard/collection/abstract_collection.nit:106 */
     REGB2 = REGB1;
   }
   goto label1;
@@ -194,7 +194,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___length(val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 85;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___NaiveCollection___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -202,11 +202,11 @@ val_t standard___collection___abstract_collection___NaiveCollection___length(val
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:87 */
+  /* ../lib/standard/collection/abstract_collection.nit:110 */
   REGB0 = TAG_Int(0);
   fra.me.REG[1] = REGB0;
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___collection___abstract_collection___NaiveCollection___length_1));
-  /* ../lib/standard/collection/abstract_collection.nit:89 */
+  /* ../lib/standard/collection/abstract_collection.nit:112 */
   REGB0 = fra.me.REG[1];
   goto label2;
   label2: while(0);
@@ -218,7 +218,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___length(val
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/collection/abstract_collection.nit:88 */
+    /* ../lib/standard/collection/abstract_collection.nit:111 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -232,9 +232,9 @@ val_t standard___collection___abstract_collection___NaiveCollection___length(val
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/abstract_collection.nit:88 */
+    /* ../lib/standard/collection/abstract_collection.nit:111 */
     closctx->REG[1] = REGB0;
     stack_frame_head = fra.me.prev;
     return;
@@ -246,7 +246,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___has(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 92;
+  fra.me.line = 115;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___NaiveCollection___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -260,7 +260,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___has(val_t
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ../lib/standard/collection/abstract_collection.nit:95 */
+  /* ../lib/standard/collection/abstract_collection.nit:118 */
   REGB0 = TAG_Bool(0);
   fra.me.REG[0] = REGB0;
   goto label3;
@@ -274,7 +274,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___has(val_t
     val_t REGB1;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/collection/abstract_collection.nit:94 */
+    /* ../lib/standard/collection/abstract_collection.nit:117 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -316,7 +316,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___has_only(v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 98;
+  fra.me.line = 121;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___NaiveCollection___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -330,7 +330,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___has_only(v
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ../lib/standard/collection/abstract_collection.nit:101 */
+  /* ../lib/standard/collection/abstract_collection.nit:124 */
   REGB0 = TAG_Bool(1);
   fra.me.REG[0] = REGB0;
   goto label3;
@@ -344,7 +344,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___has_only(v
     val_t REGB1;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/collection/abstract_collection.nit:100 */
+    /* ../lib/standard/collection/abstract_collection.nit:123 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -387,7 +387,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___count(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 104;
+  fra.me.line = 127;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___NaiveCollection___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -397,11 +397,11 @@ val_t standard___collection___abstract_collection___NaiveCollection___count(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:106 */
+  /* ../lib/standard/collection/abstract_collection.nit:129 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = REGB0;
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___collection___abstract_collection___NaiveCollection___count_1));
-  /* ../lib/standard/collection/abstract_collection.nit:108 */
+  /* ../lib/standard/collection/abstract_collection.nit:131 */
   REGB0 = fra.me.REG[2];
   goto label2;
   label2: while(0);
@@ -414,7 +414,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___count(val_
     val_t REGB1;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/collection/abstract_collection.nit:107 */
+    /* ../lib/standard/collection/abstract_collection.nit:130 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -441,9 +441,9 @@ val_t standard___collection___abstract_collection___NaiveCollection___count(val_
     }
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(closctx->REG[2])+UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/abstract_collection.nit:107 */
+      /* ../lib/standard/collection/abstract_collection.nit:130 */
       closctx->REG[2] = REGB0;
     }
     stack_frame_head = fra.me.prev;
@@ -458,14 +458,14 @@ val_t standard___collection___abstract_collection___NaiveCollection___first(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 111;
+  fra.me.line = 134;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___NaiveCollection___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:113 */
+  /* ../lib/standard/collection/abstract_collection.nit:136 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -473,14 +473,14 @@ val_t standard___collection___abstract_collection___NaiveCollection___first(val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/abstract_collection.nit:113 */
+  /* ../lib/standard/collection/abstract_collection.nit:136 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___abstract_collection, 113);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___abstract_collection, 136);
   }
-  /* ../lib/standard/collection/abstract_collection.nit:114 */
+  /* ../lib/standard/collection/abstract_collection.nit:137 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -494,13 +494,13 @@ val_t standard___collection___abstract_collection___Iterator___item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 121;
+  fra.me.line = 144;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Iterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:121 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 121);
+  /* ../lib/standard/collection/abstract_collection.nit:144 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 144);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -510,13 +510,13 @@ void standard___collection___abstract_collection___Iterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 125;
+  fra.me.line = 148;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Iterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:125 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 125);
+  /* ../lib/standard/collection/abstract_collection.nit:148 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 148);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -526,13 +526,13 @@ val_t standard___collection___abstract_collection___Iterator___is_ok(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 129;
+  fra.me.line = 152;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Iterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:129 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 129);
+  /* ../lib/standard/collection/abstract_collection.nit:152 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 152);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -542,14 +542,14 @@ val_t standard___collection___abstract_collection___Container___first(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 137;
+  fra.me.line = 160;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:137 */
+  /* ../lib/standard/collection/abstract_collection.nit:160 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -563,14 +563,14 @@ val_t standard___collection___abstract_collection___Container___is_empty(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 139;
+  fra.me.line = 162;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:139 */
+  /* ../lib/standard/collection/abstract_collection.nit:162 */
   REGB0 = TAG_Bool(0);
   goto label1;
   label1: while(0);
@@ -584,14 +584,14 @@ val_t standard___collection___abstract_collection___Container___length(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 141;
+  fra.me.line = 164;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:141 */
+  /* ../lib/standard/collection/abstract_collection.nit:164 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -606,7 +606,7 @@ val_t standard___collection___abstract_collection___Container___has(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 143;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -615,7 +615,7 @@ val_t standard___collection___abstract_collection___Container___has(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:143 */
+  /* ../lib/standard/collection/abstract_collection.nit:166 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[0],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
@@ -642,7 +642,7 @@ val_t standard___collection___abstract_collection___Container___has_only(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 145;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -651,7 +651,7 @@ val_t standard___collection___abstract_collection___Container___has_only(val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:145 */
+  /* ../lib/standard/collection/abstract_collection.nit:168 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[0],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
@@ -678,7 +678,7 @@ val_t standard___collection___abstract_collection___Container___count(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 147;
+  fra.me.line = 170;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -687,7 +687,7 @@ val_t standard___collection___abstract_collection___Container___count(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:149 */
+  /* ../lib/standard/collection/abstract_collection.nit:172 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[0],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
@@ -702,11 +702,11 @@ val_t standard___collection___abstract_collection___Container___count(val_t p0,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/collection/abstract_collection.nit:150 */
+    /* ../lib/standard/collection/abstract_collection.nit:173 */
     REGB0 = TAG_Int(1);
     goto label1;
   } else {
-    /* ../lib/standard/collection/abstract_collection.nit:152 */
+    /* ../lib/standard/collection/abstract_collection.nit:175 */
     REGB1 = TAG_Int(0);
     REGB0 = REGB1;
     goto label1;
@@ -721,14 +721,14 @@ val_t standard___collection___abstract_collection___Container___iterator(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 156;
+  fra.me.line = 179;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:156 */
+  /* ../lib/standard/collection/abstract_collection.nit:179 */
   fra.me.REG[0] = NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -743,7 +743,7 @@ void standard___collection___abstract_collection___Container___init(val_t p0, va
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 158;
+  fra.me.line = 181;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -752,7 +752,7 @@ void standard___collection___abstract_collection___Container___init(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:159 */
+  /* ../lib/standard/collection/abstract_collection.nit:182 */
   ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -764,14 +764,14 @@ val_t standard___collection___abstract_collection___Container___item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 161;
+  fra.me.line = 184;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:161 */
+  /* ../lib/standard/collection/abstract_collection.nit:184 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -782,7 +782,7 @@ void standard___collection___abstract_collection___Container___item__eq(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 161;
+  fra.me.line = 184;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Container___item__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -791,7 +791,7 @@ void standard___collection___abstract_collection___Container___item__eq(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:161 */
+  /* ../lib/standard/collection/abstract_collection.nit:184 */
   ATTR_standard___collection___abstract_collection___Container____item(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -803,18 +803,18 @@ val_t standard___collection___abstract_collection___ContainerIterator___item(val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 168;
+  fra.me.line = 191;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___ContainerIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:168 */
+  /* ../lib/standard/collection/abstract_collection.nit:191 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___ContainerIterator____container(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_container", LOCATE_standard___collection___abstract_collection, 168);
+    nit_abort("Uninitialized attribute %s", "_container", LOCATE_standard___collection___abstract_collection, 191);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___ContainerIterator____container(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Container___item(fra.me.REG[0])(fra.me.REG[0]);
@@ -830,14 +830,14 @@ void standard___collection___abstract_collection___ContainerIterator___next(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 170;
+  fra.me.line = 193;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___ContainerIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:170 */
+  /* ../lib/standard/collection/abstract_collection.nit:193 */
   REGB0 = TAG_Bool(0);
   ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -851,7 +851,7 @@ void standard___collection___abstract_collection___ContainerIterator___init(val_
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 172;
+  fra.me.line = 195;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___ContainerIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -860,7 +860,7 @@ void standard___collection___abstract_collection___ContainerIterator___init(val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:172 */
+  /* ../lib/standard/collection/abstract_collection.nit:195 */
   ATTR_standard___collection___abstract_collection___ContainerIterator____container(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -873,18 +873,18 @@ val_t standard___collection___abstract_collection___ContainerIterator___is_ok(va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 174;
+  fra.me.line = 197;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___ContainerIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:174 */
+  /* ../lib/standard/collection/abstract_collection.nit:197 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_ok", LOCATE_standard___collection___abstract_collection, 174);
+    nit_abort("Uninitialized attribute %s", "_is_ok", LOCATE_standard___collection___abstract_collection, 197);
   }
   REGB0 = ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -896,13 +896,13 @@ void standard___collection___abstract_collection___RemovableCollection___clear(v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 182;
+  fra.me.line = 205;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___RemovableCollection___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:182 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 182);
+  /* ../lib/standard/collection/abstract_collection.nit:205 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 205);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -912,13 +912,13 @@ void standard___collection___abstract_collection___RemovableCollection___remove(
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 185;
+  fra.me.line = 208;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___RemovableCollection___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:185 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 185);
+  /* ../lib/standard/collection/abstract_collection.nit:208 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 208);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -929,7 +929,7 @@ void standard___collection___abstract_collection___RemovableCollection___remove_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 188;
+  fra.me.line = 211;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___RemovableCollection___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -938,7 +938,7 @@ void standard___collection___abstract_collection___RemovableCollection___remove_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:189 */
+  /* ../lib/standard/collection/abstract_collection.nit:212 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
@@ -957,13 +957,13 @@ void standard___collection___abstract_collection___SimpleCollection___add(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 195;
+  fra.me.line = 218;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SimpleCollection___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:195 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 195);
+  /* ../lib/standard/collection/abstract_collection.nit:218 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 218);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -973,7 +973,7 @@ void standard___collection___abstract_collection___SimpleCollection___add_all(va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 199;
+  fra.me.line = 222;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SimpleCollection___add_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -990,7 +990,7 @@ void standard___collection___abstract_collection___SimpleCollection___add_all(va
     struct {struct stack_frame_t me;} fra;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/collection/abstract_collection.nit:200 */
+    /* ../lib/standard/collection/abstract_collection.nit:223 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -1017,7 +1017,7 @@ val_t standard___collection___abstract_collection___Set___has_only(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 215;
+  fra.me.line = 238;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Set___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1026,40 +1026,40 @@ val_t standard___collection___abstract_collection___Set___has_only(val_t p0, val
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:217 */
+  /* ../lib/standard/collection/abstract_collection.nit:240 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/abstract_collection.nit:218 */
+  /* ../lib/standard/collection/abstract_collection.nit:241 */
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/collection/abstract_collection.nit:218 */
+    /* ../lib/standard/collection/abstract_collection.nit:241 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/abstract_collection.nit:219 */
+    /* ../lib/standard/collection/abstract_collection.nit:242 */
     REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     goto label1;
   } else {
-    /* ../lib/standard/collection/abstract_collection.nit:220 */
+    /* ../lib/standard/collection/abstract_collection.nit:243 */
     REGB1 = TAG_Int(0);
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
-      /* ../lib/standard/collection/abstract_collection.nit:220 */
+      /* ../lib/standard/collection/abstract_collection.nit:243 */
       REGB3 = REGB1;
     }
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/collection/abstract_collection.nit:221 */
+      /* ../lib/standard/collection/abstract_collection.nit:244 */
       REGB3 = TAG_Bool(1);
       REGB2 = REGB3;
       goto label1;
     } else {
-      /* ../lib/standard/collection/abstract_collection.nit:223 */
+      /* ../lib/standard/collection/abstract_collection.nit:246 */
       REGB3 = TAG_Bool(0);
       REGB2 = REGB3;
       goto label1;
@@ -1077,7 +1077,7 @@ val_t standard___collection___abstract_collection___Set___count(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 227;
+  fra.me.line = 250;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Set___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1086,14 +1086,14 @@ val_t standard___collection___abstract_collection___Set___count(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:230 */
+  /* ../lib/standard/collection/abstract_collection.nit:253 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/collection/abstract_collection.nit:231 */
+    /* ../lib/standard/collection/abstract_collection.nit:254 */
     REGB0 = TAG_Int(1);
     goto label1;
   } else {
-    /* ../lib/standard/collection/abstract_collection.nit:233 */
+    /* ../lib/standard/collection/abstract_collection.nit:256 */
     REGB1 = TAG_Int(0);
     REGB0 = REGB1;
     goto label1;
@@ -1108,7 +1108,7 @@ void standard___collection___abstract_collection___Set___remove_all(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 237;
+  fra.me.line = 260;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Set___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1117,7 +1117,7 @@ void standard___collection___abstract_collection___Set___remove_all(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:238 */
+  /* ../lib/standard/collection/abstract_collection.nit:261 */
   CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1128,16 +1128,47 @@ val_t standard___collection___abstract_collection___MapRead_____bra(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 243;
+  fra.me.line = 266;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:243 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 243);
+  /* ../lib/standard/collection/abstract_collection.nit:266 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 266);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_standard___collection___abstract_collection___MapRead___get_or_default[] = "abstract_collection::MapRead::get_or_default";
+val_t standard___collection___abstract_collection___MapRead___get_or_default(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___abstract_collection;
+  fra.me.line = 269;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___get_or_default;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ../lib/standard/collection/abstract_collection.nit:272 */
+  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    goto label1;
+  }
+  /* ../lib/standard/collection/abstract_collection.nit:273 */
+  fra.me.REG[1] = fra.me.REG[2];
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
 static const char LOCATE_standard___collection___abstract_collection___MapRead___has_key[] = "abstract_collection::MapRead::has_key";
 val_t standard___collection___abstract_collection___MapRead___has_key(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1145,7 +1176,7 @@ val_t standard___collection___abstract_collection___MapRead___has_key(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 246;
+  fra.me.line = 276;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___has_key;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1154,7 +1185,7 @@ val_t standard___collection___abstract_collection___MapRead___has_key(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:247 */
+  /* ../lib/standard/collection/abstract_collection.nit:277 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___keys(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label1;
@@ -1168,13 +1199,13 @@ val_t standard___collection___abstract_collection___MapRead___iterator(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 249;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:249 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 249);
+  /* ../lib/standard/collection/abstract_collection.nit:279 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 279);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1186,7 +1217,7 @@ void standard___collection___abstract_collection___MapRead___iterate(val_t p0, s
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 252;
+  fra.me.line = 282;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___iterate;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1198,23 +1229,23 @@ void standard___collection___abstract_collection___MapRead___iterate(val_t p0, s
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
-  /* ../lib/standard/collection/abstract_collection.nit:256 */
+  /* ../lib/standard/collection/abstract_collection.nit:286 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/abstract_collection.nit:257 */
+  /* ../lib/standard/collection/abstract_collection.nit:287 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/abstract_collection.nit:258 */
+      /* ../lib/standard/collection/abstract_collection.nit:288 */
       fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[0])(fra.me.REG[0]);
       ((void (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[1], fra.me.REG[2]);
       if (closctx_param->has_broke) {
         goto label1;
       }
-      /* ../lib/standard/collection/abstract_collection.nit:259 */
+      /* ../lib/standard/collection/abstract_collection.nit:289 */
       CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ../lib/standard/collection/abstract_collection.nit:257 */
+      /* ../lib/standard/collection/abstract_collection.nit:287 */
       goto label2;
     }
   }
@@ -1229,13 +1260,13 @@ val_t standard___collection___abstract_collection___MapRead___values(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 263;
+  fra.me.line = 293;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___values;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:263 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 263);
+  /* ../lib/standard/collection/abstract_collection.nit:293 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 293);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1245,13 +1276,13 @@ val_t standard___collection___abstract_collection___MapRead___keys(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 268;
+  fra.me.line = 298;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___keys;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:268 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 268);
+  /* ../lib/standard/collection/abstract_collection.nit:298 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 298);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1261,13 +1292,13 @@ val_t standard___collection___abstract_collection___MapRead___is_empty(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 273;
+  fra.me.line = 303;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:273 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 273);
+  /* ../lib/standard/collection/abstract_collection.nit:303 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 303);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1277,13 +1308,13 @@ val_t standard___collection___abstract_collection___MapRead___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 276;
+  fra.me.line = 306;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:276 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 276);
+  /* ../lib/standard/collection/abstract_collection.nit:306 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 306);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1293,13 +1324,13 @@ void standard___collection___abstract_collection___Map_____braeq(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 304;
+  fra.me.line = 336;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Map_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:304 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 304);
+  /* ../lib/standard/collection/abstract_collection.nit:336 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 336);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1310,7 +1341,7 @@ void standard___collection___abstract_collection___Map___recover_with(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 307;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___recover_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1321,20 +1352,20 @@ void standard___collection___abstract_collection___Map___recover_with(val_t p0,
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:311 */
+  /* ../lib/standard/collection/abstract_collection.nit:343 */
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/collection/abstract_collection.nit:312 */
+  /* ../lib/standard/collection/abstract_collection.nit:344 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/abstract_collection.nit:313 */
+      /* ../lib/standard/collection/abstract_collection.nit:345 */
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[1])(fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
-      /* ../lib/standard/collection/abstract_collection.nit:314 */
+      /* ../lib/standard/collection/abstract_collection.nit:346 */
       CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[1])(fra.me.REG[1]);
     } else {
-      /* ../lib/standard/collection/abstract_collection.nit:312 */
+      /* ../lib/standard/collection/abstract_collection.nit:344 */
       goto label1;
     }
   }
@@ -1348,13 +1379,13 @@ void standard___collection___abstract_collection___Map___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 318;
+  fra.me.line = 350;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:318 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 318);
+  /* ../lib/standard/collection/abstract_collection.nit:350 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 350);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1364,13 +1395,13 @@ val_t standard___collection___abstract_collection___Map___values(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 321;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___values;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:321 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 321);
+  /* ../lib/standard/collection/abstract_collection.nit:353 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 353);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1380,13 +1411,13 @@ val_t standard___collection___abstract_collection___Map___keys(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 323;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___keys;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:323 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 323);
+  /* ../lib/standard/collection/abstract_collection.nit:355 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 355);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1396,13 +1427,13 @@ val_t standard___collection___abstract_collection___MapIterator___item(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 328;
+  fra.me.line = 360;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:328 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 328);
+  /* ../lib/standard/collection/abstract_collection.nit:360 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 360);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1412,13 +1443,13 @@ val_t standard___collection___abstract_collection___MapIterator___key(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 332;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___key;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:332 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 332);
+  /* ../lib/standard/collection/abstract_collection.nit:364 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 364);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1428,13 +1459,13 @@ void standard___collection___abstract_collection___MapIterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 336;
+  fra.me.line = 368;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:336 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 336);
+  /* ../lib/standard/collection/abstract_collection.nit:368 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 368);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1444,13 +1475,13 @@ val_t standard___collection___abstract_collection___MapIterator___is_ok(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 340;
+  fra.me.line = 372;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:340 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 340);
+  /* ../lib/standard/collection/abstract_collection.nit:372 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 372);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1461,18 +1492,18 @@ val_t standard___collection___abstract_collection___MapKeysIterator___iterator(v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 350;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:350 */
+  /* ../lib/standard/collection/abstract_collection.nit:382 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_standard___collection___abstract_collection, 350);
+    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_standard___collection___abstract_collection, 382);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1484,7 +1515,7 @@ void standard___collection___abstract_collection___MapKeysIterator___iterator__e
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 350;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___iterator__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1493,7 +1524,7 @@ void standard___collection___abstract_collection___MapKeysIterator___iterator__e
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:350 */
+  /* ../lib/standard/collection/abstract_collection.nit:382 */
   ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1505,14 +1536,14 @@ val_t standard___collection___abstract_collection___MapKeysIterator___is_ok(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 353;
+  fra.me.line = 385;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:353 */
+  /* ../lib/standard/collection/abstract_collection.nit:385 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapKeysIterator___iterator(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1526,14 +1557,14 @@ void standard___collection___abstract_collection___MapKeysIterator___next(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 354;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:354 */
+  /* ../lib/standard/collection/abstract_collection.nit:386 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapKeysIterator___iterator(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1545,14 +1576,14 @@ val_t standard___collection___abstract_collection___MapKeysIterator___item(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 355;
+  fra.me.line = 387;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:355 */
+  /* ../lib/standard/collection/abstract_collection.nit:387 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapKeysIterator___iterator(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1589,18 +1620,18 @@ val_t standard___collection___abstract_collection___MapValuesIterator___iterator
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 361;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:361 */
+  /* ../lib/standard/collection/abstract_collection.nit:393 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_standard___collection___abstract_collection, 361);
+    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_standard___collection___abstract_collection, 393);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1612,7 +1643,7 @@ void standard___collection___abstract_collection___MapValuesIterator___iterator_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 361;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___iterator__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1621,7 +1652,7 @@ void standard___collection___abstract_collection___MapValuesIterator___iterator_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:361 */
+  /* ../lib/standard/collection/abstract_collection.nit:393 */
   ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1633,14 +1664,14 @@ val_t standard___collection___abstract_collection___MapValuesIterator___is_ok(va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 364;
+  fra.me.line = 396;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:364 */
+  /* ../lib/standard/collection/abstract_collection.nit:396 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapValuesIterator___iterator(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1654,14 +1685,14 @@ void standard___collection___abstract_collection___MapValuesIterator___next(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 365;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:365 */
+  /* ../lib/standard/collection/abstract_collection.nit:397 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapValuesIterator___iterator(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1673,14 +1704,14 @@ val_t standard___collection___abstract_collection___MapValuesIterator___item(val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 366;
+  fra.me.line = 398;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:366 */
+  /* ../lib/standard/collection/abstract_collection.nit:398 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapValuesIterator___iterator(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1717,21 +1748,21 @@ val_t standard___collection___abstract_collection___SequenceRead___first(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 373;
+  fra.me.line = 405;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:377 */
+  /* ../lib/standard/collection/abstract_collection.nit:409 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert '%s' failed", "not_empty", LOCATE_standard___collection___abstract_collection, 377);
+    nit_abort("Assert '%s' failed", "not_empty", LOCATE_standard___collection___abstract_collection, 409);
   }
-  /* ../lib/standard/collection/abstract_collection.nit:378 */
+  /* ../lib/standard/collection/abstract_collection.nit:410 */
   REGB0 = TAG_Int(0);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -1745,13 +1776,13 @@ val_t standard___collection___abstract_collection___SequenceRead_____bra(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 381;
+  fra.me.line = 413;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:381 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 381);
+  /* ../lib/standard/collection/abstract_collection.nit:413 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 413);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1763,26 +1794,26 @@ val_t standard___collection___abstract_collection___SequenceRead___last(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 386;
+  fra.me.line = 418;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___last;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:390 */
+  /* ../lib/standard/collection/abstract_collection.nit:422 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert '%s' failed", "not_empty", LOCATE_standard___collection___abstract_collection, 390);
+    nit_abort("Assert '%s' failed", "not_empty", LOCATE_standard___collection___abstract_collection, 422);
   }
-  /* ../lib/standard/collection/abstract_collection.nit:391 */
+  /* ../lib/standard/collection/abstract_collection.nit:423 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/abstract_collection.nit:391 */
+  /* ../lib/standard/collection/abstract_collection.nit:423 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
   goto label1;
   label1: while(0);
@@ -1797,7 +1828,7 @@ val_t standard___collection___abstract_collection___SequenceRead___index_of(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 394;
+  fra.me.line = 426;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___index_of;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1807,13 +1838,13 @@ val_t standard___collection___abstract_collection___SequenceRead___index_of(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:399 */
+  /* ../lib/standard/collection/abstract_collection.nit:431 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/abstract_collection.nit:400 */
+  /* ../lib/standard/collection/abstract_collection.nit:432 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/abstract_collection.nit:401 */
+      /* ../lib/standard/collection/abstract_collection.nit:433 */
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB0)) {
@@ -1831,19 +1862,19 @@ val_t standard___collection___abstract_collection___SequenceRead___index_of(val_
         REGB0 = CALL_standard___collection___abstract_collection___IndexedIterator___index(fra.me.REG[0])(fra.me.REG[0]);
         goto label1;
       }
-      /* ../lib/standard/collection/abstract_collection.nit:402 */
+      /* ../lib/standard/collection/abstract_collection.nit:434 */
       CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ../lib/standard/collection/abstract_collection.nit:400 */
+      /* ../lib/standard/collection/abstract_collection.nit:432 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/collection/abstract_collection.nit:404 */
+  /* ../lib/standard/collection/abstract_collection.nit:436 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/abstract_collection.nit:404 */
+  /* ../lib/standard/collection/abstract_collection.nit:436 */
   REGB0 = REGB1;
   goto label1;
   label1: while(0);
@@ -1856,13 +1887,13 @@ val_t standard___collection___abstract_collection___SequenceRead___iterator(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 407;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:407 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 407);
+  /* ../lib/standard/collection/abstract_collection.nit:439 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 439);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1873,7 +1904,7 @@ void standard___collection___abstract_collection___Sequence___first__eq(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 416;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___first__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1882,7 +1913,7 @@ void standard___collection___abstract_collection___Sequence___first__eq(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:419 */
+  /* ../lib/standard/collection/abstract_collection.nit:451 */
   REGB0 = TAG_Int(0);
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -1897,7 +1928,7 @@ void standard___collection___abstract_collection___Sequence___last__eq(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 421;
+  fra.me.line = 453;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___last__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1906,27 +1937,27 @@ void standard___collection___abstract_collection___Sequence___last__eq(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:425 */
+  /* ../lib/standard/collection/abstract_collection.nit:457 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/abstract_collection.nit:426 */
+  /* ../lib/standard/collection/abstract_collection.nit:458 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/abstract_collection.nit:426 */
+  /* ../lib/standard/collection/abstract_collection.nit:458 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/abstract_collection.nit:427 */
+    /* ../lib/standard/collection/abstract_collection.nit:459 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/abstract_collection.nit:427 */
+    /* ../lib/standard/collection/abstract_collection.nit:459 */
     CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
   } else {
-    /* ../lib/standard/collection/abstract_collection.nit:429 */
+    /* ../lib/standard/collection/abstract_collection.nit:461 */
     REGB1 = TAG_Int(0);
     CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
   }
@@ -1939,7 +1970,7 @@ void standard___collection___abstract_collection___Sequence___add(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 433;
+  fra.me.line = 465;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1948,7 +1979,7 @@ void standard___collection___abstract_collection___Sequence___add(val_t p0, val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:434 */
+  /* ../lib/standard/collection/abstract_collection.nit:466 */
   CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1959,13 +1990,13 @@ void standard___collection___abstract_collection___Sequence___push(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 436;
+  fra.me.line = 468;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___push;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:436 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 436);
+  /* ../lib/standard/collection/abstract_collection.nit:468 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 468);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1975,7 +2006,7 @@ void standard___collection___abstract_collection___Sequence___append(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 439;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___append;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1992,7 +2023,7 @@ void standard___collection___abstract_collection___Sequence___append(val_t p0, v
     struct {struct stack_frame_t me;} fra;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/collection/abstract_collection.nit:440 */
+    /* ../lib/standard/collection/abstract_collection.nit:472 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -2015,13 +2046,13 @@ val_t standard___collection___abstract_collection___Sequence___pop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 442;
+  fra.me.line = 474;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___pop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:442 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 442);
+  /* ../lib/standard/collection/abstract_collection.nit:474 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 474);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2031,13 +2062,13 @@ void standard___collection___abstract_collection___Sequence___unshift(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 445;
+  fra.me.line = 477;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___unshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:445 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 445);
+  /* ../lib/standard/collection/abstract_collection.nit:477 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 477);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2047,13 +2078,13 @@ val_t standard___collection___abstract_collection___Sequence___shift(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 448;
+  fra.me.line = 480;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___shift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:448 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 448);
+  /* ../lib/standard/collection/abstract_collection.nit:480 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 480);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2063,13 +2094,13 @@ void standard___collection___abstract_collection___Sequence_____braeq(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 452;
+  fra.me.line = 484;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:452 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 452);
+  /* ../lib/standard/collection/abstract_collection.nit:484 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 484);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2079,13 +2110,13 @@ void standard___collection___abstract_collection___Sequence___remove_at(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 455;
+  fra.me.line = 487;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___remove_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:455 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 455);
+  /* ../lib/standard/collection/abstract_collection.nit:487 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 487);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2095,13 +2126,13 @@ val_t standard___collection___abstract_collection___IndexedIterator___index(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 462;
+  fra.me.line = 494;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___IndexedIterator___index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:462 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 462);
+  /* ../lib/standard/collection/abstract_collection.nit:494 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 494);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2111,13 +2142,13 @@ val_t standard___collection___abstract_collection___CoupleMap___couple_at(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 469;
+  fra.me.line = 501;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMap___couple_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/abstract_collection.nit:469 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 469);
+  /* ../lib/standard/collection/abstract_collection.nit:501 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 501);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2129,7 +2160,7 @@ val_t standard___collection___abstract_collection___CoupleMap_____bra(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 473;
+  fra.me.line = 505;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMap_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2138,9 +2169,9 @@ val_t standard___collection___abstract_collection___CoupleMap_____bra(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:475 */
+  /* ../lib/standard/collection/abstract_collection.nit:507 */
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___CoupleMap___couple_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/collection/abstract_collection.nit:476 */
+  /* ../lib/standard/collection/abstract_collection.nit:508 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2154,13 +2185,13 @@ val_t standard___collection___abstract_collection___CoupleMap_____bra(val_t p0,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/collection/abstract_collection.nit:477 */
-    nit_abort("Aborted", NULL, LOCATE_standard___collection___abstract_collection, 477);
+    /* ../lib/standard/collection/abstract_collection.nit:509 */
+    nit_abort("Aborted", NULL, LOCATE_standard___collection___abstract_collection, 509);
   } else {
-    /* ../lib/standard/collection/abstract_collection.nit:479 */
+    /* ../lib/standard/collection/abstract_collection.nit:511 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 479);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 511);
     }
     fra.me.REG[1] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[1])(fra.me.REG[1]);
     goto label1;
@@ -2176,24 +2207,24 @@ val_t standard___collection___abstract_collection___CoupleMapIterator___item(val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 489;
+  fra.me.line = 521;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:489 */
+  /* ../lib/standard/collection/abstract_collection.nit:521 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 489);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 521);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 489);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 521);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2208,24 +2239,24 @@ val_t standard___collection___abstract_collection___CoupleMapIterator___key(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 493;
+  fra.me.line = 525;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___key;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:493 */
+  /* ../lib/standard/collection/abstract_collection.nit:525 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 493);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 525);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 493);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 525);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2240,18 +2271,18 @@ val_t standard___collection___abstract_collection___CoupleMapIterator___is_ok(va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 495;
+  fra.me.line = 527;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:495 */
+  /* ../lib/standard/collection/abstract_collection.nit:527 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 495);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 527);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
@@ -2267,18 +2298,18 @@ void standard___collection___abstract_collection___CoupleMapIterator___next(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 497;
+  fra.me.line = 529;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:499 */
+  /* ../lib/standard/collection/abstract_collection.nit:531 */
   REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 499);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 531);
   }
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
@@ -2293,7 +2324,7 @@ void standard___collection___abstract_collection___CoupleMapIterator___init(val_
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 504;
+  fra.me.line = 536;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2302,7 +2333,7 @@ void standard___collection___abstract_collection___CoupleMapIterator___init(val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:504 */
+  /* ../lib/standard/collection/abstract_collection.nit:536 */
   ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -2314,14 +2345,14 @@ val_t standard___collection___abstract_collection___Couple___first(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 512;
+  fra.me.line = 544;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:512 */
+  /* ../lib/standard/collection/abstract_collection.nit:544 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Couple____first(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -2332,7 +2363,7 @@ void standard___collection___abstract_collection___Couple___first__eq(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 512;
+  fra.me.line = 544;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___first__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2341,7 +2372,7 @@ void standard___collection___abstract_collection___Couple___first__eq(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:512 */
+  /* ../lib/standard/collection/abstract_collection.nit:544 */
   ATTR_standard___collection___abstract_collection___Couple____first(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2352,14 +2383,14 @@ val_t standard___collection___abstract_collection___Couple___second(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 515;
+  fra.me.line = 547;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___second;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/abstract_collection.nit:515 */
+  /* ../lib/standard/collection/abstract_collection.nit:547 */
   fra.me.REG[0] = ATTR_standard___collection___abstract_collection___Couple____second(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -2370,7 +2401,7 @@ void standard___collection___abstract_collection___Couple___second__eq(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 515;
+  fra.me.line = 547;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___second__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2379,7 +2410,7 @@ void standard___collection___abstract_collection___Couple___second__eq(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/abstract_collection.nit:515 */
+  /* ../lib/standard/collection/abstract_collection.nit:547 */
   ATTR_standard___collection___abstract_collection___Couple____second(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2392,7 +2423,7 @@ void standard___collection___abstract_collection___Couple___init(val_t p0, val_t
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 518;
+  fra.me.line = 550;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2403,9 +2434,9 @@ void standard___collection___abstract_collection___Couple___init(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ../lib/standard/collection/abstract_collection.nit:521 */
+  /* ../lib/standard/collection/abstract_collection.nit:553 */
   ATTR_standard___collection___abstract_collection___Couple____first(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/abstract_collection.nit:522 */
+  /* ../lib/standard/collection/abstract_collection.nit:554 */
   ATTR_standard___collection___abstract_collection___Couple____second(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
index cffe5ff..1c7a3a7 100644 (file)
@@ -94,13 +94,14 @@ extern const int SFT_standard___collection___abstract_collection[];
 #define COLOR_standard___collection___abstract_collection___MapRead (SFT_standard___collection___abstract_collection[27])
 #define INIT_TABLE_POS_standard___collection___abstract_collection___MapRead (SFT_standard___collection___abstract_collection[28] + 0)
 #define CALL_standard___collection___abstract_collection___MapRead_____bra(recv) ((standard___collection___abstract_collection___MapRead_____bra_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 1)))
-#define CALL_standard___collection___abstract_collection___MapRead___has_key(recv) ((standard___collection___abstract_collection___MapRead___has_key_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 2)))
-#define CALL_standard___collection___abstract_collection___MapRead___iterator(recv) ((standard___collection___abstract_collection___MapRead___iterator_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 3)))
-#define CALL_standard___collection___abstract_collection___MapRead___iterate(recv) ((standard___collection___abstract_collection___MapRead___iterate_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 4)))
-#define CALL_standard___collection___abstract_collection___MapRead___values(recv) ((standard___collection___abstract_collection___MapRead___values_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 5)))
-#define CALL_standard___collection___abstract_collection___MapRead___keys(recv) ((standard___collection___abstract_collection___MapRead___keys_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 6)))
-#define CALL_standard___collection___abstract_collection___MapRead___is_empty(recv) ((standard___collection___abstract_collection___MapRead___is_empty_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 7)))
-#define CALL_standard___collection___abstract_collection___MapRead___length(recv) ((standard___collection___abstract_collection___MapRead___length_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 8)))
+#define CALL_standard___collection___abstract_collection___MapRead___get_or_default(recv) ((standard___collection___abstract_collection___MapRead___get_or_default_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 2)))
+#define CALL_standard___collection___abstract_collection___MapRead___has_key(recv) ((standard___collection___abstract_collection___MapRead___has_key_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 3)))
+#define CALL_standard___collection___abstract_collection___MapRead___iterator(recv) ((standard___collection___abstract_collection___MapRead___iterator_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 4)))
+#define CALL_standard___collection___abstract_collection___MapRead___iterate(recv) ((standard___collection___abstract_collection___MapRead___iterate_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 5)))
+#define CALL_standard___collection___abstract_collection___MapRead___values(recv) ((standard___collection___abstract_collection___MapRead___values_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 6)))
+#define CALL_standard___collection___abstract_collection___MapRead___keys(recv) ((standard___collection___abstract_collection___MapRead___keys_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 7)))
+#define CALL_standard___collection___abstract_collection___MapRead___is_empty(recv) ((standard___collection___abstract_collection___MapRead___is_empty_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 8)))
+#define CALL_standard___collection___abstract_collection___MapRead___length(recv) ((standard___collection___abstract_collection___MapRead___length_t)CALL((recv), (SFT_standard___collection___abstract_collection[28] + 9)))
 #define ID_standard___collection___abstract_collection___Map (SFT_standard___collection___abstract_collection[29])
 #define COLOR_standard___collection___abstract_collection___Map (SFT_standard___collection___abstract_collection[30])
 #define INIT_TABLE_POS_standard___collection___abstract_collection___Map (SFT_standard___collection___abstract_collection[31] + 0)
@@ -267,6 +268,8 @@ void standard___collection___abstract_collection___Set___remove_all(val_t p0, va
 typedef void (*standard___collection___abstract_collection___Set___remove_all_t)(val_t p0, val_t p1);
 val_t standard___collection___abstract_collection___MapRead_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___collection___abstract_collection___MapRead_____bra_t)(val_t p0, val_t p1);
+val_t standard___collection___abstract_collection___MapRead___get_or_default(val_t p0, val_t p1, val_t p2);
+typedef val_t (*standard___collection___abstract_collection___MapRead___get_or_default_t)(val_t p0, val_t p1, val_t p2);
 val_t standard___collection___abstract_collection___MapRead___has_key(val_t p0, val_t p1);
 typedef val_t (*standard___collection___abstract_collection___MapRead___has_key_t)(val_t p0, val_t p1);
 val_t standard___collection___abstract_collection___MapRead___iterator(val_t p0);
index f7d2626..9ede4b2 100644 (file)
@@ -51,7 +51,7 @@ val_t standard___collection___array___AbstractArrayRead___is_empty(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ../lib/standard/collection/array.nit:26 */
     REGB2 = REGB1;
@@ -97,7 +97,7 @@ val_t standard___collection___array___AbstractArrayRead___has(val_t p0, val_t p1
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:32 */
     if (UNTAG_Bool(REGB2)) {
@@ -121,7 +121,7 @@ val_t standard___collection___array___AbstractArrayRead___has(val_t p0, val_t p1
       }
       /* ../lib/standard/collection/array.nit:34 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* ../lib/standard/collection/array.nit:34 */
       REGB0 = REGB3;
@@ -175,7 +175,7 @@ val_t standard___collection___array___AbstractArrayRead___has_only(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:43 */
     if (UNTAG_Bool(REGB2)) {
@@ -200,7 +200,7 @@ val_t standard___collection___array___AbstractArrayRead___has_only(val_t p0, val
       }
       /* ../lib/standard/collection/array.nit:45 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* ../lib/standard/collection/array.nit:45 */
       REGB0 = REGB3;
@@ -257,7 +257,7 @@ val_t standard___collection___array___AbstractArrayRead___count(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     /* ../lib/standard/collection/array.nit:55 */
     if (UNTAG_Bool(REGB3)) {
@@ -277,14 +277,14 @@ val_t standard___collection___array___AbstractArrayRead___count(val_t p0, val_t
       }
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
         /* ../lib/standard/collection/array.nit:56 */
         REGB0 = REGB3;
       }
       /* ../lib/standard/collection/array.nit:57 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
       /* ../lib/standard/collection/array.nit:57 */
       REGB1 = REGB3;
@@ -350,7 +350,7 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of(val_t p0
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:66 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ../lib/standard/collection/array.nit:66 */
   REGB1 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB1);
@@ -394,7 +394,7 @@ val_t standard___collection___array___AbstractArrayRead___index_of_from(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:74 */
     if (UNTAG_Bool(REGB2)) {
@@ -419,7 +419,7 @@ val_t standard___collection___array___AbstractArrayRead___index_of_from(val_t p0
       }
       /* ../lib/standard/collection/array.nit:78 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* ../lib/standard/collection/array.nit:78 */
       REGB0 = REGB3;
@@ -431,7 +431,7 @@ val_t standard___collection___array___AbstractArrayRead___index_of_from(val_t p0
   label2: while(0);
   /* ../lib/standard/collection/array.nit:80 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* ../lib/standard/collection/array.nit:80 */
   REGB2 = REGB0;
@@ -468,7 +468,7 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of_from(val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:88 */
     if (UNTAG_Bool(REGB1)) {
@@ -493,7 +493,7 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of_from(val
       } else {
         /* ../lib/standard/collection/array.nit:92 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
         /* ../lib/standard/collection/array.nit:92 */
         REGB0 = REGB2;
@@ -506,7 +506,7 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of_from(val
   label2: while(0);
   /* ../lib/standard/collection/array.nit:95 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* ../lib/standard/collection/array.nit:95 */
   REGB1 = REGB0;
@@ -550,13 +550,13 @@ val_t standard___collection___array___AbstractArrayRead___reversed(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:105 */
     if (UNTAG_Bool(REGB1)) {
       /* ../lib/standard/collection/array.nit:106 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
       /* ../lib/standard/collection/array.nit:106 */
       REGB0 = REGB1;
@@ -607,17 +607,17 @@ void standard___collection___array___AbstractArrayRead___copy_to(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
     /* ../lib/standard/collection/array.nit:122 */
     if (UNTAG_Bool(REGB3)) {
       /* ../lib/standard/collection/array.nit:123 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
       /* ../lib/standard/collection/array.nit:123 */
       REGB1 = REGB3;
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* ../lib/standard/collection/array.nit:124 */
@@ -666,7 +666,7 @@ void standard___collection___array___AbstractArrayRead___output(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:132 */
     if (UNTAG_Bool(REGB2)) {
@@ -695,7 +695,7 @@ void standard___collection___array___AbstractArrayRead___output(val_t p0){
       }
       /* ../lib/standard/collection/array.nit:135 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ../lib/standard/collection/array.nit:135 */
       REGB0 = REGB2;
@@ -786,7 +786,7 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB2)==(REGB1));
     /* ../lib/standard/collection/array.nit:146 */
     REGB3 = REGB2;
@@ -806,7 +806,7 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:148 */
     if (UNTAG_Bool(REGB2)) {
@@ -837,7 +837,7 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t
       }
       /* ../lib/standard/collection/array.nit:150 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
       /* ../lib/standard/collection/array.nit:150 */
       REGB3 = REGB2;
@@ -936,7 +936,7 @@ val_t standard___collection___array___AbstractArray___pop(val_t p0){
   /* ../lib/standard/collection/array.nit:172 */
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ../lib/standard/collection/array.nit:172 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
@@ -989,20 +989,20 @@ val_t standard___collection___array___AbstractArray___shift(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:182 */
     if (UNTAG_Bool(REGB2)) {
       /* ../lib/standard/collection/array.nit:183 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
       /* ../lib/standard/collection/array.nit:183 */
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
       /* ../lib/standard/collection/array.nit:184 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ../lib/standard/collection/array.nit:184 */
       REGB0 = REGB2;
@@ -1014,7 +1014,7 @@ val_t standard___collection___array___AbstractArray___shift(val_t p0){
   label1: while(0);
   /* ../lib/standard/collection/array.nit:186 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
   /* ../lib/standard/collection/array.nit:186 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
@@ -1052,7 +1052,7 @@ void standard___collection___array___AbstractArray___unshift(val_t p0, val_t p1)
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:192 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ../lib/standard/collection/array.nit:193 */
   while(1) {
@@ -1062,20 +1062,20 @@ void standard___collection___array___AbstractArray___unshift(val_t p0, val_t p1)
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
     /* ../lib/standard/collection/array.nit:193 */
     if (UNTAG_Bool(REGB0)) {
       /* ../lib/standard/collection/array.nit:194 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
       /* ../lib/standard/collection/array.nit:194 */
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
       /* ../lib/standard/collection/array.nit:195 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ../lib/standard/collection/array.nit:195 */
       REGB1 = REGB0;
@@ -1119,7 +1119,7 @@ void standard___collection___array___AbstractArray___insert(val_t p0, val_t p1,
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:207 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* ../lib/standard/collection/array.nit:207 */
   CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB2);
@@ -1130,11 +1130,11 @@ void standard___collection___array___AbstractArray___insert(val_t p0, val_t p1,
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
   /* ../lib/standard/collection/array.nit:208 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ../lib/standard/collection/array.nit:208 */
   CALL_standard___collection___array___AbstractArrayRead___copy_to(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2, fra.me.REG[0], REGB1);
@@ -1241,7 +1241,7 @@ void standard___collection___array___AbstractArray___remove_all(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:221 */
     if (UNTAG_Bool(REGB1)) {
@@ -1292,7 +1292,7 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
   /* ../lib/standard/collection/array.nit:230 */
   if (UNTAG_Bool(REGB2)) {
@@ -1301,7 +1301,7 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
     /* ../lib/standard/collection/array.nit:230 */
@@ -1311,7 +1311,7 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
   if (UNTAG_Bool(REGB2)) {
     /* ../lib/standard/collection/array.nit:231 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
     /* ../lib/standard/collection/array.nit:232 */
     while(1) {
@@ -1320,20 +1320,20 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
       /* ../lib/standard/collection/array.nit:232 */
       if (UNTAG_Bool(REGB0)) {
         /* ../lib/standard/collection/array.nit:233 */
         REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
         /* ../lib/standard/collection/array.nit:233 */
         fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
         CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
         /* ../lib/standard/collection/array.nit:234 */
         REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
         /* ../lib/standard/collection/array.nit:234 */
         REGB2 = REGB0;
@@ -1345,7 +1345,7 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
     label1: while(0);
     /* ../lib/standard/collection/array.nit:236 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
     /* ../lib/standard/collection/array.nit:236 */
     ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB2;
@@ -1355,7 +1355,7 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
 }
 static const char LOCATE_standard___collection___array___AbstractArray___swap_at[] = "array::AbstractArray::swap_at";
 void standard___collection___array___AbstractArray___swap_at(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -1364,17 +1364,19 @@ void standard___collection___array___AbstractArray___swap_at(val_t p0, val_t p1,
   fra.me.line = 240;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___swap_at;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
   /* ../lib/standard/collection/array.nit:247 */
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
   /* ../lib/standard/collection/array.nit:248 */
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
+  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:249 */
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -1390,7 +1392,7 @@ void standard___collection___array___Array___iterate(val_t p0, struct stack_fram
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 266;
+  fra.me.line = 267;
   fra.me.meth = LOCATE_standard___collection___array___Array___iterate;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1402,18 +1404,18 @@ void standard___collection___array___Array___iterate(val_t p0, struct stack_fram
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1427,30 +1429,30 @@ void standard___collection___array___Array___iterate(val_t p0, struct stack_fram
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, fra.me.REG[2]);
       if (closctx_param->has_broke) {
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
@@ -1468,7 +1470,7 @@ val_t standard___collection___array___Array_____bra(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 278;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_standard___collection___array___Array_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1476,21 +1478,21 @@ val_t standard___collection___array___Array_____bra(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1498,26 +1500,26 @@ val_t standard___collection___array___Array_____bra(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1532,7 +1534,7 @@ void standard___collection___array___Array_____braeq(val_t p0, val_t p1, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 284;
+  fra.me.line = 285;
   fra.me.meth = LOCATE_standard___collection___array___Array_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1542,47 +1544,47 @@ void standard___collection___array___Array_____braeq(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   REGB0 = p1;
   fra.me.REG[1] = p2;
-  /* ../lib/standard/collection/array.nit:286 */
+  /* ../lib/standard/collection/array.nit:287 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:286 */
+  /* ../lib/standard/collection/array.nit:287 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 286);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 287);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
     REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
   } else {
-    /* ../lib/standard/collection/array.nit:286 */
+    /* ../lib/standard/collection/array.nit:287 */
     REGB1 = TAG_Bool(0);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 286);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 287);
   }
-  /* ../lib/standard/collection/array.nit:287 */
+  /* ../lib/standard/collection/array.nit:288 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 287);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 288);
   }
   REGB2 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
   REGB1 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1590,22 +1592,22 @@ void standard___collection___array___Array_____braeq(val_t p0, val_t p1, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:287 */
+  /* ../lib/standard/collection/array.nit:288 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:288 */
+    /* ../lib/standard/collection/array.nit:289 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:288 */
+    /* ../lib/standard/collection/array.nit:289 */
     CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB2);
   }
-  /* ../lib/standard/collection/array.nit:290 */
+  /* ../lib/standard/collection/array.nit:291 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 290);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 291);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1613,24 +1615,24 @@ void standard___collection___array___Array_____braeq(val_t p0, val_t p1, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:290 */
+  /* ../lib/standard/collection/array.nit:291 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:291 */
+    /* ../lib/standard/collection/array.nit:292 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:291 */
+    /* ../lib/standard/collection/array.nit:292 */
     ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB2;
   }
-  /* ../lib/standard/collection/array.nit:293 */
+  /* ../lib/standard/collection/array.nit:294 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 293);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 294);
   }
-  /* ../lib/standard/collection/array.nit:725 */
+  /* ../lib/standard/collection/array.nit:726 */
   ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1644,7 +1646,7 @@ void standard___collection___array___Array___add(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 296;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_standard___collection___array___Array___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1653,18 +1655,18 @@ void standard___collection___array___Array___add(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:298 */
+  /* ../lib/standard/collection/array.nit:299 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 298);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 299);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:299 */
+  /* ../lib/standard/collection/array.nit:300 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 299);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 300);
   }
   REGB1 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
   REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1672,30 +1674,30 @@ void standard___collection___array___Array___add(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:299 */
+  /* ../lib/standard/collection/array.nit:300 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:300 */
+    /* ../lib/standard/collection/array.nit:301 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:300 */
+    /* ../lib/standard/collection/array.nit:301 */
     CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
   }
-  /* ../lib/standard/collection/array.nit:302 */
+  /* ../lib/standard/collection/array.nit:303 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:302 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
   /* ../lib/standard/collection/array.nit:303 */
+  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
+  /* ../lib/standard/collection/array.nit:304 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 303);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 304);
   }
-  /* ../lib/standard/collection/array.nit:725 */
+  /* ../lib/standard/collection/array.nit:726 */
   ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1710,7 +1712,7 @@ void standard___collection___array___Array___enlarge(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 306;
+  fra.me.line = 307;
   fra.me.meth = LOCATE_standard___collection___array___Array___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1720,11 +1722,11 @@ void standard___collection___array___Array___enlarge(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:308 */
+  /* ../lib/standard/collection/array.nit:309 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 308);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 309);
   }
   REGB1 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1732,44 +1734,44 @@ void standard___collection___array___Array___enlarge(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:309 */
+  /* ../lib/standard/collection/array.nit:310 */
   if (UNTAG_Bool(REGB2)) {
     goto label1;
   }
-  /* ../lib/standard/collection/array.nit:310 */
+  /* ../lib/standard/collection/array.nit:311 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:310 */
+    /* ../lib/standard/collection/array.nit:311 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:241 */
+      /* ../lib/standard/kernel.nit:248 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:310 */
+      /* ../lib/standard/collection/array.nit:311 */
       REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:310 */
+      /* ../lib/standard/collection/array.nit:311 */
       REGB1 = REGB3;
     } else {
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/collection/array.nit:718 */
+  /* ../lib/standard/collection/array.nit:719 */
   fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB1), sizeof(val_t));
-  /* ../lib/standard/collection/array.nit:312 */
+  /* ../lib/standard/collection/array.nit:313 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 312);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 313);
   }
   REGB0 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
   REGB3 = TAG_Int(0);
@@ -1778,27 +1780,27 @@ void standard___collection___array___Array___enlarge(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
-  /* ../lib/standard/collection/array.nit:312 */
+  /* ../lib/standard/collection/array.nit:313 */
   if (UNTAG_Bool(REGB3)) {
     fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
     REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 312);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 313);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 312);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 313);
     }
-    /* ../lib/standard/collection/array.nit:726 */
+    /* ../lib/standard/collection/array.nit:727 */
     (void)memcpy(((Nit_NativeArray )fra.me.REG[1])->val, ((Nit_NativeArray)fra.me.REG[2])->val, UNTAG_Int(REGB3)*sizeof(val_t));
   }
-  /* ../lib/standard/collection/array.nit:313 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/array.nit:314 */
+  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/array.nit:315 */
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1813,17 +1815,17 @@ void standard___collection___array___Array___init(val_t p0, int* init_table){
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 317;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_standard___collection___array___Array___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:320 */
+  /* ../lib/standard/collection/array.nit:321 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:321 */
+  /* ../lib/standard/collection/array.nit:322 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1839,7 +1841,7 @@ void standard___collection___array___Array___from(val_t p0, val_t p1, int* init_
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 324;
+  fra.me.line = 325;
   fra.me.meth = LOCATE_standard___collection___array___Array___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1848,10 +1850,10 @@ void standard___collection___array___Array___from(val_t p0, val_t p1, int* init_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:326 */
+  /* ../lib/standard/collection/array.nit:327 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___array___Array___with_capacity(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
-  /* ../lib/standard/collection/array.nit:327 */
+  /* ../lib/standard/collection/array.nit:328 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -1866,7 +1868,7 @@ void standard___collection___array___Array___with_items(val_t p0, val_t p1, int*
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 330;
+  fra.me.line = 331;
   fra.me.meth = LOCATE_standard___collection___array___Array___with_items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1876,21 +1878,21 @@ void standard___collection___array___Array___with_items(val_t p0, val_t p1, int*
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:330 */
+  /* ../lib/standard/collection/array.nit:331 */
   fra.me.REG[2] = fra.me.REG[0];
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[E]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 330);
+    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 331);
   }
-  /* ../lib/standard/collection/array.nit:333 */
+  /* ../lib/standard/collection/array.nit:334 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   ATTR_standard___collection___array___Array____items(fra.me.REG[2]) = fra.me.REG[0];
-  /* ../lib/standard/collection/array.nit:334 */
+  /* ../lib/standard/collection/array.nit:335 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 334);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 335);
   }
   REGB0 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[1]);
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[2]) = REGB0;
@@ -1901,7 +1903,7 @@ void standard___collection___array___Array___with_items(val_t p0, val_t p1, int*
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:335 */
+  /* ../lib/standard/collection/array.nit:336 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -1918,7 +1920,7 @@ void standard___collection___array___Array___with_capacity(val_t p0, val_t p1, i
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 338;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_standard___collection___array___Array___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1927,27 +1929,27 @@ void standard___collection___array___Array___with_capacity(val_t p0, val_t p1, i
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:341 */
+  /* ../lib/standard/collection/array.nit:342 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:341 */
+  /* ../lib/standard/collection/array.nit:342 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 341);
+    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 342);
   }
-  /* ../lib/standard/collection/array.nit:718 */
+  /* ../lib/standard/collection/array.nit:719 */
   fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ../lib/standard/collection/array.nit:342 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/array.nit:343 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
+  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/array.nit:344 */
+  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/array.nit:345 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1965,7 +1967,7 @@ void standard___collection___array___Array___filled_with(val_t p0, val_t p1, val
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 347;
+  fra.me.line = 348;
   fra.me.meth = LOCATE_standard___collection___array___Array___filled_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1976,51 +1978,51 @@ void standard___collection___array___Array___filled_with(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:350 */
+  /* ../lib/standard/collection/array.nit:351 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:350 */
+  /* ../lib/standard/collection/array.nit:351 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 350);
+    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 351);
   }
-  /* ../lib/standard/collection/array.nit:718 */
+  /* ../lib/standard/collection/array.nit:719 */
   fra.me.REG[2] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ../lib/standard/collection/array.nit:351 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[2];
   /* ../lib/standard/collection/array.nit:352 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
+  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[2];
   /* ../lib/standard/collection/array.nit:353 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
   /* ../lib/standard/collection/array.nit:354 */
-  REGB1 = TAG_Int(0);
+  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   /* ../lib/standard/collection/array.nit:355 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:356 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:355 */
+    /* ../lib/standard/collection/array.nit:356 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:356 */
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
       /* ../lib/standard/collection/array.nit:357 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
+      /* ../lib/standard/collection/array.nit:358 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:357 */
+      /* ../lib/standard/collection/array.nit:358 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:355 */
+      /* ../lib/standard/collection/array.nit:356 */
       goto label1;
     }
   }
@@ -2040,7 +2042,7 @@ void standard___collection___array___Array___with_native(val_t p0, val_t p1, val
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 361;
+  fra.me.line = 362;
   fra.me.meth = LOCATE_standard___collection___array___Array___with_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2050,25 +2052,25 @@ void standard___collection___array___Array___with_native(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:364 */
+  /* ../lib/standard/collection/array.nit:365 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:364 */
+  /* ../lib/standard/collection/array.nit:365 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 364);
+    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 365);
   }
-  /* ../lib/standard/collection/array.nit:365 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/array.nit:366 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
+  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/array.nit:367 */
+  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/array.nit:368 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
@@ -2081,7 +2083,7 @@ val_t standard___collection___array___Array___intern_items(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 373;
+  fra.me.line = 374;
   fra.me.meth = LOCATE_standard___collection___array___Array___intern_items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2089,14 +2091,14 @@ val_t standard___collection___array___Array___intern_items(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:373 */
+  /* ../lib/standard/collection/array.nit:374 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ../lib/standard/collection/array.nit:375 */
+  /* ../lib/standard/collection/array.nit:376 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 375);
+    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 376);
   }
   goto label1;
   label1: while(0);
@@ -2113,7 +2115,7 @@ void standard___collection___array___Array___sort(val_t p0, struct stack_frame_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 380;
+  fra.me.line = 381;
   fra.me.meth = LOCATE_standard___collection___array___Array___sort;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2123,7 +2125,7 @@ void standard___collection___array___Array___sort(val_t p0, struct stack_frame_t
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
-  /* ../lib/standard/collection/array.nit:384 */
+  /* ../lib/standard/collection/array.nit:385 */
   REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -2132,9 +2134,9 @@ void standard___collection___array___Array___sort(val_t p0, struct stack_frame_t
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:384 */
+  /* ../lib/standard/collection/array.nit:385 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
   CALL_standard___collection___array___Array___sub_sort(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2, (&(fra.me)), ((fun_t)OC_standard___collection___array___Array___sort_1));
   switch ((&(fra.me))->has_broke) {
@@ -2149,10 +2151,10 @@ void standard___collection___array___Array___sort(val_t p0, struct stack_frame_t
     struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
     val_t REGB0;
     val_t tmp;
-    /* ../lib/standard/collection/array.nit:384 */
+    /* ../lib/standard/collection/array.nit:385 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___array;
-    fra.me.line = 384;
+    fra.me.line = 385;
     fra.me.meth = LOCATE_standard___collection___array___Array___sort;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
@@ -2185,7 +2187,7 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 387;
+  fra.me.line = 388;
   fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2205,44 +2207,44 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:391 */
+  /* ../lib/standard/collection/array.nit:392 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:392 */
+    /* ../lib/standard/collection/array.nit:393 */
     goto label1;
   } else {
-    /* ../lib/standard/collection/array.nit:393 */
+    /* ../lib/standard/collection/array.nit:394 */
     REGB2 = TAG_Int(7);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:393 */
+    /* ../lib/standard/collection/array.nit:394 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[1] = fra.me.REG[0];
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -2250,72 +2252,72 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
       REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label2;
       label2: while(0);
-      /* ../lib/standard/collection/array.nit:395 */
-      REGB2 = REGB0;
       /* ../lib/standard/collection/array.nit:396 */
-      REGB3 = REGB1;
+      REGB2 = REGB0;
       /* ../lib/standard/collection/array.nit:397 */
+      REGB3 = REGB1;
+      /* ../lib/standard/collection/array.nit:398 */
       while(1) {
         REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:397 */
+        /* ../lib/standard/collection/array.nit:398 */
         if (UNTAG_Bool(REGB4)) {
-          /* ../lib/standard/collection/array.nit:398 */
+          /* ../lib/standard/collection/array.nit:399 */
           while(1) {
             REGB4 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB4)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:234 */
+            /* ../lib/standard/kernel.nit:241 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:398 */
+            /* ../lib/standard/collection/array.nit:399 */
             if (UNTAG_Bool(REGB4)) {
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[2] = fra.me.REG[0];
               REGB4 = REGB2;
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB5 = TAG_Int(0);
               REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB6)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB5)) {
                REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB5)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -2323,29 +2325,29 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB6 = TAG_Bool(0);
                REGB5 = REGB6;
               }
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
               REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
               if (UNTAG_Bool(REGB5)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label3;
               label3: while(0);
-              /* ../lib/standard/collection/array.nit:398 */
+              /* ../lib/standard/collection/array.nit:399 */
               REGB4 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[2], fra.me.REG[1]);
               if (closctx_param->has_broke) {
                goto label1;
@@ -2356,53 +2358,53 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:234 */
+              /* ../lib/standard/kernel.nit:241 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB5));
             } else {
-              /* ../lib/standard/collection/array.nit:398 */
+              /* ../lib/standard/collection/array.nit:399 */
               REGB4 = TAG_Bool(0);
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
               REGB5 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:398 */
+              /* ../lib/standard/collection/array.nit:399 */
               REGB2 = REGB5;
             } else {
               goto label4;
             }
           }
           label4: while(0);
-          /* ../lib/standard/collection/array.nit:399 */
+          /* ../lib/standard/collection/array.nit:400 */
           while(1) {
             REGB5 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB5)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:237 */
+            /* ../lib/standard/kernel.nit:244 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:399 */
+            /* ../lib/standard/collection/array.nit:400 */
             if (UNTAG_Bool(REGB5)) {
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[2] = fra.me.REG[0];
               REGB5 = REGB3;
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB4 = TAG_Int(0);
               REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB6)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB4)) {
                REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -2410,29 +2412,29 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB6 = TAG_Bool(0);
                REGB4 = REGB6;
               }
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
               REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label5;
               label5: while(0);
-              /* ../lib/standard/collection/array.nit:399 */
+              /* ../lib/standard/collection/array.nit:400 */
               REGB5 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[2], fra.me.REG[1]);
               if (closctx_param->has_broke) {
                goto label1;
@@ -2443,18 +2445,18 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
             } else {
-              /* ../lib/standard/collection/array.nit:399 */
+              /* ../lib/standard/collection/array.nit:400 */
               REGB5 = TAG_Bool(0);
               REGB4 = REGB5;
             }
             if (UNTAG_Bool(REGB4)) {
               REGB4 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:240 */
+              /* ../lib/standard/kernel.nit:247 */
               REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:399 */
+              /* ../lib/standard/collection/array.nit:400 */
               REGB3 = REGB4;
             } else {
               goto label6;
@@ -2466,28 +2468,28 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:237 */
+          /* ../lib/standard/kernel.nit:244 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:400 */
+          /* ../lib/standard/collection/array.nit:401 */
           if (UNTAG_Bool(REGB4)) {
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[2] = fra.me.REG[0];
             REGB4 = REGB2;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB5 = TAG_Int(0);
             REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB6)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB5)) {
               REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
               REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -2495,46 +2497,46 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB6 = TAG_Bool(0);
               REGB5 = REGB6;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
             REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label7;
             label7: while(0);
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[3] = fra.me.REG[0];
             REGB4 = REGB3;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB5 = TAG_Int(0);
             REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB6)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB5)) {
               REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
               REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -2542,60 +2544,60 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB6 = TAG_Bool(0);
               REGB5 = REGB6;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
             REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label8;
             label8: while(0);
-            /* ../lib/standard/collection/array.nit:402 */
-            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[3]);
             /* ../lib/standard/collection/array.nit:403 */
+            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[3]);
+            /* ../lib/standard/collection/array.nit:404 */
             CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[2]);
           }
         } else {
-          /* ../lib/standard/collection/array.nit:397 */
+          /* ../lib/standard/collection/array.nit:398 */
           goto label9;
         }
       }
       label9: while(0);
-      /* ../lib/standard/collection/array.nit:406 */
+      /* ../lib/standard/collection/array.nit:407 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[2] = fra.me.REG[0];
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -2603,39 +2605,39 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label10;
       label10: while(0);
-      /* ../lib/standard/collection/array.nit:406 */
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
       /* ../lib/standard/collection/array.nit:407 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
+      /* ../lib/standard/collection/array.nit:408 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:407 */
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[1]);
       /* ../lib/standard/collection/array.nit:408 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[1]);
+      /* ../lib/standard/collection/array.nit:409 */
       REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
       CALL_standard___collection___array___Array___sub_sort(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3, (&(fra.me)), ((fun_t)OC_standard___collection___array___Array___sub_sort_11));
       switch ((&(fra.me))->has_broke) {
@@ -2648,37 +2650,37 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
         case 1: (&(fra.me))->has_broke = 0; goto label1;
       }
     } else {
-      /* ../lib/standard/collection/array.nit:412 */
+      /* ../lib/standard/collection/array.nit:413 */
       while(1) {
         REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB2)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:412 */
+        /* ../lib/standard/collection/array.nit:413 */
         if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:413 */
+          /* ../lib/standard/collection/array.nit:414 */
           REGB2 = REGB0;
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[1] = fra.me.REG[0];
           REGB3 = REGB0;
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Int(0);
           REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB5)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB4)) {
             REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
             REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -2686,59 +2688,59 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB5 = TAG_Bool(0);
             REGB4 = REGB5;
           }
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
           REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB3)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label15;
           label15: while(0);
-          /* ../lib/standard/collection/array.nit:415 */
-          REGB3 = REGB0;
           /* ../lib/standard/collection/array.nit:416 */
+          REGB3 = REGB0;
+          /* ../lib/standard/collection/array.nit:417 */
           while(1) {
             REGB4 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB4)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:234 */
+            /* ../lib/standard/kernel.nit:241 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:416 */
+            /* ../lib/standard/collection/array.nit:417 */
             if (UNTAG_Bool(REGB4)) {
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               fra.me.REG[2] = fra.me.REG[0];
               REGB4 = REGB3;
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB5 = TAG_Int(0);
               REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB6)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB5)) {
                REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB5)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -2746,29 +2748,29 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB6 = TAG_Bool(0);
                REGB5 = REGB6;
               }
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
               REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
               if (UNTAG_Bool(REGB5)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label16;
               label16: while(0);
-              /* ../lib/standard/collection/array.nit:417 */
+              /* ../lib/standard/collection/array.nit:418 */
               REGB4 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[1], fra.me.REG[2]);
               if (closctx_param->has_broke) {
                goto label1;
@@ -2779,30 +2781,30 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:237 */
+              /* ../lib/standard/kernel.nit:244 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:417 */
+              /* ../lib/standard/collection/array.nit:418 */
               if (UNTAG_Bool(REGB5)) {
-               /* ../lib/standard/collection/array.nit:418 */
+               /* ../lib/standard/collection/array.nit:419 */
                REGB2 = REGB3;
-               /* ../lib/standard/collection/array.nit:278 */
+               /* ../lib/standard/collection/array.nit:279 */
                fra.me.REG[2] = fra.me.REG[0];
                REGB5 = REGB3;
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB4 = TAG_Int(0);
                REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
                if (UNTAG_Bool(REGB6)) {
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:236 */
+               /* ../lib/standard/kernel.nit:243 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                if (UNTAG_Bool(REGB4)) {
                REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
                REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -2810,72 +2812,72 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
                } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB6 = TAG_Bool(0);
                REGB4 = REGB6;
                }
                if (UNTAG_Bool(REGB4)) {
                } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
                }
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
                REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-               /* ../lib/standard/collection/array.nit:281 */
+               /* ../lib/standard/collection/array.nit:282 */
                goto label17;
                label17: while(0);
-               /* ../lib/standard/collection/array.nit:419 */
+               /* ../lib/standard/collection/array.nit:420 */
                fra.me.REG[1] = fra.me.REG[2];
               }
-              /* ../lib/standard/collection/array.nit:421 */
+              /* ../lib/standard/collection/array.nit:422 */
               REGB5 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:421 */
+              /* ../lib/standard/collection/array.nit:422 */
               REGB3 = REGB5;
             } else {
-              /* ../lib/standard/collection/array.nit:416 */
+              /* ../lib/standard/collection/array.nit:417 */
               goto label18;
             }
           }
           label18: while(0);
-          /* ../lib/standard/collection/array.nit:423 */
+          /* ../lib/standard/collection/array.nit:424 */
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ../lib/standard/kernel.nit:230 */
+            /* ../lib/standard/kernel.nit:237 */
             REGB5 = TAG_Bool((REGB2)==(REGB0));
-            /* ../lib/standard/collection/array.nit:423 */
+            /* ../lib/standard/collection/array.nit:424 */
             REGB3 = REGB5;
           }
           REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
           if (UNTAG_Bool(REGB3)) {
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[2] = fra.me.REG[0];
             REGB3 = REGB0;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB5 = TAG_Int(0);
             REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB4)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB5)) {
               REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
               REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -2883,41 +2885,41 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB4 = TAG_Bool(0);
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
             REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label19;
             label19: while(0);
-            /* ../lib/standard/collection/array.nit:424 */
-            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
             /* ../lib/standard/collection/array.nit:425 */
+            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
+            /* ../lib/standard/collection/array.nit:426 */
             CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
           }
-          /* ../lib/standard/collection/array.nit:427 */
+          /* ../lib/standard/collection/array.nit:428 */
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:427 */
+          /* ../lib/standard/collection/array.nit:428 */
           REGB0 = REGB2;
         } else {
-          /* ../lib/standard/collection/array.nit:412 */
+          /* ../lib/standard/collection/array.nit:413 */
           goto label20;
         }
       }
@@ -2932,10 +2934,10 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
         struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
         val_t REGB0;
         val_t tmp;
-        /* ../lib/standard/collection/array.nit:408 */
+        /* ../lib/standard/collection/array.nit:409 */
         fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
         fra.me.file = LOCATE_standard___collection___array;
-        fra.me.line = 408;
+        fra.me.line = 409;
         fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
         fra.me.has_broke = 0;
         fra.me.REG_size = 2;
@@ -2958,10 +2960,10 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
         struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
         val_t REGB0;
         val_t tmp;
-        /* ../lib/standard/collection/array.nit:409 */
+        /* ../lib/standard/collection/array.nit:410 */
         fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
         fra.me.file = LOCATE_standard___collection___array;
-        fra.me.line = 409;
+        fra.me.line = 410;
         fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
         fra.me.has_broke = 0;
         fra.me.REG_size = 2;
@@ -2987,7 +2989,7 @@ val_t standard___collection___array___ArrayIterator___item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 437;
+  fra.me.line = 438;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2995,17 +2997,17 @@ val_t standard___collection___array___ArrayIterator___item(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:437 */
+  /* ../lib/standard/collection/array.nit:438 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 437);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 438);
   }
   fra.me.REG[1] = ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 437);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 438);
   }
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -3023,24 +3025,24 @@ val_t standard___collection___array___ArrayIterator___is_ok(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 441;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:441 */
+  /* ../lib/standard/collection/array.nit:442 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 441);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 442);
   }
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 441);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 442);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3055,9 +3057,9 @@ val_t standard___collection___array___ArrayIterator___is_ok(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:441 */
+  /* ../lib/standard/collection/array.nit:442 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3071,19 +3073,19 @@ void standard___collection___array___ArrayIterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 443;
+  fra.me.line = 444;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:443 */
+  /* ../lib/standard/collection/array.nit:444 */
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:443 */
+  /* ../lib/standard/collection/array.nit:444 */
   ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   return;
@@ -3097,7 +3099,7 @@ void standard___collection___array___ArrayIterator___init(val_t p0, val_t p1, in
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 445;
+  fra.me.line = 446;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3106,9 +3108,9 @@ void standard___collection___array___ArrayIterator___init(val_t p0, val_t p1, in
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:447 */
-  ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/array.nit:448 */
+  ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/array.nit:449 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -3122,18 +3124,18 @@ val_t standard___collection___array___ArrayIterator___index(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 451;
+  fra.me.line = 452;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:451 */
+  /* ../lib/standard/collection/array.nit:452 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 451);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 452);
   }
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3146,7 +3148,7 @@ val_t standard___collection___array___ArraySet___has(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 464;
+  fra.me.line = 465;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3155,11 +3157,11 @@ val_t standard___collection___array___ArraySet___has(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:464 */
+  /* ../lib/standard/collection/array.nit:465 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 464);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 465);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -3175,7 +3177,7 @@ void standard___collection___array___ArraySet___add(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 466;
+  fra.me.line = 467;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3185,11 +3187,11 @@ void standard___collection___array___ArraySet___add(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:466 */
+  /* ../lib/standard/collection/array.nit:467 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 466);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 467);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
@@ -3198,7 +3200,7 @@ void standard___collection___array___ArraySet___add(val_t p0, val_t p1){
     REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 466);
+      nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 467);
     }
     fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -3213,18 +3215,18 @@ val_t standard___collection___array___ArraySet___is_empty(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 468;
+  fra.me.line = 469;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:468 */
+  /* ../lib/standard/collection/array.nit:469 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 468);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 469);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
@@ -3240,18 +3242,18 @@ val_t standard___collection___array___ArraySet___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 470;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:470 */
+  /* ../lib/standard/collection/array.nit:471 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 470);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 471);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3261,7 +3263,7 @@ val_t standard___collection___array___ArraySet___length(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:470 */
+  /* ../lib/standard/collection/array.nit:471 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3276,7 +3278,7 @@ val_t standard___collection___array___ArraySet___first(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 472;
+  fra.me.line = 473;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3284,11 +3286,11 @@ val_t standard___collection___array___ArraySet___first(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:474 */
+  /* ../lib/standard/collection/array.nit:475 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 474);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 475);
   }
   fra.me.REG[1] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3298,25 +3300,25 @@ val_t standard___collection___array___ArraySet___first(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:474 */
+  /* ../lib/standard/collection/array.nit:475 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:474 */
+  /* ../lib/standard/collection/array.nit:475 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___array, 474);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___array, 475);
   }
-  /* ../lib/standard/collection/array.nit:475 */
+  /* ../lib/standard/collection/array.nit:476 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 475);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 476);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
@@ -3334,7 +3336,7 @@ void standard___collection___array___ArraySet___remove(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 478;
+  fra.me.line = 479;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3344,24 +3346,24 @@ void standard___collection___array___ArraySet___remove(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:480 */
+  /* ../lib/standard/collection/array.nit:481 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 480);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 481);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:481 */
+  /* ../lib/standard/collection/array.nit:482 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:481 */
+  /* ../lib/standard/collection/array.nit:482 */
   if (UNTAG_Bool(REGB1)) {
     CALL_standard___collection___array___ArraySet___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
   }
@@ -3374,7 +3376,7 @@ void standard___collection___array___ArraySet___remove_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 484;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3383,7 +3385,7 @@ void standard___collection___array___ArraySet___remove_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:484 */
+  /* ../lib/standard/collection/array.nit:485 */
   CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -3395,18 +3397,18 @@ void standard___collection___array___ArraySet___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 486;
+  fra.me.line = 487;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:486 */
+  /* ../lib/standard/collection/array.nit:487 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 486);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 487);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[0])(fra.me.REG[0]);
@@ -3420,18 +3422,18 @@ val_t standard___collection___array___ArraySet___iterator(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 488;
+  fra.me.line = 489;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:488 */
+  /* ../lib/standard/collection/array.nit:489 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 488);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 489);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
@@ -3449,7 +3451,7 @@ void standard___collection___array___ArraySet___enlarge(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 490;
+  fra.me.line = 491;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -3457,11 +3459,11 @@ void standard___collection___array___ArraySet___enlarge(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:491 */
+  /* ../lib/standard/collection/array.nit:492 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 491);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 492);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB0);
@@ -3476,7 +3478,7 @@ void standard___collection___array___ArraySet___remove_at(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 493;
+  fra.me.line = 494;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3486,26 +3488,26 @@ void standard___collection___array___ArraySet___remove_at(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:495 */
+  /* ../lib/standard/collection/array.nit:496 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 495);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 496);
   }
   fra.me.REG[1] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 495);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 496);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:496 */
+  /* ../lib/standard/collection/array.nit:497 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 496);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 497);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
@@ -3520,7 +3522,7 @@ void standard___collection___array___ArraySet___init(val_t p0, int* init_table){
   if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 499;
+  fra.me.line = 500;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3528,7 +3530,7 @@ void standard___collection___array___ArraySet___init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:500 */
+  /* ../lib/standard/collection/array.nit:501 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -3544,7 +3546,7 @@ void standard___collection___array___ArraySet___with_capacity(val_t p0, val_t p1
   if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 502;
+  fra.me.line = 503;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3553,7 +3555,7 @@ void standard___collection___array___ArraySet___with_capacity(val_t p0, val_t p1
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:503 */
+  /* ../lib/standard/collection/array.nit:504 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -3567,18 +3569,18 @@ val_t standard___collection___array___ArraySetIterator___is_ok(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 510;
+  fra.me.line = 511;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:510 */
+  /* ../lib/standard/collection/array.nit:511 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 510);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 511);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
@@ -3594,18 +3596,18 @@ void standard___collection___array___ArraySetIterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 512;
+  fra.me.line = 513;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:512 */
+  /* ../lib/standard/collection/array.nit:513 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 512);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 513);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
@@ -3619,18 +3621,18 @@ val_t standard___collection___array___ArraySetIterator___item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 514;
+  fra.me.line = 515;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:514 */
+  /* ../lib/standard/collection/array.nit:515 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 514);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 515);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
@@ -3647,7 +3649,7 @@ void standard___collection___array___ArraySetIterator___init(val_t p0, val_t p1,
   if (init_table[itpos10]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 516;
+  fra.me.line = 517;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3656,7 +3658,7 @@ void standard___collection___array___ArraySetIterator___init(val_t p0, val_t p1,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:516 */
+  /* ../lib/standard/collection/array.nit:517 */
   ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos10] = 1;
@@ -3671,7 +3673,7 @@ val_t standard___collection___array___ArrayMap_____bra(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 526;
+  fra.me.line = 527;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3680,41 +3682,41 @@ val_t standard___collection___array___ArrayMap_____bra(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:529 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:530 */
+  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:531 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:530 */
+  /* ../lib/standard/collection/array.nit:531 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:531 */
+    /* ../lib/standard/collection/array.nit:532 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 531);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 532);
     }
     fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -3722,38 +3724,38 @@ val_t standard___collection___array___ArrayMap_____bra(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label1;
     label1: while(0);
-    /* ../lib/standard/collection/array.nit:531 */
+    /* ../lib/standard/collection/array.nit:532 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 531);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 532);
     }
     fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[0])(fra.me.REG[0]);
     goto label2;
   } else {
-    /* ../lib/standard/collection/array.nit:533 */
-    nit_abort("Aborted", NULL, LOCATE_standard___collection___array, 533);
+    /* ../lib/standard/collection/array.nit:534 */
+    nit_abort("Aborted", NULL, LOCATE_standard___collection___array, 534);
   }
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -3768,7 +3770,7 @@ void standard___collection___array___ArrayMap_____braeq(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 537;
+  fra.me.line = 538;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3780,41 +3782,41 @@ void standard___collection___array___ArrayMap_____braeq(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ../lib/standard/collection/array.nit:540 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:541 */
+  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:542 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:541 */
+  /* ../lib/standard/collection/array.nit:542 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:542 */
+    /* ../lib/standard/collection/array.nit:543 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 542);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 543);
     }
     fra.me.REG[3] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -3822,40 +3824,40 @@ void standard___collection___array___ArrayMap_____braeq(val_t p0, val_t p1, val_
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label1;
     label1: while(0);
-    /* ../lib/standard/collection/array.nit:542 */
+    /* ../lib/standard/collection/array.nit:543 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 542);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 543);
     }
     CALL_standard___collection___abstract_collection___Couple___second__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   } else {
-    /* ../lib/standard/collection/array.nit:544 */
+    /* ../lib/standard/collection/array.nit:545 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 544);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 545);
     }
     fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
     fra.me.REG[2] = NEW_Couple_standard___collection___abstract_collection___Couple___init(fra.me.REG[1], fra.me.REG[2]);
@@ -3871,18 +3873,18 @@ val_t standard___collection___array___ArrayMap___keys(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 548;
+  fra.me.line = 549;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___keys;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:548 */
+  /* ../lib/standard/collection/array.nit:549 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_standard___collection___array, 548);
+    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_standard___collection___array, 549);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3894,7 +3896,7 @@ void standard___collection___array___ArrayMap___keys__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 548;
+  fra.me.line = 549;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___keys__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3903,7 +3905,7 @@ void standard___collection___array___ArrayMap___keys__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:548 */
+  /* ../lib/standard/collection/array.nit:549 */
   ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -3915,18 +3917,18 @@ val_t standard___collection___array___ArrayMap___values(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 549;
+  fra.me.line = 550;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___values;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:549 */
+  /* ../lib/standard/collection/array.nit:550 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@values", LOCATE_standard___collection___array, 549);
+    nit_abort("Uninitialized attribute %s", "@values", LOCATE_standard___collection___array, 550);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3938,7 +3940,7 @@ void standard___collection___array___ArrayMap___values__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 549;
+  fra.me.line = 550;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___values__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3947,7 +3949,7 @@ void standard___collection___array___ArrayMap___values__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:549 */
+  /* ../lib/standard/collection/array.nit:550 */
   ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -3959,18 +3961,18 @@ val_t standard___collection___array___ArrayMap___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 551;
+  fra.me.line = 552;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:552 */
+  /* ../lib/standard/collection/array.nit:553 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 552);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 553);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3980,7 +3982,7 @@ val_t standard___collection___array___ArrayMap___length(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:552 */
+  /* ../lib/standard/collection/array.nit:553 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3993,18 +3995,18 @@ val_t standard___collection___array___ArrayMap___iterator(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 554;
+  fra.me.line = 555;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:554 */
+  /* ../lib/standard/collection/array.nit:555 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 554);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 555);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
@@ -4021,18 +4023,18 @@ val_t standard___collection___array___ArrayMap___is_empty(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 556;
+  fra.me.line = 557;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:556 */
+  /* ../lib/standard/collection/array.nit:557 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 556);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 557);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
@@ -4048,18 +4050,18 @@ void standard___collection___array___ArrayMap___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 558;
+  fra.me.line = 559;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:558 */
+  /* ../lib/standard/collection/array.nit:559 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 558);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 559);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[0])(fra.me.REG[0]);
@@ -4074,7 +4076,7 @@ void standard___collection___array___ArrayMap___enlarge(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 560;
+  fra.me.line = 561;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4082,11 +4084,11 @@ void standard___collection___array___ArrayMap___enlarge(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:561 */
+  /* ../lib/standard/collection/array.nit:562 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 561);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 562);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB0);
@@ -4102,7 +4104,7 @@ val_t standard___collection___array___ArrayMap___couple_at(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 563;
+  fra.me.line = 564;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___couple_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4111,41 +4113,41 @@ val_t standard___collection___array___ArrayMap___couple_at(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:565 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:566 */
+  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:567 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:566 */
+  /* ../lib/standard/collection/array.nit:567 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:567 */
+    /* ../lib/standard/collection/array.nit:568 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 567);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 568);
     }
     fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -4153,32 +4155,32 @@ val_t standard___collection___array___ArrayMap___couple_at(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label1;
     label1: while(0);
-    /* ../lib/standard/collection/array.nit:567 */
+    /* ../lib/standard/collection/array.nit:568 */
     goto label2;
   } else {
-    /* ../lib/standard/collection/array.nit:569 */
+    /* ../lib/standard/collection/array.nit:570 */
     fra.me.REG[0] = NIT_NULL;
     goto label2;
   }
@@ -4194,7 +4196,7 @@ void standard___collection___array___ArrayMap___remove_at_index(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 576;
+  fra.me.line = 577;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___remove_at_index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4204,26 +4206,26 @@ void standard___collection___array___ArrayMap___remove_at_index(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:579 */
+  /* ../lib/standard/collection/array.nit:580 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 579);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 580);
   }
   fra.me.REG[1] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 579);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 580);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:580 */
+  /* ../lib/standard/collection/array.nit:581 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 580);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 581);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
@@ -4241,7 +4243,7 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 586;
+  fra.me.line = 587;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4251,18 +4253,18 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:590 */
+  /* ../lib/standard/collection/array.nit:591 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_last_index", LOCATE_standard___collection___array, 590);
+    nit_abort("Uninitialized attribute %s", "_last_index", LOCATE_standard___collection___array, 591);
   }
   REGB0 = ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:591 */
+  /* ../lib/standard/collection/array.nit:592 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 591);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 592);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -4277,33 +4279,33 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:591 */
+  /* ../lib/standard/collection/array.nit:592 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 591);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 592);
     }
     fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:278 */
+    /* ../lib/standard/collection/array.nit:279 */
     REGB1 = REGB0;
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Int(0);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -4311,32 +4313,32 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Bool(0);
       REGB2 = REGB3;
     }
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label1;
     label1: while(0);
-    /* ../lib/standard/collection/array.nit:591 */
+    /* ../lib/standard/collection/array.nit:592 */
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 591);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 592);
     }
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
@@ -4358,14 +4360,14 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB1)) {
     goto label2;
   }
-  /* ../lib/standard/collection/array.nit:593 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:594 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:595 */
   while(1) {
     REGB2 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 594);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 595);
     }
     fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
     /* ../lib/standard/collection/array.nit:24 */
@@ -4380,34 +4382,34 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:594 */
+    /* ../lib/standard/collection/array.nit:595 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:595 */
+      /* ../lib/standard/collection/array.nit:596 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 595);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 596);
       }
       fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB2 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -4415,32 +4417,32 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label3;
       label3: while(0);
-      /* ../lib/standard/collection/array.nit:595 */
+      /* ../lib/standard/collection/array.nit:596 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 595);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 596);
       }
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[2])(fra.me.REG[2]);
       REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
@@ -4456,29 +4458,29 @@ val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
         }
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/collection/array.nit:596 */
-        ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB1;
         /* ../lib/standard/collection/array.nit:597 */
+        ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB1;
+        /* ../lib/standard/collection/array.nit:598 */
         REGB0 = REGB1;
         goto label2;
       }
-      /* ../lib/standard/collection/array.nit:599 */
+      /* ../lib/standard/collection/array.nit:600 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:599 */
+      /* ../lib/standard/collection/array.nit:600 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:594 */
+      /* ../lib/standard/collection/array.nit:595 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ../lib/standard/collection/array.nit:601 */
+  /* ../lib/standard/collection/array.nit:602 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:601 */
+  /* ../lib/standard/collection/array.nit:602 */
   REGB0 = REGB1;
   goto label2;
   label2: while(0);
@@ -4493,7 +4495,7 @@ void standard___collection___array___ArrayMap___init(val_t p0, int* init_table){
   if (init_table[itpos11]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 604;
+  fra.me.line = 605;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4501,7 +4503,7 @@ void standard___collection___array___ArrayMap___init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:607 */
+  /* ../lib/standard/collection/array.nit:608 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -4515,18 +4517,18 @@ val_t standard___collection___array___ArrayMapKeys___map(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 613;
+  fra.me.line = 614;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___map;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:613 */
+  /* ../lib/standard/collection/array.nit:614 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 613);
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 614);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -4538,7 +4540,7 @@ void standard___collection___array___ArrayMapKeys___map__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 613;
+  fra.me.line = 614;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___map__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4547,7 +4549,7 @@ void standard___collection___array___ArrayMapKeys___map__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:613 */
+  /* ../lib/standard/collection/array.nit:614 */
   ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -4560,7 +4562,7 @@ val_t standard___collection___array___ArrayMapKeys___count(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 615;
+  fra.me.line = 616;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4569,7 +4571,7 @@ val_t standard___collection___array___ArrayMapKeys___count(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:615 */
+  /* ../lib/standard/collection/array.nit:616 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Int(1);
@@ -4590,25 +4592,25 @@ val_t standard___collection___array___ArrayMapKeys___first(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 616;
+  fra.me.line = 617;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:616 */
+  /* ../lib/standard/collection/array.nit:617 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 616);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 617);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 616);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 617);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4625,7 +4627,7 @@ val_t standard___collection___array___ArrayMapKeys___has(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 617;
+  fra.me.line = 618;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4634,7 +4636,7 @@ val_t standard___collection___array___ArrayMapKeys___has(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:617 */
+  /* ../lib/standard/collection/array.nit:618 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB1 = TAG_Int(0);
@@ -4643,9 +4645,9 @@ val_t standard___collection___array___ArrayMapKeys___has(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:617 */
+  /* ../lib/standard/collection/array.nit:618 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -4660,7 +4662,7 @@ val_t standard___collection___array___ArrayMapKeys___has_only(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 618;
+  fra.me.line = 619;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4669,7 +4671,7 @@ val_t standard___collection___array___ArrayMapKeys___has_only(val_t p0, val_t p1
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:618 */
+  /* ../lib/standard/collection/array.nit:619 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
@@ -4677,9 +4679,9 @@ val_t standard___collection___array___ArrayMapKeys___has_only(val_t p0, val_t p1
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
-      /* ../lib/standard/collection/array.nit:618 */
+      /* ../lib/standard/collection/array.nit:619 */
       REGB2 = REGB1;
     }
   } else {
@@ -4704,14 +4706,14 @@ val_t standard___collection___array___ArrayMapKeys___is_empty(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 619;
+  fra.me.line = 620;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:619 */
+  /* ../lib/standard/collection/array.nit:620 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4726,14 +4728,14 @@ val_t standard___collection___array___ArrayMapKeys___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 620;
+  fra.me.line = 621;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:620 */
+  /* ../lib/standard/collection/array.nit:621 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4747,14 +4749,14 @@ val_t standard___collection___array___ArrayMapKeys___iterator(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 621;
+  fra.me.line = 622;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:621 */
+  /* ../lib/standard/collection/array.nit:622 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(fra.me.REG[0]);
@@ -4769,14 +4771,14 @@ void standard___collection___array___ArrayMapKeys___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 622;
+  fra.me.line = 623;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:622 */
+  /* ../lib/standard/collection/array.nit:623 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map___clear(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -4791,7 +4793,7 @@ void standard___collection___array___ArrayMapKeys___remove(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 623;
+  fra.me.line = 624;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4801,19 +4803,19 @@ void standard___collection___array___ArrayMapKeys___remove(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:625 */
+  /* ../lib/standard/collection/array.nit:626 */
   fra.me.REG[2] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:626 */
+  /* ../lib/standard/collection/array.nit:627 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:626 */
+  /* ../lib/standard/collection/array.nit:627 */
   if (UNTAG_Bool(REGB1)) {
     fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB0);
@@ -4827,7 +4829,7 @@ void standard___collection___array___ArrayMapKeys___remove_all(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 628;
+  fra.me.line = 629;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4836,7 +4838,7 @@ void standard___collection___array___ArrayMapKeys___remove_all(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:628 */
+  /* ../lib/standard/collection/array.nit:629 */
   CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -4870,18 +4872,18 @@ val_t standard___collection___array___ArrayMapValues___map(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 633;
+  fra.me.line = 634;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___map;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:633 */
+  /* ../lib/standard/collection/array.nit:634 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 633);
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 634);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -4893,7 +4895,7 @@ void standard___collection___array___ArrayMapValues___map__eq(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 633;
+  fra.me.line = 634;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___map__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4902,7 +4904,7 @@ void standard___collection___array___ArrayMapValues___map__eq(val_t p0, val_t p1
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:633 */
+  /* ../lib/standard/collection/array.nit:634 */
   ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -4914,25 +4916,25 @@ val_t standard___collection___array___ArrayMapValues___first(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 635;
+  fra.me.line = 636;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:635 */
+  /* ../lib/standard/collection/array.nit:636 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 635);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 636);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 635);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 636);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4947,14 +4949,14 @@ val_t standard___collection___array___ArrayMapValues___is_empty(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 636;
+  fra.me.line = 637;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:636 */
+  /* ../lib/standard/collection/array.nit:637 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4969,14 +4971,14 @@ val_t standard___collection___array___ArrayMapValues___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 637;
+  fra.me.line = 638;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:637 */
+  /* ../lib/standard/collection/array.nit:638 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4990,14 +4992,14 @@ val_t standard___collection___array___ArrayMapValues___iterator(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 638;
+  fra.me.line = 639;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:638 */
+  /* ../lib/standard/collection/array.nit:639 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(fra.me.REG[0]);
@@ -5015,7 +5017,7 @@ val_t standard___collection___array___ArrayMapValues___has(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 640;
+  fra.me.line = 641;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5026,26 +5028,26 @@ val_t standard___collection___array___ArrayMapValues___has(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:643 */
+  /* ../lib/standard/collection/array.nit:644 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 643);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 644);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -5059,18 +5061,18 @@ val_t standard___collection___array___ArrayMapValues___has(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:643 */
+      /* ../lib/standard/collection/array.nit:644 */
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
       REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB1)) {
@@ -5088,19 +5090,19 @@ val_t standard___collection___array___ArrayMapValues___has(val_t p0, val_t p1){
         REGB1 = TAG_Bool(1);
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/collection/array.nit:644 */
+  /* ../lib/standard/collection/array.nit:645 */
   REGB0 = TAG_Bool(0);
   REGB1 = REGB0;
   goto label1;
@@ -5117,7 +5119,7 @@ val_t standard___collection___array___ArrayMapValues___has_only(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 647;
+  fra.me.line = 648;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5128,26 +5130,26 @@ val_t standard___collection___array___ArrayMapValues___has_only(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:650 */
+  /* ../lib/standard/collection/array.nit:651 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 650);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 651);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -5161,18 +5163,18 @@ val_t standard___collection___array___ArrayMapValues___has_only(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:650 */
+      /* ../lib/standard/collection/array.nit:651 */
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
       REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB1)) {
@@ -5191,19 +5193,19 @@ val_t standard___collection___array___ArrayMapValues___has_only(val_t p0, val_t
         REGB1 = TAG_Bool(0);
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/collection/array.nit:651 */
+  /* ../lib/standard/collection/array.nit:652 */
   REGB0 = TAG_Bool(1);
   REGB1 = REGB0;
   goto label1;
@@ -5221,7 +5223,7 @@ val_t standard___collection___array___ArrayMapValues___count(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 654;
+  fra.me.line = 655;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5232,28 +5234,28 @@ val_t standard___collection___array___ArrayMapValues___count(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:657 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:658 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:659 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 658);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 659);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -5267,18 +5269,18 @@ val_t standard___collection___array___ArrayMapValues___count(val_t p0, val_t p1)
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-      /* ../lib/standard/collection/array.nit:658 */
+      /* ../lib/standard/collection/array.nit:659 */
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
@@ -5294,24 +5296,24 @@ val_t standard___collection___array___ArrayMapValues___count(val_t p0, val_t p1)
       }
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:658 */
+        /* ../lib/standard/collection/array.nit:659 */
         REGB0 = REGB2;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/collection/array.nit:659 */
+  /* ../lib/standard/collection/array.nit:660 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -5323,14 +5325,14 @@ void standard___collection___array___ArrayMapValues___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 662;
+  fra.me.line = 663;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:662 */
+  /* ../lib/standard/collection/array.nit:663 */
   fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map___clear(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -5346,7 +5348,7 @@ void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 664;
+  fra.me.line = 665;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5356,13 +5358,13 @@ void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1)
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:666 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:667 */
+  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:668 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 667);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 668);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -5372,11 +5374,11 @@ void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1)
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:667 */
+  /* ../lib/standard/collection/array.nit:668 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:668 */
+  /* ../lib/standard/collection/array.nit:669 */
   while(1) {
     REGB0 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5384,34 +5386,34 @@ void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1)
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:668 */
+    /* ../lib/standard/collection/array.nit:669 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:669 */
+      /* ../lib/standard/collection/array.nit:670 */
       REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 669);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 670);
       }
       fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -5419,32 +5421,32 @@ void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1)
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Bool(0);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
-      /* ../lib/standard/collection/array.nit:669 */
+      /* ../lib/standard/collection/array.nit:670 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 669);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 670);
       }
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
@@ -5460,19 +5462,19 @@ void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1)
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ../lib/standard/collection/array.nit:670 */
-        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
         /* ../lib/standard/collection/array.nit:671 */
+        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
+        /* ../lib/standard/collection/array.nit:672 */
         goto label2;
       }
-      /* ../lib/standard/collection/array.nit:673 */
+      /* ../lib/standard/collection/array.nit:674 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:673 */
+      /* ../lib/standard/collection/array.nit:674 */
       REGB1 = REGB0;
     } else {
-      /* ../lib/standard/collection/array.nit:668 */
+      /* ../lib/standard/collection/array.nit:669 */
       goto label3;
     }
   }
@@ -5491,7 +5493,7 @@ void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 677;
+  fra.me.line = 678;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5501,13 +5503,13 @@ void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:679 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:680 */
+  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:681 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 680);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 681);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -5517,11 +5519,11 @@ void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:680 */
+  /* ../lib/standard/collection/array.nit:681 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:681 */
+  /* ../lib/standard/collection/array.nit:682 */
   while(1) {
     REGB0 = TAG_Int(0);
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -5529,34 +5531,34 @@ void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:681 */
+    /* ../lib/standard/collection/array.nit:682 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:682 */
+      /* ../lib/standard/collection/array.nit:683 */
       REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 682);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 683);
       }
       fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -5564,32 +5566,32 @@ void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Bool(0);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
-      /* ../lib/standard/collection/array.nit:682 */
+      /* ../lib/standard/collection/array.nit:683 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 682);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 683);
       }
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
@@ -5605,17 +5607,17 @@ void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ../lib/standard/collection/array.nit:683 */
+        /* ../lib/standard/collection/array.nit:684 */
         CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
       }
-      /* ../lib/standard/collection/array.nit:685 */
+      /* ../lib/standard/collection/array.nit:686 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:685 */
+      /* ../lib/standard/collection/array.nit:686 */
       REGB1 = REGB0;
     } else {
-      /* ../lib/standard/collection/array.nit:681 */
+      /* ../lib/standard/collection/array.nit:682 */
       goto label2;
     }
   }
@@ -5652,7 +5654,7 @@ val_t standard___collection___array___Iterator___to_a(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 694;
+  fra.me.line = 695;
   fra.me.meth = LOCATE_standard___collection___array___Iterator___to_a;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5661,24 +5663,24 @@ val_t standard___collection___array___Iterator___to_a(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:697 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   /* ../lib/standard/collection/array.nit:698 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  /* ../lib/standard/collection/array.nit:699 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:699 */
+      /* ../lib/standard/collection/array.nit:700 */
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:700 */
+      /* ../lib/standard/collection/array.nit:701 */
       CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ../lib/standard/collection/array.nit:698 */
+      /* ../lib/standard/collection/array.nit:699 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/collection/array.nit:702 */
+  /* ../lib/standard/collection/array.nit:703 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -5690,14 +5692,14 @@ val_t standard___collection___array___Collection___to_a(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 707;
+  fra.me.line = 708;
   fra.me.meth = LOCATE_standard___collection___array___Collection___to_a;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:710 */
+  /* ../lib/standard/collection/array.nit:711 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___array___Iterator___to_a(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -5712,7 +5714,7 @@ val_t standard___collection___array___ArrayCapable___calloc_array(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 718;
+  fra.me.line = 719;
   fra.me.meth = LOCATE_standard___collection___array___ArrayCapable___calloc_array;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5720,7 +5722,7 @@ val_t standard___collection___array___ArrayCapable___calloc_array(val_t p0, val_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:718 */
+  /* ../lib/standard/collection/array.nit:719 */
   fra.me.REG[0] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -5732,7 +5734,7 @@ val_t standard___collection___array___NativeArray_____bra(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 724;
+  fra.me.line = 725;
   fra.me.meth = LOCATE_standard___collection___array___NativeArray_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5740,7 +5742,7 @@ val_t standard___collection___array___NativeArray_____bra(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -5752,7 +5754,7 @@ void standard___collection___array___NativeArray_____braeq(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 725;
+  fra.me.line = 726;
   fra.me.meth = LOCATE_standard___collection___array___NativeArray_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5762,7 +5764,7 @@ void standard___collection___array___NativeArray_____braeq(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   REGB0 = p1;
   fra.me.REG[1] = p2;
-  /* ../lib/standard/collection/array.nit:725 */
+  /* ../lib/standard/collection/array.nit:726 */
   ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -5774,7 +5776,7 @@ void standard___collection___array___NativeArray___copy_to(val_t p0, val_t p1, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 726;
+  fra.me.line = 727;
   fra.me.meth = LOCATE_standard___collection___array___NativeArray___copy_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5784,7 +5786,7 @@ void standard___collection___array___NativeArray___copy_to(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:726 */
+  /* ../lib/standard/collection/array.nit:727 */
   (void)memcpy(((Nit_NativeArray )fra.me.REG[1])->val, ((Nit_NativeArray)fra.me.REG[0])->val, UNTAG_Int(REGB0)*sizeof(val_t));
   stack_frame_head = fra.me.prev;
   return;
index 2a53901..d3d4436 100644 (file)
@@ -44,7 +44,7 @@ val_t standard___collection___hash_collection___HashCollection___index_at(val_t
     nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 39);
   }
   REGB1 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:243 */
+  /* ../lib/standard/kernel.nit:250 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)%UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:40 */
   REGB0 = TAG_Int(0);
@@ -53,11 +53,11 @@ val_t standard___collection___hash_collection___HashCollection___index_at(val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   /* ../lib/standard/collection/hash_collection.nit:40 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB1));
     /* ../lib/standard/collection/hash_collection.nit:40 */
     REGB1 = REGB0;
@@ -133,7 +133,7 @@ val_t standard___collection___hash_collection___HashCollection___node_at_idx(val
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 59);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
   /* ../lib/standard/collection/hash_collection.nit:60 */
   while(1) {
@@ -250,7 +250,7 @@ void standard___collection___hash_collection___HashCollection___store(val_t p0,
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 84);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
   /* ../lib/standard/collection/hash_collection.nit:85 */
   fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]);
@@ -258,7 +258,7 @@ void standard___collection___hash_collection___HashCollection___store(val_t p0,
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 85);
   }
-  /* ../lib/standard/collection/array.nit:725 */
+  /* ../lib/standard/collection/array.nit:726 */
   ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   /* ../lib/standard/collection/hash_collection.nit:86 */
   ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[1]) = fra.me.REG[2];
@@ -298,21 +298,21 @@ void standard___collection___hash_collection___HashCollection___store(val_t p0,
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
   /* ../lib/standard/collection/hash_collection.nit:94 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:94 */
   ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB1;
   /* ../lib/standard/collection/hash_collection.nit:95 */
   REGB1 = TAG_Int(5);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:95 */
   REGB2 = TAG_Int(3);
-  /* ../lib/standard/kernel.nit:241 */
+  /* ../lib/standard/kernel.nit:248 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
   /* ../lib/standard/collection/hash_collection.nit:95 */
   REGB1 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:242 */
+  /* ../lib/standard/kernel.nit:249 */
   REGB1 = TAG_Int(UNTAG_Int(REGB2)/UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:95 */
   REGB0 = REGB1;
@@ -328,13 +328,13 @@ void standard___collection___hash_collection___HashCollection___store(val_t p0,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:96 */
   if (UNTAG_Bool(REGB1)) {
     /* ../lib/standard/collection/hash_collection.nit:97 */
     REGB1 = TAG_Int(2);
-    /* ../lib/standard/kernel.nit:241 */
+    /* ../lib/standard/kernel.nit:248 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB1));
     /* ../lib/standard/collection/hash_collection.nit:97 */
     CALL_standard___collection___hash_collection___HashCollection___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
@@ -432,7 +432,7 @@ void standard___collection___hash_collection___HashCollection___remove_node(val_
   /* ../lib/standard/collection/hash_collection.nit:123 */
   REGB1 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
   /* ../lib/standard/collection/hash_collection.nit:123 */
   ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB2;
@@ -466,7 +466,7 @@ void standard___collection___hash_collection___HashCollection___remove_node(val_
     if (UNTAG_Bool(REGB2)) {
       nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 129);
     }
-    /* ../lib/standard/collection/array.nit:725 */
+    /* ../lib/standard/collection/array.nit:726 */
     ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)]=fra.me.REG[3];
   }
   /* ../lib/standard/collection/hash_collection.nit:131 */
@@ -518,7 +518,7 @@ void standard___collection___hash_collection___HashCollection___raz(val_t p0){
   }
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:142 */
   while(1) {
@@ -528,7 +528,7 @@ void standard___collection___hash_collection___HashCollection___raz(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* ../lib/standard/collection/hash_collection.nit:142 */
     if (UNTAG_Bool(REGB0)) {
@@ -538,11 +538,11 @@ void standard___collection___hash_collection___HashCollection___raz(val_t p0){
       if (UNTAG_Bool(REGB0)) {
         nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 143);
       }
-      /* ../lib/standard/collection/array.nit:725 */
+      /* ../lib/standard/collection/array.nit:726 */
       ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)]=NIT_NULL;
       /* ../lib/standard/collection/hash_collection.nit:144 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ../lib/standard/collection/hash_collection.nit:144 */
       REGB1 = REGB0;
@@ -600,14 +600,14 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
   }
   REGB2 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
   REGB2 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
   /* ../lib/standard/collection/hash_collection.nit:157 */
   if (UNTAG_Bool(REGB3)) {
@@ -618,7 +618,7 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
     }
     REGB3 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
     /* ../lib/standard/collection/hash_collection.nit:157 */
     REGB0 = REGB2;
@@ -635,7 +635,7 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
   /* ../lib/standard/collection/hash_collection.nit:158 */
   if (UNTAG_Bool(REGB2)) {
@@ -645,13 +645,13 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
   ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
   /* ../lib/standard/collection/hash_collection.nit:160 */
   ATTR_standard___collection___hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = NIT_NULL;
-  /* ../lib/standard/collection/array.nit:718 */
+  /* ../lib/standard/collection/array.nit:719 */
   fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
   /* ../lib/standard/collection/hash_collection.nit:164 */
   ATTR_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
   /* ../lib/standard/collection/hash_collection.nit:167 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
   /* ../lib/standard/collection/hash_collection.nit:168 */
   while(1) {
@@ -661,15 +661,15 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
     /* ../lib/standard/collection/hash_collection.nit:168 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:725 */
+      /* ../lib/standard/collection/array.nit:726 */
       ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB2)]=NIT_NULL;
       /* ../lib/standard/collection/hash_collection.nit:170 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
       /* ../lib/standard/collection/hash_collection.nit:170 */
       REGB2 = REGB0;
@@ -691,7 +691,7 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:173 */
   if (UNTAG_Bool(REGB1)) {
@@ -723,9 +723,9 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
       }
       fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2]);
       REGB1 = CALL_standard___collection___hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:724 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
       /* ../lib/standard/collection/array.nit:725 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
+      /* ../lib/standard/collection/array.nit:726 */
       ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)]=fra.me.REG[2];
       /* ../lib/standard/collection/hash_collection.nit:182 */
       ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[2]) = fra.me.REG[3];
@@ -1056,7 +1056,7 @@ val_t standard___collection___hash_collection___HashMap___is_empty(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ../lib/standard/collection/hash_collection.nit:232 */
     REGB2 = REGB1;
@@ -1428,7 +1428,7 @@ val_t standard___collection___hash_collection___HashMapKeys___has_only(val_t p0,
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ../lib/standard/collection/hash_collection.nit:268 */
       REGB2 = REGB1;
@@ -1697,7 +1697,7 @@ val_t standard___collection___hash_collection___HashMapValues___count(val_t p0,
       }
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
         /* ../lib/standard/collection/hash_collection.nit:291 */
         REGB0 = REGB1;
@@ -2394,7 +2394,7 @@ val_t standard___collection___hash_collection___HashSet___is_empty(val_t p0){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ../lib/standard/collection/hash_collection.nit:412 */
     REGB2 = REGB1;
@@ -2433,7 +2433,7 @@ val_t standard___collection___hash_collection___HashSet___first(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ../lib/standard/collection/hash_collection.nit:416 */
   if (UNTAG_Bool(REGB1)) {
index 5f2e07b..972a732 100644 (file)
@@ -231,7 +231,7 @@ val_t standard___collection___list___List___length(val_t p0){
     if (UNTAG_Bool(REGB1)) {
       /* ../lib/standard/collection/list.nit:49 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* ../lib/standard/collection/list.nit:49 */
       REGB0 = REGB1;
@@ -433,7 +433,7 @@ val_t standard___collection___list___List___count(val_t p0, val_t p1){
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
         /* ../lib/standard/collection/list.nit:73 */
         REGB0 = REGB1;
@@ -485,7 +485,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
   /* ../lib/standard/collection/list.nit:81 */
   if (UNTAG_Bool(REGB2)) {
@@ -495,7 +495,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
   } else {
     /* ../lib/standard/collection/list.nit:81 */
@@ -513,7 +513,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
   /* ../lib/standard/collection/list.nit:82 */
   if (UNTAG_Bool(REGB2)) {
@@ -523,7 +523,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   } else {
     /* ../lib/standard/collection/list.nit:82 */
@@ -536,7 +536,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
   } else {
     /* ../lib/standard/collection/list.nit:82 */
@@ -556,7 +556,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
     /* ../lib/standard/collection/list.nit:84 */
     if (UNTAG_Bool(REGB2)) {
@@ -565,7 +565,7 @@ val_t standard___collection___list___List___slice(val_t p0, val_t p1, val_t p2){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
       /* ../lib/standard/collection/list.nit:86 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ../lib/standard/collection/list.nit:86 */
       REGB0 = REGB2;
@@ -1102,7 +1102,7 @@ val_t standard___collection___list___List___get_node(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* ../lib/standard/collection/list.nit:201 */
   if (UNTAG_Bool(REGB1)) {
@@ -1132,7 +1132,7 @@ val_t standard___collection___list___List___get_node(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     } else {
       /* ../lib/standard/collection/list.nit:204 */
@@ -1149,7 +1149,7 @@ val_t standard___collection___list___List___get_node(val_t p0, val_t p1){
       fra.me.REG[0] = fra.me.REG[2];
       /* ../lib/standard/collection/list.nit:206 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
       /* ../lib/standard/collection/list.nit:206 */
       REGB0 = REGB1;
@@ -1522,7 +1522,7 @@ void standard___collection___list___ListIterator___next(val_t p0){
   /* ../lib/standard/collection/list.nit:265 */
   REGB0 = ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ../lib/standard/collection/list.nit:265 */
   ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0]) = REGB1;
index 647d6bf..936f79d 100644 (file)
@@ -152,17 +152,23 @@ val_t standard___collection___range___Range___has_only(val_t p0, val_t p1){
     } else {
       nit_abort("Uninitialized attribute %s", "_last", LOCATE_standard___collection___range, 32);
     }
-    fra.me.REG[0] = ATTR_standard___collection___range___Range____last(fra.me.REG[0]);
-    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
+    fra.me.REG[2] = ATTR_standard___collection___range___Range____last(fra.me.REG[0]);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
       REGB0 = REGB1;
     }
   } else {
     REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(1);
+  } else {
+    REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = REGB1;
+  }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -315,7 +321,7 @@ val_t standard___collection___range___Range___length(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ../lib/standard/collection/range.nit:59 */
   if (UNTAG_Bool(REGB1)) {
index 0ede6c1..4b5122f 100644 (file)
@@ -45,7 +45,7 @@ void standard___collection___sorter___AbstractSorter___sort(val_t p0, val_t p1){
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ../lib/standard/collection/sorter.nit:31 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
   /* ../lib/standard/collection/sorter.nit:31 */
   CALL_standard___collection___sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, REGB2);
@@ -78,7 +78,7 @@ void standard___collection___sorter___AbstractSorter___sub_sort(val_t p0, val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ../lib/standard/collection/sorter.nit:36 */
   if (UNTAG_Bool(REGB2)) {
@@ -87,14 +87,14 @@ void standard___collection___sorter___AbstractSorter___sub_sort(val_t p0, val_t
   } else {
     /* ../lib/standard/collection/sorter.nit:38 */
     REGB2 = TAG_Int(7);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/sorter.nit:38 */
     if (UNTAG_Bool(REGB2)) {
@@ -136,24 +136,24 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
   fra.me.REG[1] = p1;
   REGB0 = p2;
   REGB1 = p3;
-  /* ../lib/standard/collection/array.nit:278 */
+  /* ../lib/standard/collection/array.nit:279 */
   fra.me.REG[2] = fra.me.REG[1];
   REGB2 = REGB0;
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB3 = TAG_Int(0);
   REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB4)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB3)) {
     REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -161,26 +161,26 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB4 = TAG_Bool(0);
     REGB3 = REGB4;
   }
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* ../lib/standard/collection/sorter.nit:49 */
@@ -194,7 +194,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
     /* ../lib/standard/collection/sorter.nit:51 */
     if (UNTAG_Bool(REGB4)) {
@@ -205,28 +205,28 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:234 */
+        /* ../lib/standard/kernel.nit:241 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
         /* ../lib/standard/collection/sorter.nit:52 */
         if (UNTAG_Bool(REGB4)) {
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[3] = fra.me.REG[1];
           REGB4 = REGB2;
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB5 = TAG_Int(0);
           REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB6)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB5)) {
             REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
             REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -234,26 +234,26 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB6 = TAG_Bool(0);
             REGB5 = REGB6;
           }
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
           REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label2;
           label2: while(0);
           /* ../lib/standard/collection/sorter.nit:52 */
@@ -264,7 +264,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:234 */
+          /* ../lib/standard/kernel.nit:241 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB5));
         } else {
           /* ../lib/standard/collection/sorter.nit:52 */
@@ -273,7 +273,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         }
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
           /* ../lib/standard/collection/sorter.nit:52 */
           REGB2 = REGB5;
@@ -289,28 +289,28 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
         /* ../lib/standard/collection/sorter.nit:53 */
         if (UNTAG_Bool(REGB5)) {
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[3] = fra.me.REG[1];
           REGB5 = REGB3;
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Int(0);
           REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB6)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB4)) {
             REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
             REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -318,26 +318,26 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB6 = TAG_Bool(0);
             REGB4 = REGB6;
           }
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
           REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB5)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label4;
           label4: while(0);
           /* ../lib/standard/collection/sorter.nit:53 */
@@ -348,7 +348,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
         } else {
           /* ../lib/standard/collection/sorter.nit:53 */
@@ -357,7 +357,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         }
         if (UNTAG_Bool(REGB4)) {
           REGB4 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
           /* ../lib/standard/collection/sorter.nit:53 */
           REGB3 = REGB4;
@@ -371,28 +371,28 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
       /* ../lib/standard/collection/sorter.nit:54 */
       if (UNTAG_Bool(REGB4)) {
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[3] = fra.me.REG[1];
         REGB4 = REGB2;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Int(0);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB6)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
           REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -400,46 +400,46 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB6 = TAG_Bool(0);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
         REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label6;
         label6: while(0);
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[4] = fra.me.REG[1];
         REGB4 = REGB3;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Int(0);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB6)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
           REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -447,26 +447,26 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB6 = TAG_Bool(0);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
         REGB5 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB4)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label7;
         label7: while(0);
         /* ../lib/standard/collection/sorter.nit:56 */
@@ -482,25 +482,25 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
   label8: while(0);
   /* ../lib/standard/collection/sorter.nit:60 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-  /* ../lib/standard/collection/array.nit:278 */
+  /* ../lib/standard/collection/array.nit:279 */
   fra.me.REG[3] = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB4 = TAG_Int(0);
   REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB5)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB4)) {
     REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB4)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
     REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -508,39 +508,39 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB5 = TAG_Bool(0);
     REGB4 = REGB5;
   }
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label9;
   label9: while(0);
   /* ../lib/standard/collection/sorter.nit:60 */
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[3]);
   /* ../lib/standard/collection/sorter.nit:61 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
   /* ../lib/standard/collection/sorter.nit:61 */
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]);
   /* ../lib/standard/collection/sorter.nit:62 */
   REGB3 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
   /* ../lib/standard/collection/sorter.nit:62 */
   CALL_standard___collection___sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, REGB3);
@@ -582,30 +582,30 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ../lib/standard/collection/sorter.nit:70 */
     if (UNTAG_Bool(REGB2)) {
       /* ../lib/standard/collection/sorter.nit:71 */
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[2] = fra.me.REG[1];
       REGB3 = REGB0;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -613,26 +613,26 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
       /* ../lib/standard/collection/sorter.nit:73 */
@@ -644,28 +644,28 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:234 */
+        /* ../lib/standard/kernel.nit:241 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1));
         /* ../lib/standard/collection/sorter.nit:74 */
         if (UNTAG_Bool(REGB4)) {
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[3] = fra.me.REG[1];
           REGB4 = REGB3;
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB5 = TAG_Int(0);
           REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB6)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB5)) {
             REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
             REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -673,26 +673,26 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB6 = TAG_Bool(0);
             REGB5 = REGB6;
           }
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
           REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label2;
           label2: while(0);
           /* ../lib/standard/collection/sorter.nit:75 */
@@ -703,30 +703,30 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:237 */
+          /* ../lib/standard/kernel.nit:244 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB5));
           /* ../lib/standard/collection/sorter.nit:75 */
           if (UNTAG_Bool(REGB5)) {
             /* ../lib/standard/collection/sorter.nit:76 */
             REGB2 = REGB3;
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[3] = fra.me.REG[1];
             REGB5 = REGB3;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB4 = TAG_Int(0);
             REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB6)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB4)) {
               REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
               REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -734,26 +734,26 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB6 = TAG_Bool(0);
               REGB4 = REGB6;
             }
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
             REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB5)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label3;
             label3: while(0);
             /* ../lib/standard/collection/sorter.nit:77 */
@@ -761,7 +761,7 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
           }
           /* ../lib/standard/collection/sorter.nit:79 */
           REGB5 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
           /* ../lib/standard/collection/sorter.nit:79 */
           REGB3 = REGB5;
@@ -775,31 +775,31 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB5 = TAG_Bool((REGB2)==(REGB0));
         /* ../lib/standard/collection/sorter.nit:81 */
         REGB3 = REGB5;
       }
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[3] = fra.me.REG[1];
         REGB3 = REGB0;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
           REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -807,26 +807,26 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Bool(0);
           REGB5 = REGB4;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
         REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label5;
         label5: while(0);
         /* ../lib/standard/collection/sorter.nit:82 */
@@ -836,7 +836,7 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
       }
       /* ../lib/standard/collection/sorter.nit:85 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ../lib/standard/collection/sorter.nit:85 */
       REGB0 = REGB2;
index ed6d280..dab9928 100644 (file)
@@ -27,7 +27,7 @@ val_t standard___environ___String___environ(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -48,14 +48,14 @@ val_t standard___environ___String___environ(val_t p0){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ../lib/standard/environ.nit:30 */
-    fra.me.REG[0] = NEW_String_standard___string___String___from_cstring(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     goto label3;
   } else {
     /* ../lib/standard/environ.nit:32 */
     if (!once_value_4) {
       fra.me.REG[1] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_4 = fra.me.REG[1];
       register_static_object(&once_value_4);
     } else fra.me.REG[1] = once_value_4;
index 5f53569..5adf373 100644 (file)
@@ -14,10 +14,8 @@ val_t standard___environ___String___environ(val_t p0);
 typedef val_t (*standard___environ___String___environ_t)(val_t p0);
 void standard___environ___String___setenv(val_t p0, val_t p1);
 typedef void (*standard___environ___String___setenv_t)(val_t p0, val_t p1);
-val_t NEW_String_standard___string___String___from_cstring(val_t p0);
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3);
 val_t standard___environ___NativeString___get_environ(val_t p0);
 typedef val_t (*standard___environ___NativeString___get_environ_t)(val_t p0);
 void standard___environ___NativeString___setenv(val_t p0, val_t p1);
index 1ec4c4c..395dc3c 100644 (file)
@@ -214,20 +214,20 @@ void standard___exec___Process___execute(val_t p0, val_t p1, val_t p2, val_t p3,
     if (UNTAG_Bool(REGB2)) {
       nit_abort("Reciever is null", NULL, LOCATE_standard___exec, 61);
     }
-    /* ../lib/standard/collection/array.nit:266 */
+    /* ../lib/standard/collection/array.nit:267 */
     fra.me.REG[4] = fra.me.REG[2];
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB2 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB2 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -241,30 +241,30 @@ void standard___exec___Process___execute(val_t p0, val_t p1, val_t p2, val_t p3,
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB3)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
         /* ../lib/standard/exec.nit:62 */
         REGB3 = TAG_Char('\0');
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], REGB3);
         /* ../lib/standard/exec.nit:63 */
         CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB2 = REGB3;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label1;
       }
     }
@@ -281,7 +281,7 @@ void standard___exec___Process___execute(val_t p0, val_t p1, val_t p2, val_t p3,
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
     /* ../lib/standard/exec.nit:65 */
     REGB1 = REGB2;
diff --git a/c_src/standard___file._ffi.c b/c_src/standard___file._ffi.c
new file mode 100644 (file)
index 0000000..95bd948
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+       Extern implementation of Nit module file
+*/
+#include "standard___file._ffi.h"
+
+ struct stat *  NativeString_file_lstat___impl( char * recv )
+{
+#line 325 "../lib/standard/file.nit"
+
+
+               struct stat* stat_element;
+               int res;
+               stat_element = malloc(sizeof(struct stat));
+               res = lstat(recv, stat_element);
+               if (res == -1) return NULL;
+               return stat_element;
+       }
+
+int FileStat_is_reg___impl(  struct stat *  recv )
+{
+#line 345 "../lib/standard/file.nit"
+
+ return S_ISREG(recv->st_mode); }
+
+int FileStat_is_dir___impl(  struct stat *  recv )
+{
+#line 346 "../lib/standard/file.nit"
+
+ return S_ISDIR(recv->st_mode); }
+
+int FileStat_is_chr___impl(  struct stat *  recv )
+{
+#line 347 "../lib/standard/file.nit"
+
+ return S_ISCHR(recv->st_mode); }
+
+int FileStat_is_blk___impl(  struct stat *  recv )
+{
+#line 348 "../lib/standard/file.nit"
+
+ return S_ISBLK(recv->st_mode); }
+
+int FileStat_is_fifo___impl(  struct stat *  recv )
+{
+#line 349 "../lib/standard/file.nit"
+
+ return S_ISFIFO(recv->st_mode); }
+
+int FileStat_is_lnk___impl(  struct stat *  recv )
+{
+#line 350 "../lib/standard/file.nit"
+
+ return S_ISLNK(recv->st_mode); }
+
+int FileStat_is_sock___impl(  struct stat *  recv )
+{
+#line 351 "../lib/standard/file.nit"
+
+ return S_ISSOCK(recv->st_mode); }
diff --git a/c_src/standard___file._ffi.h b/c_src/standard___file._ffi.h
new file mode 100644 (file)
index 0000000..6cc457c
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+       Extern implementation of Nit module file
+*/
+#include <file._nitni.h>
+
+#ifndef STANDARD___FILE_NIT_H
+#define STANDARD___FILE_NIT_H
+
+ struct stat *  NativeString_file_lstat___impl( char * recv );
+int FileStat_is_reg___impl(  struct stat *  recv );
+int FileStat_is_dir___impl(  struct stat *  recv );
+int FileStat_is_chr___impl(  struct stat *  recv );
+int FileStat_is_blk___impl(  struct stat *  recv );
+int FileStat_is_fifo___impl(  struct stat *  recv );
+int FileStat_is_lnk___impl(  struct stat *  recv );
+int FileStat_is_sock___impl(  struct stat *  recv );
+#endif
index 527d01e..52ec647 100644 (file)
@@ -7,7 +7,7 @@ void standard___file___Object___printn(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 25;
+  fra.me.line = 26;
   fra.me.meth = LOCATE_standard___file___Object___printn;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -17,14 +17,14 @@ void standard___file___Object___printn(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:25 */
+  /* ../lib/standard/file.nit:26 */
   fra.me.REG[2] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___file, 25);
+    nit_abort("Cast failed", NULL, LOCATE_standard___file, 26);
   }
-  /* ../lib/standard/file.nit:28 */
+  /* ../lib/standard/file.nit:29 */
   fra.me.REG[2] = CALL_standard___file___Object___stdout(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
@@ -39,7 +39,7 @@ void standard___file___Object___print(val_t p0, val_t p1){
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 31;
+  fra.me.line = 32;
   fra.me.meth = LOCATE_standard___file___Object___print;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -49,16 +49,16 @@ void standard___file___Object___print(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:34 */
+  /* ../lib/standard/file.nit:35 */
   fra.me.REG[2] = CALL_standard___file___Object___stdout(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ../lib/standard/file.nit:35 */
+  /* ../lib/standard/file.nit:36 */
   fra.me.REG[0] = CALL_standard___file___Object___stdout(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -74,19 +74,19 @@ val_t standard___file___Object___getc(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 38;
+  fra.me.line = 39;
   fra.me.meth = LOCATE_standard___file___Object___getc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:41 */
+  /* ../lib/standard/file.nit:42 */
   fra.me.REG[0] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:300 */
+  /* ../lib/standard/kernel.nit:318 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
-  /* ../lib/standard/file.nit:41 */
+  /* ../lib/standard/file.nit:42 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -98,14 +98,14 @@ val_t standard___file___Object___gets(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 44;
+  fra.me.line = 45;
   fra.me.meth = LOCATE_standard___file___Object___gets;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:47 */
+  /* ../lib/standard/file.nit:48 */
   fra.me.REG[0] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___stream___IStream___read_line(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -120,14 +120,14 @@ val_t standard___file___Object___stdin(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_standard___file;
-  fra.me.line = 350;
+  fra.me.line = 368;
   fra.me.meth = LOCATE_standard___file___Object___stdin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:351 */
+  /* ../lib/standard/file.nit:369 */
   if (!once_value_1) {
     fra.me.REG[0] = NEW_Stdin_standard___file___Stdin___init();
     once_value_1 = fra.me.REG[0];
@@ -146,14 +146,14 @@ val_t standard___file___Object___stdout(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_standard___file;
-  fra.me.line = 353;
+  fra.me.line = 371;
   fra.me.meth = LOCATE_standard___file___Object___stdout;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:354 */
+  /* ../lib/standard/file.nit:372 */
   if (!once_value_1) {
     fra.me.REG[0] = NEW_Stdout_standard___file___Stdout___init();
     once_value_1 = fra.me.REG[0];
@@ -172,14 +172,14 @@ val_t standard___file___Object___stderr(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_standard___file;
-  fra.me.line = 356;
+  fra.me.line = 374;
   fra.me.meth = LOCATE_standard___file___Object___stderr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:357 */
+  /* ../lib/standard/file.nit:375 */
   if (!once_value_1) {
     fra.me.REG[0] = NEW_Stderr_standard___file___Stderr___init();
     once_value_1 = fra.me.REG[0];
@@ -197,14 +197,14 @@ val_t standard___file___FStream___path(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 54;
+  fra.me.line = 55;
   fra.me.meth = LOCATE_standard___file___FStream___path;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:54 */
+  /* ../lib/standard/file.nit:55 */
   fra.me.REG[0] = ATTR_standard___file___FStream____path(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -216,18 +216,18 @@ val_t standard___file___FStream___file_stat(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 60;
+  fra.me.line = 61;
   fra.me.meth = LOCATE_standard___file___FStream___file_stat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:61 */
+  /* ../lib/standard/file.nit:62 */
   fra.me.REG[0] = ATTR_standard___file___FStream____file(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 61);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 62);
   }
   fra.me.REG[0] = CALL_standard___file___NativeFile___file_stat(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -259,7 +259,7 @@ void standard___file___IFStream___reopen(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 70;
+  fra.me.line = 71;
   fra.me.meth = LOCATE_standard___file___IFStream___reopen;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -267,32 +267,32 @@ void standard___file___IFStream___reopen(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:74 */
+  /* ../lib/standard/file.nit:75 */
   REGB0 = CALL_standard___stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     CALL_standard___stream___IOS___close(fra.me.REG[0])(fra.me.REG[0]);
   }
-  /* ../lib/standard/file.nit:75 */
+  /* ../lib/standard/file.nit:76 */
   fra.me.REG[1] = ATTR_standard___file___FStream____path(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 75);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 76);
   }
   fra.me.REG[1] = CALL_standard___string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = NEW_NativeFile_standard___file___NativeFile___io_open_read(fra.me.REG[1]);
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:76 */
+  /* ../lib/standard/file.nit:77 */
   REGB0 = TAG_Bool(0);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/file.nit:77 */
+  /* ../lib/standard/file.nit:78 */
   REGB0 = TAG_Int(0);
   ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/file.nit:78 */
+  /* ../lib/standard/file.nit:79 */
   fra.me.REG[0] = ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 78);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 79);
   }
   CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -305,7 +305,7 @@ void standard___file___IFStream___close(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 81;
+  fra.me.line = 82;
   fra.me.meth = LOCATE_standard___file___IFStream___close;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -313,14 +313,14 @@ void standard___file___IFStream___close(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:83 */
+  /* ../lib/standard/file.nit:84 */
   fra.me.REG[1] = ATTR_standard___file___FStream____file(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 83);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 84);
   }
   REGB0 = CALL_standard___file___NativeFile___io_close(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/file.nit:84 */
+  /* ../lib/standard/file.nit:85 */
   REGB0 = TAG_Bool(1);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -335,7 +335,7 @@ void standard___file___IFStream___fill_buffer(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 87;
+  fra.me.line = 88;
   fra.me.meth = LOCATE_standard___file___IFStream___fill_buffer;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -345,61 +345,61 @@ void standard___file___IFStream___fill_buffer(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:89 */
+  /* ../lib/standard/file.nit:90 */
   fra.me.REG[1] = ATTR_standard___file___FStream____file(fra.me.REG[0]);
   fra.me.REG[2] = ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 89);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 90);
   }
   REGB0 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___file, 89);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___file, 90);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[2]);
   fra.me.REG[3] = ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 89);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 90);
   }
   REGB0 = TAG_Bool(ATTR_standard___string___Buffer____capacity(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___file, 89);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___file, 90);
   }
   REGB0 = ATTR_standard___string___Buffer____capacity(fra.me.REG[3]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 89);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 90);
   }
   REGB0 = CALL_standard___file___NativeFile___io_read(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
-  /* ../lib/standard/file.nit:90 */
+  /* ../lib/standard/file.nit:91 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ../lib/standard/file.nit:90 */
+  /* ../lib/standard/file.nit:91 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/file.nit:91 */
+    /* ../lib/standard/file.nit:92 */
     REGB1 = TAG_Bool(1);
     ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB1;
-    /* ../lib/standard/file.nit:92 */
+    /* ../lib/standard/file.nit:93 */
     REGB1 = TAG_Int(0);
     REGB0 = REGB1;
   }
-  /* ../lib/standard/file.nit:94 */
+  /* ../lib/standard/file.nit:95 */
   fra.me.REG[2] = ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 94);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 95);
   }
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB0;
-  /* ../lib/standard/file.nit:95 */
+  /* ../lib/standard/file.nit:96 */
   REGB0 = TAG_Int(0);
   ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -412,18 +412,18 @@ val_t standard___file___IFStream___end_reached(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 98;
+  fra.me.line = 99;
   fra.me.meth = LOCATE_standard___file___IFStream___end_reached;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:98 */
+  /* ../lib/standard/file.nit:99 */
   REGB0 = TAG_Bool(ATTR_standard___file___IFStream____end_reached(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_end_reached", LOCATE_standard___file, 98);
+    nit_abort("Uninitialized attribute %s", "_end_reached", LOCATE_standard___file, 99);
   }
   REGB0 = ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -439,7 +439,7 @@ void standard___file___IFStream___open(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 101;
+  fra.me.line = 102;
   fra.me.meth = LOCATE_standard___file___IFStream___open;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -449,25 +449,25 @@ void standard___file___IFStream___open(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;
-  /* ../lib/standard/file.nit:101 */
+  /* ../lib/standard/file.nit:102 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_standard___file___FStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___stream___BufferedIStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ../lib/standard/file.nit:104 */
-  ATTR_standard___file___FStream____path(fra.me.REG[2]) = fra.me.REG[1];
   /* ../lib/standard/file.nit:105 */
+  ATTR_standard___file___FStream____path(fra.me.REG[2]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:106 */
   REGB0 = TAG_Int(10);
   CALL_standard___stream___BufferedIStream___prepare_buffer(fra.me.REG[2])(fra.me.REG[2], REGB0);
-  /* ../lib/standard/file.nit:106 */
+  /* ../lib/standard/file.nit:107 */
   fra.me.REG[1] = ATTR_standard___file___FStream____path(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 106);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 107);
   }
   fra.me.REG[1] = CALL_standard___string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = NEW_NativeFile_standard___file___NativeFile___io_open_read(fra.me.REG[1]);
   ATTR_standard___file___FStream____file(fra.me.REG[2]) = fra.me.REG[1];
-  /* ../lib/standard/file.nit:107 */
+  /* ../lib/standard/file.nit:108 */
   fra.me.REG[2] = ATTR_standard___file___FStream____file(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -484,7 +484,7 @@ void standard___file___IFStream___open(val_t p0, val_t p1, int* init_table){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert '%s' failed", "cant_open_file", LOCATE_standard___file, 107);
+    nit_abort("Assert '%s' failed", "cant_open_file", LOCATE_standard___file, 108);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -498,14 +498,14 @@ void standard___file___IFStream___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_standard___file;
-  fra.me.line = 110;
+  fra.me.line = 111;
   fra.me.meth = LOCATE_standard___file___IFStream___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:110 */
+  /* ../lib/standard/file.nit:111 */
   CALL_standard___file___FStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___stream___BufferedIStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
@@ -520,14 +520,14 @@ void standard___file___IFStream___without_file(val_t p0, int* init_table){
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 111;
+  fra.me.line = 112;
   fra.me.meth = LOCATE_standard___file___IFStream___without_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:111 */
+  /* ../lib/standard/file.nit:112 */
   CALL_standard___file___FStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   CALL_standard___stream___BufferedIStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
@@ -541,7 +541,7 @@ void standard___file___OFStream___write(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 119;
+  fra.me.line = 120;
   fra.me.meth = LOCATE_standard___file___OFStream___write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -551,18 +551,18 @@ void standard___file___OFStream___write(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:121 */
+  /* ../lib/standard/file.nit:122 */
   REGB0 = TAG_Bool(ATTR_standard___file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_standard___file, 121);
+    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_standard___file, 122);
   }
   REGB0 = ATTR_standard___file___OFStream____writable(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___file, 121);
+    nit_abort("Assert failed", NULL, LOCATE_standard___file, 122);
   }
-  /* ../lib/standard/file.nit:122 */
+  /* ../lib/standard/file.nit:123 */
   fra.me.REG[2] = CALL_standard___string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -571,7 +571,7 @@ void standard___file___OFStream___write(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/file.nit:122 */
+  /* ../lib/standard/file.nit:123 */
   CALL_standard___file___OFStream___write_native(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], REGB0);
   stack_frame_head = fra.me.prev;
   return;
@@ -583,18 +583,18 @@ val_t standard___file___OFStream___is_writable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 125;
+  fra.me.line = 126;
   fra.me.meth = LOCATE_standard___file___OFStream___is_writable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:125 */
+  /* ../lib/standard/file.nit:126 */
   REGB0 = TAG_Bool(ATTR_standard___file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_standard___file, 125);
+    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_standard___file, 126);
   }
   REGB0 = ATTR_standard___file___OFStream____writable(fra.me.REG[0]);
   goto label1;
@@ -609,7 +609,7 @@ void standard___file___OFStream___close(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 127;
+  fra.me.line = 128;
   fra.me.meth = LOCATE_standard___file___OFStream___close;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -617,14 +617,14 @@ void standard___file___OFStream___close(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:129 */
+  /* ../lib/standard/file.nit:130 */
   fra.me.REG[1] = ATTR_standard___file___FStream____file(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 129);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 130);
   }
   REGB0 = CALL_standard___file___NativeFile___io_close(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/file.nit:130 */
+  /* ../lib/standard/file.nit:131 */
   REGB0 = TAG_Bool(0);
   ATTR_standard___file___OFStream____writable(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -643,7 +643,7 @@ void standard___file___OFStream___write_native(val_t p0, val_t p1, val_t p2){
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 136;
+  fra.me.line = 137;
   fra.me.meth = LOCATE_standard___file___OFStream___write_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -654,42 +654,42 @@ void standard___file___OFStream___write_native(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/file.nit:139 */
+  /* ../lib/standard/file.nit:140 */
   REGB1 = TAG_Bool(ATTR_standard___file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_standard___file, 139);
+    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_standard___file, 140);
   }
   REGB1 = ATTR_standard___file___OFStream____writable(fra.me.REG[0]);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___file, 139);
+    nit_abort("Assert failed", NULL, LOCATE_standard___file, 140);
   }
-  /* ../lib/standard/file.nit:140 */
+  /* ../lib/standard/file.nit:141 */
   fra.me.REG[2] = ATTR_standard___file___FStream____file(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 140);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 141);
   }
   REGB1 = CALL_standard___file___NativeFile___io_write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], REGB0);
-  /* ../lib/standard/file.nit:141 */
+  /* ../lib/standard/file.nit:142 */
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB3 = TAG_Bool((REGB1)==(REGB0));
-    /* ../lib/standard/file.nit:141 */
+    /* ../lib/standard/file.nit:142 */
     REGB2 = REGB3;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/file.nit:143 */
+    /* ../lib/standard/file.nit:144 */
     REGB2 = TAG_Int(4);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("Problem in writing : ");
       REGB2 = TAG_Int(21);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -699,7 +699,7 @@ void standard___file___OFStream___write_native(val_t p0, val_t p1, val_t p2){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString(" ");
       REGB1 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
       once_value_2 = fra.me.REG[2];
       register_static_object(&once_value_2);
     } else fra.me.REG[2] = once_value_2;
@@ -709,7 +709,7 @@ void standard___file___OFStream___write_native(val_t p0, val_t p1, val_t p2){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("\n");
       REGB0 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -730,7 +730,7 @@ void standard___file___OFStream___open(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_standard___file;
-  fra.me.line = 147;
+  fra.me.line = 148;
   fra.me.meth = LOCATE_standard___file___OFStream___open;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -740,14 +740,14 @@ void standard___file___OFStream___open(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;
-  /* ../lib/standard/file.nit:147 */
+  /* ../lib/standard/file.nit:148 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_standard___file___FStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ../lib/standard/file.nit:150 */
+  /* ../lib/standard/file.nit:151 */
   fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = NEW_NativeFile_standard___file___NativeFile___io_open_write(fra.me.REG[0]);
   ATTR_standard___file___FStream____file(fra.me.REG[2]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:151 */
+  /* ../lib/standard/file.nit:152 */
   fra.me.REG[0] = ATTR_standard___file___FStream____file(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -764,11 +764,11 @@ void standard___file___OFStream___open(val_t p0, val_t p1, int* init_table){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert '%s' failed", "cant_open_file", LOCATE_standard___file, 151);
+    nit_abort("Assert '%s' failed", "cant_open_file", LOCATE_standard___file, 152);
   }
-  /* ../lib/standard/file.nit:152 */
-  ATTR_standard___file___FStream____path(fra.me.REG[2]) = fra.me.REG[1];
   /* ../lib/standard/file.nit:153 */
+  ATTR_standard___file___FStream____path(fra.me.REG[2]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:154 */
   REGB0 = TAG_Bool(1);
   ATTR_standard___file___OFStream____writable(fra.me.REG[2]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -783,14 +783,14 @@ void standard___file___OFStream___init(val_t p0, int* init_table){
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 156;
+  fra.me.line = 157;
   fra.me.meth = LOCATE_standard___file___OFStream___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:156 */
+  /* ../lib/standard/file.nit:157 */
   CALL_standard___file___FStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
@@ -804,14 +804,14 @@ void standard___file___OFStream___without_file(val_t p0, int* init_table){
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 157;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_standard___file___OFStream___without_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:157 */
+  /* ../lib/standard/file.nit:158 */
   CALL_standard___file___FStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
@@ -827,7 +827,7 @@ void standard___file___Stdin___init(val_t p0, int* init_table){
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 164;
+  fra.me.line = 165;
   fra.me.meth = LOCATE_standard___file___Stdin___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -835,23 +835,23 @@ void standard___file___Stdin___init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:164 */
+  /* ../lib/standard/file.nit:165 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_standard___file___IFStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ../lib/standard/file.nit:165 */
+  /* ../lib/standard/file.nit:166 */
   fra.me.REG[0] = NEW_NativeFile_standard___file___NativeFile___native_stdin();
   ATTR_standard___file___FStream____file(fra.me.REG[1]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:166 */
+  /* ../lib/standard/file.nit:167 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("/dev/stdin");
     REGB0 = TAG_Int(10);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
   fra.me.REG[0] = fra.me.REG[0];
   ATTR_standard___file___FStream____path(fra.me.REG[1]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:167 */
+  /* ../lib/standard/file.nit:168 */
   REGB0 = TAG_Int(1);
   CALL_standard___stream___BufferedIStream___prepare_buffer(fra.me.REG[1])(fra.me.REG[1], REGB0);
   stack_frame_head = fra.me.prev;
@@ -865,14 +865,14 @@ val_t standard___file___Stdin___poll_in(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 170;
+  fra.me.line = 171;
   fra.me.meth = LOCATE_standard___file___Stdin___poll_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:170 */
+  /* ../lib/standard/file.nit:171 */
   REGB0 = Stdin_poll_in___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -887,7 +887,7 @@ void standard___file___Stdout___init(val_t p0, int* init_table){
   if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 177;
+  fra.me.line = 178;
   fra.me.meth = LOCATE_standard___file___Stdout___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -895,23 +895,23 @@ void standard___file___Stdout___init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:177 */
+  /* ../lib/standard/file.nit:178 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_standard___file___OFStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ../lib/standard/file.nit:178 */
+  /* ../lib/standard/file.nit:179 */
   fra.me.REG[0] = NEW_NativeFile_standard___file___NativeFile___native_stdout();
   ATTR_standard___file___FStream____file(fra.me.REG[1]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:179 */
+  /* ../lib/standard/file.nit:180 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("/dev/stdout");
     REGB0 = TAG_Int(11);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
   fra.me.REG[0] = fra.me.REG[0];
   ATTR_standard___file___FStream____path(fra.me.REG[1]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:180 */
+  /* ../lib/standard/file.nit:181 */
   REGB0 = TAG_Bool(1);
   ATTR_standard___file___OFStream____writable(fra.me.REG[1]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -928,7 +928,7 @@ void standard___file___Stderr___init(val_t p0, int* init_table){
   if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 186;
+  fra.me.line = 187;
   fra.me.meth = LOCATE_standard___file___Stderr___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -936,23 +936,23 @@ void standard___file___Stderr___init(val_t p0, int* init_table){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:186 */
+  /* ../lib/standard/file.nit:187 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_standard___file___OFStream___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ../lib/standard/file.nit:187 */
+  /* ../lib/standard/file.nit:188 */
   fra.me.REG[0] = NEW_NativeFile_standard___file___NativeFile___native_stderr();
   ATTR_standard___file___FStream____file(fra.me.REG[1]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:188 */
+  /* ../lib/standard/file.nit:189 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("/dev/stderr");
     REGB0 = TAG_Int(11);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
   fra.me.REG[0] = fra.me.REG[0];
   ATTR_standard___file___FStream____path(fra.me.REG[1]) = fra.me.REG[0];
-  /* ../lib/standard/file.nit:189 */
+  /* ../lib/standard/file.nit:190 */
   REGB0 = TAG_Bool(1);
   ATTR_standard___file___OFStream____writable(fra.me.REG[1]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -966,14 +966,14 @@ val_t standard___file___String___file_exists(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 196;
+  fra.me.line = 197;
   fra.me.meth = LOCATE_standard___file___String___file_exists;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:197 */
+  /* ../lib/standard/file.nit:198 */
   fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___file___NativeString___file_exists(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -987,14 +987,14 @@ val_t standard___file___String___file_stat(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 199;
+  fra.me.line = 200;
   fra.me.meth = LOCATE_standard___file___String___file_stat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:199 */
+  /* ../lib/standard/file.nit:200 */
   fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___file___NativeString___file_stat(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1002,6 +1002,27 @@ val_t standard___file___String___file_stat(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_standard___file___String___file_lstat[] = "file::String::file_lstat";
+val_t standard___file___String___file_lstat(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_standard___file;
+  fra.me.line = 201;
+  fra.me.meth = LOCATE_standard___file___String___file_lstat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:201 */
+  fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___file___NativeString___file_lstat(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
 static const char LOCATE_standard___file___String___file_delete[] = "file::String::file_delete";
 val_t standard___file___String___file_delete(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1009,14 +1030,14 @@ val_t standard___file___String___file_delete(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 201;
+  fra.me.line = 203;
   fra.me.meth = LOCATE_standard___file___String___file_delete;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:202 */
+  /* ../lib/standard/file.nit:204 */
   fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___file___NativeString___file_delete(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1033,7 +1054,7 @@ val_t standard___file___String___strip_extension(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 204;
+  fra.me.line = 206;
   fra.me.meth = LOCATE_standard___file___String___strip_extension;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1042,10 +1063,10 @@ val_t standard___file___String___strip_extension(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:207 */
+  /* ../lib/standard/file.nit:209 */
   REGB0 = CALL_standard___string___AbstractString___has_suffix(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/file.nit:208 */
+    /* ../lib/standard/file.nit:210 */
     REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1060,13 +1081,13 @@ val_t standard___file___String___strip_extension(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ../lib/standard/file.nit:208 */
+    /* ../lib/standard/file.nit:210 */
     fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
     goto label1;
   }
-  /* ../lib/standard/file.nit:210 */
+  /* ../lib/standard/file.nit:212 */
   fra.me.REG[1] = fra.me.REG[0];
   goto label1;
   label1: while(0);
@@ -1082,7 +1103,7 @@ val_t standard___file___String___basename(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 213;
+  fra.me.line = 215;
   fra.me.meth = LOCATE_standard___file___String___basename;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1092,41 +1113,41 @@ val_t standard___file___String___basename(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:216 */
+  /* ../lib/standard/file.nit:218 */
   REGB0 = TAG_Char('/');
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___file, 216);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___file, 218);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/file.nit:216 */
+  /* ../lib/standard/file.nit:218 */
   REGB2 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
-  /* ../lib/standard/file.nit:217 */
+  /* ../lib/standard/file.nit:219 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ../lib/standard/file.nit:218 */
+  /* ../lib/standard/file.nit:220 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-  /* ../lib/standard/file.nit:218 */
+  /* ../lib/standard/file.nit:220 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/file.nit:219 */
+    /* ../lib/standard/file.nit:221 */
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-    /* ../lib/standard/file.nit:219 */
+    /* ../lib/standard/file.nit:221 */
     fra.me.REG[0] = CALL_standard___string___AbstractString___substring_from(fra.me.REG[0])(fra.me.REG[0], REGB0);
     fra.me.REG[2] = fra.me.REG[0];
   }
-  /* ../lib/standard/file.nit:221 */
+  /* ../lib/standard/file.nit:223 */
   fra.me.REG[1] = CALL_standard___file___String___strip_extension(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   goto label1;
   label1: while(0);
@@ -1143,7 +1164,7 @@ val_t standard___file___String___dirname(val_t p0){
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 224;
+  fra.me.line = 226;
   fra.me.meth = LOCATE_standard___file___String___dirname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1151,40 +1172,40 @@ val_t standard___file___String___dirname(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:227 */
+  /* ../lib/standard/file.nit:229 */
   REGB0 = TAG_Char('/');
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___file, 227);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___file, 229);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/file.nit:227 */
+  /* ../lib/standard/file.nit:229 */
   REGB2 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
-  /* ../lib/standard/file.nit:228 */
+  /* ../lib/standard/file.nit:230 */
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-  /* ../lib/standard/file.nit:228 */
+  /* ../lib/standard/file.nit:230 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/file.nit:229 */
+    /* ../lib/standard/file.nit:231 */
     REGB0 = TAG_Int(0);
     fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
     goto label1;
   } else {
-    /* ../lib/standard/file.nit:231 */
+    /* ../lib/standard/file.nit:233 */
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB2);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -1211,7 +1232,7 @@ val_t standard___file___String___simplify_path(val_t p0){
   static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 235;
+  fra.me.line = 237;
   fra.me.meth = LOCATE_standard___file___String___simplify_path;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1223,30 +1244,30 @@ val_t standard___file___String___simplify_path(val_t p0){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:250 */
+  /* ../lib/standard/file.nit:252 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_standard___string_search___String___split_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/file.nit:251 */
+  /* ../lib/standard/file.nit:253 */
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1260,22 +1281,22 @@ val_t standard___file___String___simplify_path(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/file.nit:253 */
+      /* ../lib/standard/file.nit:255 */
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -1289,11 +1310,11 @@ val_t standard___file___String___simplify_path(val_t p0){
       if (UNTAG_Bool(REGB1)) {
         goto label3;
       }
-      /* ../lib/standard/file.nit:254 */
+      /* ../lib/standard/file.nit:256 */
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -1314,11 +1335,11 @@ val_t standard___file___String___simplify_path(val_t p0){
       if (UNTAG_Bool(REGB1)) {
         goto label3;
       }
-      /* ../lib/standard/file.nit:255 */
+      /* ../lib/standard/file.nit:257 */
       if (!once_value_5) {
         fra.me.REG[4] = BOX_NativeString("..");
         REGB1 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_5 = fra.me.REG[4];
         register_static_object(&once_value_5);
       } else fra.me.REG[4] = once_value_5;
@@ -1341,7 +1362,7 @@ val_t standard___file___String___simplify_path(val_t p0){
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString("..");
           REGB1 = TAG_Int(2);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
           once_value_6 = fra.me.REG[5];
           register_static_object(&once_value_6);
         } else fra.me.REG[5] = once_value_6;
@@ -1364,31 +1385,31 @@ val_t standard___file___String___simplify_path(val_t p0){
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/file.nit:256 */
+        /* ../lib/standard/file.nit:258 */
         CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
-        /* ../lib/standard/file.nit:257 */
+        /* ../lib/standard/file.nit:259 */
         goto label3;
       }
-      /* ../lib/standard/file.nit:259 */
+      /* ../lib/standard/file.nit:261 */
       CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
       label3: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label7;
     }
   }
   label7: while(0);
-  /* ../lib/standard/file.nit:261 */
+  /* ../lib/standard/file.nit:263 */
   if (!once_value_8) {
     fra.me.REG[2] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_8 = fra.me.REG[2];
     register_static_object(&once_value_8);
   } else fra.me.REG[2] = once_value_8;
@@ -1411,7 +1432,7 @@ val_t standard___file___String___join_path(val_t p0, val_t p1){
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 264;
+  fra.me.line = 266;
   fra.me.meth = LOCATE_standard___file___String___join_path;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1423,41 +1444,41 @@ val_t standard___file___String___join_path(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:281 */
+  /* ../lib/standard/file.nit:283 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[2] = fra.me.REG[0];
     goto label1;
   }
-  /* ../lib/standard/file.nit:282 */
+  /* ../lib/standard/file.nit:284 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[2] = fra.me.REG[1];
     goto label1;
   }
-  /* ../lib/standard/file.nit:283 */
+  /* ../lib/standard/file.nit:285 */
   REGB0 = TAG_Int(0);
   REGB0 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
   REGB1 = TAG_Char('/');
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:381 */
+    /* ../lib/standard/kernel.nit:434 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/file.nit:283 */
+    /* ../lib/standard/file.nit:285 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     fra.me.REG[2] = fra.me.REG[1];
     goto label1;
   }
-  /* ../lib/standard/file.nit:284 */
+  /* ../lib/standard/file.nit:286 */
   REGB2 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
     REGB2 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
     once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
@@ -1467,7 +1488,7 @@ val_t standard___file___String___join_path(val_t p0, val_t p1){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("/");
     REGB2 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -1477,7 +1498,7 @@ val_t standard___file___String___join_path(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[1] = BOX_NativeString("");
     REGB2 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB2);
     once_value_4 = fra.me.REG[1];
     register_static_object(&once_value_4);
   } else fra.me.REG[1] = once_value_4;
@@ -1500,7 +1521,7 @@ void standard___file___String___mkdir(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_standard___file;
-  fra.me.line = 287;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_standard___file___String___mkdir;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1510,42 +1531,42 @@ void standard___file___String___mkdir(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:290 */
+  /* ../lib/standard/file.nit:292 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_standard___string_search___String___split_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/file.nit:291 */
+  /* ../lib/standard/file.nit:293 */
   fra.me.REG[0] = NEW_Buffer_standard___string___Buffer___init();
-  /* ../lib/standard/file.nit:292 */
+  /* ../lib/standard/file.nit:294 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     goto label2;
   }
-  /* ../lib/standard/file.nit:293 */
+  /* ../lib/standard/file.nit:295 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:278 */
+  /* ../lib/standard/collection/array.nit:279 */
   fra.me.REG[2] = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1553,51 +1574,51 @@ void standard___file___String___mkdir(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label3;
   label3: while(0);
-  /* ../lib/standard/file.nit:293 */
+  /* ../lib/standard/file.nit:295 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 293);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 295);
   }
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/file.nit:295 */
+    /* ../lib/standard/file.nit:297 */
     REGB0 = TAG_Char('/');
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB0);
   }
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1611,40 +1632,40 @@ void standard___file___String___mkdir(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/file.nit:298 */
+      /* ../lib/standard/file.nit:300 */
       REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
       if (UNTAG_Bool(REGB1)) {
         goto label4;
       }
-      /* ../lib/standard/file.nit:299 */
+      /* ../lib/standard/file.nit:301 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ../lib/standard/file.nit:300 */
+      /* ../lib/standard/file.nit:302 */
       REGB1 = TAG_Char('/');
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      /* ../lib/standard/file.nit:301 */
+      /* ../lib/standard/file.nit:303 */
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[3] = CALL_standard___string___String___to_cstring(fra.me.REG[3])(fra.me.REG[3]);
       CALL_standard___file___NativeString___file_mkdir(fra.me.REG[3])(fra.me.REG[3]);
       label4: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label5;
     }
   }
@@ -1662,30 +1683,30 @@ val_t standard___file___String___file_extension(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 305;
+  fra.me.line = 307;
   fra.me.meth = LOCATE_standard___file___String___file_extension;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:308 */
+  /* ../lib/standard/file.nit:310 */
   REGB0 = TAG_Char('.');
   REGB0 = CALL_standard___collection___array___AbstractArrayRead___last_index_of(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  /* ../lib/standard/file.nit:309 */
+  /* ../lib/standard/file.nit:311 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/file.nit:309 */
+  /* ../lib/standard/file.nit:311 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/file.nit:310 */
+    /* ../lib/standard/file.nit:312 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1694,11 +1715,11 @@ val_t standard___file___String___file_extension(val_t p0){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ../lib/standard/file.nit:310 */
+    /* ../lib/standard/file.nit:312 */
     fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB0);
     goto label1;
   } else {
-    /* ../lib/standard/file.nit:312 */
+    /* ../lib/standard/file.nit:314 */
     fra.me.REG[0] = NIT_NULL;
     goto label1;
   }
@@ -1712,14 +1733,14 @@ val_t standard___file___String___files(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 316;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_standard___file___String___files;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:316 */
+  /* ../lib/standard/file.nit:318 */
   fra.me.REG[0] = String_files___out(fra.me.REG[0]);
   ;
   ;
@@ -1735,14 +1756,14 @@ val_t standard___file___NativeString___file_exists(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 321;
+  fra.me.line = 323;
   fra.me.meth = LOCATE_standard___file___NativeString___file_exists;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:321 */
+  /* ../lib/standard/file.nit:323 */
   REGB0 = NativeString_file_exists___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1753,18 +1774,36 @@ val_t standard___file___NativeString___file_stat(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 322;
+  fra.me.line = 324;
   fra.me.meth = LOCATE_standard___file___NativeString___file_stat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:322 */
+  /* ../lib/standard/file.nit:324 */
   fra.me.REG[0] = NativeString_file_stat___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_standard___file___NativeString___file_lstat[] = "file::NativeString::file_lstat";
+val_t standard___file___NativeString___file_lstat(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_standard___file;
+  fra.me.line = 325;
+  fra.me.meth = LOCATE_standard___file___NativeString___file_lstat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:325 */
+  fra.me.REG[0] = NativeString_file_lstat___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
 static const char LOCATE_standard___file___NativeString___file_mkdir[] = "file::NativeString::file_mkdir";
 val_t standard___file___NativeString___file_mkdir(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1772,14 +1811,14 @@ val_t standard___file___NativeString___file_mkdir(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 323;
+  fra.me.line = 333;
   fra.me.meth = LOCATE_standard___file___NativeString___file_mkdir;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:323 */
+  /* ../lib/standard/file.nit:333 */
   REGB0 = NativeString_file_mkdir___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1791,14 +1830,14 @@ val_t standard___file___NativeString___file_delete(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 324;
+  fra.me.line = 334;
   fra.me.meth = LOCATE_standard___file___NativeString___file_delete;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:324 */
+  /* ../lib/standard/file.nit:334 */
   REGB0 = NativeString_file_delete___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1810,14 +1849,14 @@ val_t standard___file___FileStat___mode(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 328;
+  fra.me.line = 338;
   fra.me.meth = LOCATE_standard___file___FileStat___mode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:328 */
+  /* ../lib/standard/file.nit:338 */
   REGB0 = FileStat_mode___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1829,14 +1868,14 @@ val_t standard___file___FileStat___atime(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 330;
+  fra.me.line = 340;
   fra.me.meth = LOCATE_standard___file___FileStat___atime;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:330 */
+  /* ../lib/standard/file.nit:340 */
   REGB0 = FileStat_atime___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1848,14 +1887,14 @@ val_t standard___file___FileStat___ctime(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 331;
+  fra.me.line = 341;
   fra.me.meth = LOCATE_standard___file___FileStat___ctime;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:331 */
+  /* ../lib/standard/file.nit:341 */
   REGB0 = FileStat_ctime___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1867,14 +1906,14 @@ val_t standard___file___FileStat___mtime(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 332;
+  fra.me.line = 342;
   fra.me.meth = LOCATE_standard___file___FileStat___mtime;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:332 */
+  /* ../lib/standard/file.nit:342 */
   REGB0 = FileStat_mtime___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1886,18 +1925,151 @@ val_t standard___file___FileStat___size(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 333;
+  fra.me.line = 343;
   fra.me.meth = LOCATE_standard___file___FileStat___size;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:333 */
+  /* ../lib/standard/file.nit:343 */
   REGB0 = FileStat_size___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_standard___file___FileStat___is_reg[] = "file::FileStat::is_reg";
+val_t standard___file___FileStat___is_reg(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_standard___file;
+  fra.me.line = 345;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_reg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:345 */
+  REGB0 = FileStat_is_reg___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___file___FileStat___is_dir[] = "file::FileStat::is_dir";
+val_t standard___file___FileStat___is_dir(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_standard___file;
+  fra.me.line = 346;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_dir;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:346 */
+  REGB0 = FileStat_is_dir___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___file___FileStat___is_chr[] = "file::FileStat::is_chr";
+val_t standard___file___FileStat___is_chr(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_standard___file;
+  fra.me.line = 347;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_chr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:347 */
+  REGB0 = FileStat_is_chr___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___file___FileStat___is_blk[] = "file::FileStat::is_blk";
+val_t standard___file___FileStat___is_blk(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_standard___file;
+  fra.me.line = 348;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_blk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:348 */
+  REGB0 = FileStat_is_blk___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___file___FileStat___is_fifo[] = "file::FileStat::is_fifo";
+val_t standard___file___FileStat___is_fifo(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_standard___file;
+  fra.me.line = 349;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_fifo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:349 */
+  REGB0 = FileStat_is_fifo___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___file___FileStat___is_lnk[] = "file::FileStat::is_lnk";
+val_t standard___file___FileStat___is_lnk(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_standard___file;
+  fra.me.line = 350;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_lnk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:350 */
+  REGB0 = FileStat_is_lnk___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___file___FileStat___is_sock[] = "file::FileStat::is_sock";
+val_t standard___file___FileStat___is_sock(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_standard___file;
+  fra.me.line = 351;
+  fra.me.meth = LOCATE_standard___file___FileStat___is_sock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:351 */
+  REGB0 = FileStat_is_sock___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
 static const char LOCATE_standard___file___NativeFile___io_read[] = "file::NativeFile::io_read";
 val_t standard___file___NativeFile___io_read(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1905,7 +2077,7 @@ val_t standard___file___NativeFile___io_read(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_standard___file;
-  fra.me.line = 338;
+  fra.me.line = 356;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_read;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1915,7 +2087,7 @@ val_t standard___file___NativeFile___io_read(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/file.nit:338 */
+  /* ../lib/standard/file.nit:356 */
   REGB0 = NativeFile_io_read___out(fra.me.REG[0], fra.me.REG[1], REGB0);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1927,7 +2099,7 @@ val_t standard___file___NativeFile___io_write(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_standard___file;
-  fra.me.line = 339;
+  fra.me.line = 357;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1937,7 +2109,7 @@ val_t standard___file___NativeFile___io_write(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/file.nit:339 */
+  /* ../lib/standard/file.nit:357 */
   REGB0 = NativeFile_io_write___out(fra.me.REG[0], fra.me.REG[1], REGB0);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1949,14 +2121,14 @@ val_t standard___file___NativeFile___io_close(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 340;
+  fra.me.line = 358;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_close;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:340 */
+  /* ../lib/standard/file.nit:358 */
   REGB0 = NativeFile_io_close___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1967,14 +2139,14 @@ val_t standard___file___NativeFile___file_stat(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 341;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_standard___file___NativeFile___file_stat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:341 */
+  /* ../lib/standard/file.nit:359 */
   fra.me.REG[0] = NativeFile_file_stat___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1987,7 +2159,7 @@ void standard___file___NativeFile___io_open_read(val_t p0, val_t p1, int* init_t
   if (init_table[itpos10]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 343;
+  fra.me.line = 361;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_open_read;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1996,7 +2168,7 @@ void standard___file___NativeFile___io_open_read(val_t p0, val_t p1, int* init_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:343 */
+  /* ../lib/standard/file.nit:361 */
   stack_frame_head = fra.me.prev;
   init_table[itpos10] = 1;
   return;
@@ -2009,7 +2181,7 @@ void standard___file___NativeFile___io_open_write(val_t p0, val_t p1, int* init_
   if (init_table[itpos11]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 344;
+  fra.me.line = 362;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_open_write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2018,7 +2190,7 @@ void standard___file___NativeFile___io_open_write(val_t p0, val_t p1, int* init_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/file.nit:344 */
+  /* ../lib/standard/file.nit:362 */
   stack_frame_head = fra.me.prev;
   init_table[itpos11] = 1;
   return;
@@ -2031,14 +2203,14 @@ void standard___file___NativeFile___native_stdin(val_t p0, int* init_table){
   if (init_table[itpos12]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 345;
+  fra.me.line = 363;
   fra.me.meth = LOCATE_standard___file___NativeFile___native_stdin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:345 */
+  /* ../lib/standard/file.nit:363 */
   stack_frame_head = fra.me.prev;
   init_table[itpos12] = 1;
   return;
@@ -2051,14 +2223,14 @@ void standard___file___NativeFile___native_stdout(val_t p0, int* init_table){
   if (init_table[itpos13]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 346;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_standard___file___NativeFile___native_stdout;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:346 */
+  /* ../lib/standard/file.nit:364 */
   stack_frame_head = fra.me.prev;
   init_table[itpos13] = 1;
   return;
@@ -2071,14 +2243,14 @@ void standard___file___NativeFile___native_stderr(val_t p0, int* init_table){
   if (init_table[itpos14]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 347;
+  fra.me.line = 365;
   fra.me.meth = LOCATE_standard___file___NativeFile___native_stderr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/file.nit:347 */
+  /* ../lib/standard/file.nit:365 */
   stack_frame_head = fra.me.prev;
   init_table[itpos14] = 1;
   return;
index e90a1c2..085a1ce 100644 (file)
@@ -2,9 +2,10 @@
 #ifndef standard___file_sep
 #define standard___file_sep
 #include "standard___stream._sep.h"
-#include "standard___string_search._sep.h"
+#include "standard___time._sep.h"
 #include <nit_common.h>
 #include "file._nitni.h"
+#include "standard___file._ffi.h"
 
 extern const classtable_elt_t VFT_standard___file___FStream[];
 
@@ -19,8 +20,8 @@ extern const classtable_elt_t VFT_standard___file___Stdout[];
 extern const classtable_elt_t VFT_standard___file___Stderr[];
 
 extern const classtable_elt_t VFT_standard___file___FileStat[];
-struct TBOX_FileStat { const classtable_elt_t * vft; bigint object_id; void* val;};
-val_t BOX_FileStat(void* val);
+struct TBOX_FileStat { const classtable_elt_t * vft; bigint object_id;  struct stat *  val;};
+val_t BOX_FileStat( struct stat *  val);
 #define UNBOX_FileStat(x) (((struct TBOX_FileStat *)(VAL2OBJ(x)))->val)
 
 extern const classtable_elt_t VFT_standard___file___NativeFile[];
@@ -75,19 +76,21 @@ extern const int SFT_standard___file[];
 #define CALL_standard___file___Stderr___init(recv) ((standard___file___Stderr___init_t)CALL((recv), (SFT_standard___file[21] + 1)))
 #define CALL_standard___file___String___file_exists(recv) ((standard___file___String___file_exists_t)CALL((recv), (SFT_standard___file[22] + 0)))
 #define CALL_standard___file___String___file_stat(recv) ((standard___file___String___file_stat_t)CALL((recv), (SFT_standard___file[22] + 1)))
-#define CALL_standard___file___String___file_delete(recv) ((standard___file___String___file_delete_t)CALL((recv), (SFT_standard___file[22] + 2)))
-#define CALL_standard___file___String___strip_extension(recv) ((standard___file___String___strip_extension_t)CALL((recv), (SFT_standard___file[22] + 3)))
-#define CALL_standard___file___String___basename(recv) ((standard___file___String___basename_t)CALL((recv), (SFT_standard___file[22] + 4)))
-#define CALL_standard___file___String___dirname(recv) ((standard___file___String___dirname_t)CALL((recv), (SFT_standard___file[22] + 5)))
-#define CALL_standard___file___String___simplify_path(recv) ((standard___file___String___simplify_path_t)CALL((recv), (SFT_standard___file[22] + 6)))
-#define CALL_standard___file___String___join_path(recv) ((standard___file___String___join_path_t)CALL((recv), (SFT_standard___file[22] + 7)))
-#define CALL_standard___file___String___mkdir(recv) ((standard___file___String___mkdir_t)CALL((recv), (SFT_standard___file[22] + 8)))
-#define CALL_standard___file___String___file_extension(recv) ((standard___file___String___file_extension_t)CALL((recv), (SFT_standard___file[22] + 9)))
-#define CALL_standard___file___String___files(recv) ((standard___file___String___files_t)CALL((recv), (SFT_standard___file[22] + 10)))
+#define CALL_standard___file___String___file_lstat(recv) ((standard___file___String___file_lstat_t)CALL((recv), (SFT_standard___file[22] + 2)))
+#define CALL_standard___file___String___file_delete(recv) ((standard___file___String___file_delete_t)CALL((recv), (SFT_standard___file[22] + 3)))
+#define CALL_standard___file___String___strip_extension(recv) ((standard___file___String___strip_extension_t)CALL((recv), (SFT_standard___file[22] + 4)))
+#define CALL_standard___file___String___basename(recv) ((standard___file___String___basename_t)CALL((recv), (SFT_standard___file[22] + 5)))
+#define CALL_standard___file___String___dirname(recv) ((standard___file___String___dirname_t)CALL((recv), (SFT_standard___file[22] + 6)))
+#define CALL_standard___file___String___simplify_path(recv) ((standard___file___String___simplify_path_t)CALL((recv), (SFT_standard___file[22] + 7)))
+#define CALL_standard___file___String___join_path(recv) ((standard___file___String___join_path_t)CALL((recv), (SFT_standard___file[22] + 8)))
+#define CALL_standard___file___String___mkdir(recv) ((standard___file___String___mkdir_t)CALL((recv), (SFT_standard___file[22] + 9)))
+#define CALL_standard___file___String___file_extension(recv) ((standard___file___String___file_extension_t)CALL((recv), (SFT_standard___file[22] + 10)))
+#define CALL_standard___file___String___files(recv) ((standard___file___String___files_t)CALL((recv), (SFT_standard___file[22] + 11)))
 #define CALL_standard___file___NativeString___file_exists(recv) ((standard___file___NativeString___file_exists_t)CALL((recv), (SFT_standard___file[23] + 0)))
 #define CALL_standard___file___NativeString___file_stat(recv) ((standard___file___NativeString___file_stat_t)CALL((recv), (SFT_standard___file[23] + 1)))
-#define CALL_standard___file___NativeString___file_mkdir(recv) ((standard___file___NativeString___file_mkdir_t)CALL((recv), (SFT_standard___file[23] + 2)))
-#define CALL_standard___file___NativeString___file_delete(recv) ((standard___file___NativeString___file_delete_t)CALL((recv), (SFT_standard___file[23] + 3)))
+#define CALL_standard___file___NativeString___file_lstat(recv) ((standard___file___NativeString___file_lstat_t)CALL((recv), (SFT_standard___file[23] + 2)))
+#define CALL_standard___file___NativeString___file_mkdir(recv) ((standard___file___NativeString___file_mkdir_t)CALL((recv), (SFT_standard___file[23] + 3)))
+#define CALL_standard___file___NativeString___file_delete(recv) ((standard___file___NativeString___file_delete_t)CALL((recv), (SFT_standard___file[23] + 4)))
 #define ID_standard___file___FileStat (SFT_standard___file[24])
 #define COLOR_standard___file___FileStat (SFT_standard___file[25])
 #define INIT_TABLE_POS_standard___file___FileStat (SFT_standard___file[26] + 0)
@@ -96,6 +99,13 @@ extern const int SFT_standard___file[];
 #define CALL_standard___file___FileStat___ctime(recv) ((standard___file___FileStat___ctime_t)CALL((recv), (SFT_standard___file[26] + 3)))
 #define CALL_standard___file___FileStat___mtime(recv) ((standard___file___FileStat___mtime_t)CALL((recv), (SFT_standard___file[26] + 4)))
 #define CALL_standard___file___FileStat___size(recv) ((standard___file___FileStat___size_t)CALL((recv), (SFT_standard___file[26] + 5)))
+#define CALL_standard___file___FileStat___is_reg(recv) ((standard___file___FileStat___is_reg_t)CALL((recv), (SFT_standard___file[26] + 6)))
+#define CALL_standard___file___FileStat___is_dir(recv) ((standard___file___FileStat___is_dir_t)CALL((recv), (SFT_standard___file[26] + 7)))
+#define CALL_standard___file___FileStat___is_chr(recv) ((standard___file___FileStat___is_chr_t)CALL((recv), (SFT_standard___file[26] + 8)))
+#define CALL_standard___file___FileStat___is_blk(recv) ((standard___file___FileStat___is_blk_t)CALL((recv), (SFT_standard___file[26] + 9)))
+#define CALL_standard___file___FileStat___is_fifo(recv) ((standard___file___FileStat___is_fifo_t)CALL((recv), (SFT_standard___file[26] + 10)))
+#define CALL_standard___file___FileStat___is_lnk(recv) ((standard___file___FileStat___is_lnk_t)CALL((recv), (SFT_standard___file[26] + 11)))
+#define CALL_standard___file___FileStat___is_sock(recv) ((standard___file___FileStat___is_sock_t)CALL((recv), (SFT_standard___file[26] + 12)))
 #define ID_standard___file___NativeFile (SFT_standard___file[27])
 #define COLOR_standard___file___NativeFile (SFT_standard___file[28])
 #define INIT_TABLE_POS_standard___file___NativeFile (SFT_standard___file[29] + 0)
@@ -178,6 +188,8 @@ val_t standard___file___String___file_exists(val_t p0);
 typedef val_t (*standard___file___String___file_exists_t)(val_t p0);
 val_t standard___file___String___file_stat(val_t p0);
 typedef val_t (*standard___file___String___file_stat_t)(val_t p0);
+val_t standard___file___String___file_lstat(val_t p0);
+typedef val_t (*standard___file___String___file_lstat_t)(val_t p0);
 val_t standard___file___String___file_delete(val_t p0);
 typedef val_t (*standard___file___String___file_delete_t)(val_t p0);
 val_t standard___file___String___strip_extension(val_t p0, val_t p1);
@@ -196,14 +208,14 @@ val_t standard___file___String___file_extension(val_t p0);
 typedef val_t (*standard___file___String___file_extension_t)(val_t p0);
 val_t standard___file___String___files(val_t p0);
 typedef val_t (*standard___file___String___files_t)(val_t p0);
-val_t NEW_String_standard___string___String___from_cstring(val_t p0);
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3);
 val_t standard___file___NativeString___file_exists(val_t p0);
 typedef val_t (*standard___file___NativeString___file_exists_t)(val_t p0);
 val_t standard___file___NativeString___file_stat(val_t p0);
 typedef val_t (*standard___file___NativeString___file_stat_t)(val_t p0);
+val_t standard___file___NativeString___file_lstat(val_t p0);
+typedef val_t (*standard___file___NativeString___file_lstat_t)(val_t p0);
 val_t standard___file___NativeString___file_mkdir(val_t p0);
 typedef val_t (*standard___file___NativeString___file_mkdir_t)(val_t p0);
 val_t standard___file___NativeString___file_delete(val_t p0);
@@ -219,6 +231,20 @@ val_t standard___file___FileStat___mtime(val_t p0);
 typedef val_t (*standard___file___FileStat___mtime_t)(val_t p0);
 val_t standard___file___FileStat___size(val_t p0);
 typedef val_t (*standard___file___FileStat___size_t)(val_t p0);
+val_t standard___file___FileStat___is_reg(val_t p0);
+typedef val_t (*standard___file___FileStat___is_reg_t)(val_t p0);
+val_t standard___file___FileStat___is_dir(val_t p0);
+typedef val_t (*standard___file___FileStat___is_dir_t)(val_t p0);
+val_t standard___file___FileStat___is_chr(val_t p0);
+typedef val_t (*standard___file___FileStat___is_chr_t)(val_t p0);
+val_t standard___file___FileStat___is_blk(val_t p0);
+typedef val_t (*standard___file___FileStat___is_blk_t)(val_t p0);
+val_t standard___file___FileStat___is_fifo(val_t p0);
+typedef val_t (*standard___file___FileStat___is_fifo_t)(val_t p0);
+val_t standard___file___FileStat___is_lnk(val_t p0);
+typedef val_t (*standard___file___FileStat___is_lnk_t)(val_t p0);
+val_t standard___file___FileStat___is_sock(val_t p0);
+typedef val_t (*standard___file___FileStat___is_sock_t)(val_t p0);
 val_t standard___file___NativeFile___io_read(val_t p0, val_t p1, val_t p2);
 typedef val_t (*standard___file___NativeFile___io_read_t)(val_t p0, val_t p1, val_t p2);
 val_t standard___file___NativeFile___io_write(val_t p0, val_t p1, val_t p2);
index c0d85ec..cff463f 100644 (file)
@@ -18,7 +18,7 @@ val_t standard___hash___Object___hash(val_t p0){
   /* ../lib/standard/hash.nit:24 */
   REGB0 = CALL_standard___kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(8);
-  /* ../lib/standard/kernel.nit:242 */
+  /* ../lib/standard/kernel.nit:249 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)/UNTAG_Int(REGB1));
   /* ../lib/standard/hash.nit:24 */
   goto label1;
@@ -58,7 +58,7 @@ val_t standard___hash___Char___hash(val_t p0){
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:416 */
+  /* ../lib/standard/kernel.nit:471 */
   REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
   /* ../lib/standard/hash.nit:32 */
   goto label1;
index 793429f..3c70ee0 100644 (file)
@@ -109,15 +109,15 @@ void standard___kernel___Object___output(val_t p0){
   fra.me.REG[0] = p0;
   /* ../lib/standard/kernel.nit:54 */
   REGB0 = TAG_Char('<');
-  /* ../lib/standard/kernel.nit:383 */
+  /* ../lib/standard/kernel.nit:436 */
   printf("%c", (unsigned char)UNTAG_Char(REGB0));;
   /* ../lib/standard/kernel.nit:55 */
   REGB0 = CALL_standard___kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:232 */
+  /* ../lib/standard/kernel.nit:239 */
   printf("%ld\n", UNTAG_Int(REGB0));;
   /* ../lib/standard/kernel.nit:56 */
   REGB0 = TAG_Char('>');
-  /* ../lib/standard/kernel.nit:383 */
+  /* ../lib/standard/kernel.nit:436 */
   printf("%c", (unsigned char)UNTAG_Char(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -350,7 +350,7 @@ val_t standard___kernel___Comparable_____leqg(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     /* ../lib/standard/kernel.nit:108 */
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB0));
     /* ../lib/standard/kernel.nit:108 */
     goto label1;
@@ -586,49 +586,49 @@ val_t standard___kernel___Discrete___distance(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:168 */
+  /* ../lib/standard/kernel.nit:169 */
   REGB0 = CALL_standard___kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/kernel.nit:169 */
-    fra.me.REG[2] = fra.me.REG[0];
     /* ../lib/standard/kernel.nit:170 */
+    fra.me.REG[2] = fra.me.REG[0];
+    /* ../lib/standard/kernel.nit:171 */
     fra.me.REG[3] = fra.me.REG[1];
   } else {
-    /* ../lib/standard/kernel.nit:171 */
+    /* ../lib/standard/kernel.nit:172 */
     REGB0 = CALL_standard___kernel___Comparable_____g(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/kernel.nit:172 */
-      fra.me.REG[2] = fra.me.REG[1];
       /* ../lib/standard/kernel.nit:173 */
+      fra.me.REG[2] = fra.me.REG[1];
+      /* ../lib/standard/kernel.nit:174 */
       fra.me.REG[3] = fra.me.REG[0];
     } else {
-      /* ../lib/standard/kernel.nit:175 */
+      /* ../lib/standard/kernel.nit:176 */
       REGB0 = TAG_Int(0);
       goto label1;
     }
   }
-  /* ../lib/standard/kernel.nit:178 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/kernel.nit:179 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/kernel.nit:180 */
   while(1) {
     REGB2 = CALL_standard___kernel___Comparable_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/kernel.nit:180 */
+      /* ../lib/standard/kernel.nit:181 */
       fra.me.REG[0] = CALL_standard___kernel___Discrete___succ(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[0];
-      /* ../lib/standard/kernel.nit:181 */
+      /* ../lib/standard/kernel.nit:182 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:181 */
+      /* ../lib/standard/kernel.nit:182 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:179 */
+      /* ../lib/standard/kernel.nit:180 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/kernel.nit:183 */
+  /* ../lib/standard/kernel.nit:184 */
   REGB0 = REGB1;
   goto label1;
   label1: while(0);
@@ -642,13 +642,13 @@ val_t standard___kernel___Bool___object_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 197;
+  fra.me.line = 198;
   fra.me.meth = LOCATE_standard___kernel___Bool___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:197 */
+  /* ../lib/standard/kernel.nit:198 */
   REGB0 = TAG_Int(UNTAG_Bool(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -660,7 +660,7 @@ val_t standard___kernel___Bool_____eqeq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 198;
+  fra.me.line = 199;
   fra.me.meth = LOCATE_standard___kernel___Bool_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -668,7 +668,7 @@ val_t standard___kernel___Bool_____eqeq(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ../lib/standard/kernel.nit:198 */
+  /* ../lib/standard/kernel.nit:199 */
   REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -680,7 +680,7 @@ val_t standard___kernel___Bool_____neq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 199;
+  fra.me.line = 200;
   fra.me.meth = LOCATE_standard___kernel___Bool_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -688,7 +688,7 @@ val_t standard___kernel___Bool_____neq(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ../lib/standard/kernel.nit:199 */
+  /* ../lib/standard/kernel.nit:200 */
   REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -700,13 +700,13 @@ void standard___kernel___Bool___output(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 200;
+  fra.me.line = 201;
   fra.me.meth = LOCATE_standard___kernel___Bool___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:200 */
+  /* ../lib/standard/kernel.nit:201 */
   (void)printf(UNTAG_Bool(REGB0)?"true\n":"false\n");;
   stack_frame_head = fra.me.prev;
   return;
@@ -718,14 +718,14 @@ val_t standard___kernel___Float___object_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 206;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_standard___kernel___Float___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/kernel.nit:206 */
+  /* ../lib/standard/kernel.nit:207 */
   REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -736,14 +736,14 @@ void standard___kernel___Float___output(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 207;
+  fra.me.line = 208;
   fra.me.meth = LOCATE_standard___kernel___Float___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/kernel.nit:207 */
+  /* ../lib/standard/kernel.nit:208 */
   printf("%f\n", UNBOX_Float(fra.me.REG[0]));;
   stack_frame_head = fra.me.prev;
   return;
@@ -755,7 +755,7 @@ val_t standard___kernel___Float_____leq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 209;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_standard___kernel___Float_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -764,7 +764,7 @@ val_t standard___kernel___Float_____leq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:209 */
+  /* ../lib/standard/kernel.nit:210 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])<=UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -776,7 +776,7 @@ val_t standard___kernel___Float_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 210;
+  fra.me.line = 211;
   fra.me.meth = LOCATE_standard___kernel___Float_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -785,7 +785,7 @@ val_t standard___kernel___Float_____l(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:210 */
+  /* ../lib/standard/kernel.nit:211 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])<UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -797,7 +797,7 @@ val_t standard___kernel___Float_____geq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 211;
+  fra.me.line = 212;
   fra.me.meth = LOCATE_standard___kernel___Float_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -806,7 +806,7 @@ val_t standard___kernel___Float_____geq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:211 */
+  /* ../lib/standard/kernel.nit:212 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>=UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -818,7 +818,7 @@ val_t standard___kernel___Float_____g(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 212;
+  fra.me.line = 213;
   fra.me.meth = LOCATE_standard___kernel___Float_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -827,7 +827,7 @@ val_t standard___kernel___Float_____g(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:212 */
+  /* ../lib/standard/kernel.nit:213 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -838,7 +838,7 @@ val_t standard___kernel___Float_____plus(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 213;
+  fra.me.line = 214;
   fra.me.meth = LOCATE_standard___kernel___Float_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -847,7 +847,7 @@ val_t standard___kernel___Float_____plus(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:213 */
+  /* ../lib/standard/kernel.nit:214 */
   fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])+UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -858,14 +858,14 @@ val_t standard___kernel___Float___unary__minus(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 214;
+  fra.me.line = 215;
   fra.me.meth = LOCATE_standard___kernel___Float___unary__minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/kernel.nit:214 */
+  /* ../lib/standard/kernel.nit:215 */
   fra.me.REG[0] = BOX_Float(-UNBOX_Float(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -876,7 +876,7 @@ val_t standard___kernel___Float_____minus(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 215;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_standard___kernel___Float_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -885,7 +885,7 @@ val_t standard___kernel___Float_____minus(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:215 */
+  /* ../lib/standard/kernel.nit:216 */
   fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])-UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -896,7 +896,7 @@ val_t standard___kernel___Float_____star(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 216;
+  fra.me.line = 217;
   fra.me.meth = LOCATE_standard___kernel___Float_____star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -905,7 +905,7 @@ val_t standard___kernel___Float_____star(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:216 */
+  /* ../lib/standard/kernel.nit:217 */
   fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])*UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -916,7 +916,7 @@ val_t standard___kernel___Float_____slash(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 217;
+  fra.me.line = 218;
   fra.me.meth = LOCATE_standard___kernel___Float_____slash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -925,7 +925,7 @@ val_t standard___kernel___Float_____slash(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/kernel.nit:217 */
+  /* ../lib/standard/kernel.nit:218 */
   fra.me.REG[1] = BOX_Float(UNBOX_Float(fra.me.REG[0])/UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -937,14 +937,14 @@ val_t standard___kernel___Float___to_i(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 219;
+  fra.me.line = 220;
   fra.me.meth = LOCATE_standard___kernel___Float___to_i;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/kernel.nit:219 */
+  /* ../lib/standard/kernel.nit:220 */
   REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -956,13 +956,13 @@ val_t standard___kernel___Int___object_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 229;
+  fra.me.line = 236;
   fra.me.meth = LOCATE_standard___kernel___Int___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:229 */
+  /* ../lib/standard/kernel.nit:236 */
   REGB0 = REGB0;
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -974,7 +974,7 @@ val_t standard___kernel___Int_____eqeq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 230;
+  fra.me.line = 237;
   fra.me.meth = LOCATE_standard___kernel___Int_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -982,7 +982,7 @@ val_t standard___kernel___Int_____eqeq(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ../lib/standard/kernel.nit:230 */
+  /* ../lib/standard/kernel.nit:237 */
   REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -994,7 +994,7 @@ val_t standard___kernel___Int_____neq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 231;
+  fra.me.line = 238;
   fra.me.meth = LOCATE_standard___kernel___Int_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1002,7 +1002,7 @@ val_t standard___kernel___Int_____neq(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ../lib/standard/kernel.nit:231 */
+  /* ../lib/standard/kernel.nit:238 */
   REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1014,13 +1014,13 @@ void standard___kernel___Int___output(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 232;
+  fra.me.line = 239;
   fra.me.meth = LOCATE_standard___kernel___Int___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:232 */
+  /* ../lib/standard/kernel.nit:239 */
   printf("%ld\n", UNTAG_Int(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -1034,7 +1034,7 @@ val_t standard___kernel___Int_____leq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 234;
+  fra.me.line = 241;
   fra.me.meth = LOCATE_standard___kernel___Int_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1046,7 +1046,7 @@ val_t standard___kernel___Int_____leq(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1060,7 +1060,7 @@ val_t standard___kernel___Int_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 235;
+  fra.me.line = 242;
   fra.me.meth = LOCATE_standard___kernel___Int_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1072,7 +1072,7 @@ val_t standard___kernel___Int_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1086,7 +1086,7 @@ val_t standard___kernel___Int_____geq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 236;
+  fra.me.line = 243;
   fra.me.meth = LOCATE_standard___kernel___Int_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1098,7 +1098,7 @@ val_t standard___kernel___Int_____geq(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1112,7 +1112,7 @@ val_t standard___kernel___Int_____g(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 237;
+  fra.me.line = 244;
   fra.me.meth = LOCATE_standard___kernel___Int_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1124,7 +1124,7 @@ val_t standard___kernel___Int_____g(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1137,14 +1137,14 @@ val_t standard___kernel___Int_____plus(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 238;
+  fra.me.line = 245;
   fra.me.meth = LOCATE_standard___kernel___Int_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1156,13 +1156,13 @@ val_t standard___kernel___Int___unary__minus(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 239;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_standard___kernel___Int___unary__minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1175,14 +1175,14 @@ val_t standard___kernel___Int_____minus(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 240;
+  fra.me.line = 247;
   fra.me.meth = LOCATE_standard___kernel___Int_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1195,14 +1195,14 @@ val_t standard___kernel___Int_____star(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 241;
+  fra.me.line = 248;
   fra.me.meth = LOCATE_standard___kernel___Int_____star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:241 */
+  /* ../lib/standard/kernel.nit:248 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1215,14 +1215,14 @@ val_t standard___kernel___Int_____slash(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 242;
+  fra.me.line = 249;
   fra.me.meth = LOCATE_standard___kernel___Int_____slash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:242 */
+  /* ../lib/standard/kernel.nit:249 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)/UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1235,14 +1235,14 @@ val_t standard___kernel___Int_____percent(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 243;
+  fra.me.line = 250;
   fra.me.meth = LOCATE_standard___kernel___Int_____percent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:243 */
+  /* ../lib/standard/kernel.nit:250 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)%UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1255,14 +1255,14 @@ val_t standard___kernel___Int___lshift(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 244;
+  fra.me.line = 252;
   fra.me.meth = LOCATE_standard___kernel___Int___lshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:244 */
+  /* ../lib/standard/kernel.nit:252 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)<<UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1275,14 +1275,14 @@ val_t standard___kernel___Int___rshift(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 245;
+  fra.me.line = 257;
   fra.me.meth = LOCATE_standard___kernel___Int___rshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:245 */
+  /* ../lib/standard/kernel.nit:257 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)>>UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1294,14 +1294,14 @@ val_t standard___kernel___Int___to_f(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 247;
+  fra.me.line = 262;
   fra.me.meth = LOCATE_standard___kernel___Int___to_f;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:247 */
+  /* ../lib/standard/kernel.nit:262 */
   fra.me.REG[0] = BOX_Float((float)UNTAG_Int(REGB0));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1313,13 +1313,13 @@ val_t standard___kernel___Int___succ(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 250;
+  fra.me.line = 268;
   fra.me.meth = LOCATE_standard___kernel___Int___succ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:250 */
+  /* ../lib/standard/kernel.nit:268 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)+1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1331,13 +1331,13 @@ val_t standard___kernel___Int___prec(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 251;
+  fra.me.line = 269;
   fra.me.meth = LOCATE_standard___kernel___Int___prec;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:251 */
+  /* ../lib/standard/kernel.nit:269 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)-1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1351,7 +1351,7 @@ val_t standard___kernel___Int___distance(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 252;
+  fra.me.line = 270;
   fra.me.meth = LOCATE_standard___kernel___Int___distance;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1363,26 +1363,26 @@ val_t standard___kernel___Int___distance(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:255 */
+  /* ../lib/standard/kernel.nit:273 */
   REGB0 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ../lib/standard/kernel.nit:255 */
+  /* ../lib/standard/kernel.nit:273 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/kernel.nit:256 */
+    /* ../lib/standard/kernel.nit:274 */
     REGB0 = REGB1;
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:258 */
+    /* ../lib/standard/kernel.nit:276 */
     REGB0 = REGB1;
     goto label1;
   }
@@ -1400,7 +1400,7 @@ val_t standard___kernel___Int_____leqg(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 262;
+  fra.me.line = 280;
   fra.me.meth = LOCATE_standard___kernel___Int_____leqg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1417,15 +1417,15 @@ val_t standard___kernel___Int_____leqg(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:264 */
+  /* ../lib/standard/kernel.nit:282 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:265 */
+    /* ../lib/standard/kernel.nit:283 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-    /* ../lib/standard/kernel.nit:265 */
+    /* ../lib/standard/kernel.nit:283 */
     goto label1;
   } else {
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1433,16 +1433,16 @@ val_t standard___kernel___Int_____leqg(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:266 */
+    /* ../lib/standard/kernel.nit:284 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/kernel.nit:267 */
+      /* ../lib/standard/kernel.nit:285 */
       REGB0 = TAG_Int(1);
       REGB2 = REGB0;
       goto label1;
     } else {
-      /* ../lib/standard/kernel.nit:269 */
+      /* ../lib/standard/kernel.nit:287 */
       REGB0 = TAG_Int(0);
       REGB2 = REGB0;
       goto label1;
@@ -1462,7 +1462,7 @@ val_t standard___kernel___Int___is_between(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_standard___kernel;
-  fra.me.line = 273;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_standard___kernel___Int___is_between;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1485,9 +1485,9 @@ val_t standard___kernel___Int___is_between(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:275 */
+  /* ../lib/standard/kernel.nit:293 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(1);
   } else {
@@ -1496,17 +1496,17 @@ val_t standard___kernel___Int___is_between(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:275 */
+    /* ../lib/standard/kernel.nit:293 */
     REGB1 = REGB0;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/kernel.nit:276 */
+    /* ../lib/standard/kernel.nit:294 */
     REGB1 = TAG_Bool(0);
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:278 */
+    /* ../lib/standard/kernel.nit:296 */
     REGB0 = TAG_Bool(1);
     REGB1 = REGB0;
     goto label1;
@@ -1524,7 +1524,7 @@ val_t standard___kernel___Int___max(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 282;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_standard___kernel___Int___max;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1541,14 +1541,14 @@ val_t standard___kernel___Int___max(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:284 */
+  /* ../lib/standard/kernel.nit:302 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:285 */
+    /* ../lib/standard/kernel.nit:303 */
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:287 */
+    /* ../lib/standard/kernel.nit:305 */
     REGB1 = REGB0;
     goto label1;
   }
@@ -1565,7 +1565,7 @@ val_t standard___kernel___Int___min(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 291;
+  fra.me.line = 309;
   fra.me.meth = LOCATE_standard___kernel___Int___min;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1582,14 +1582,14 @@ val_t standard___kernel___Int___min(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-  /* ../lib/standard/kernel.nit:293 */
+  /* ../lib/standard/kernel.nit:311 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:294 */
+    /* ../lib/standard/kernel.nit:312 */
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:296 */
+    /* ../lib/standard/kernel.nit:314 */
     REGB1 = REGB0;
     goto label1;
   }
@@ -1604,13 +1604,13 @@ val_t standard___kernel___Int___ascii(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 300;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_standard___kernel___Int___ascii;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:300 */
+  /* ../lib/standard/kernel.nit:318 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1624,88 +1624,230 @@ val_t standard___kernel___Int___digit_count(val_t p0, val_t p1){
   val_t REGB3;
   val_t REGB4;
   val_t REGB5;
+  val_t REGB6;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 303;
+  fra.me.line = 324;
   fra.me.meth = LOCATE_standard___kernel___Int___digit_count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:309 */
-  REGB2 = TAG_Int(0);
-  REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  /* ../lib/standard/kernel.nit:330 */
+  REGB2 = TAG_Int(10);
+  REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
+    /* ../lib/standard/kernel.nit:237 */
+    REGB2 = TAG_Bool((REGB1)==(REGB2));
+    /* ../lib/standard/kernel.nit:330 */
+    REGB3 = REGB2;
+  }
+  if (UNTAG_Bool(REGB3)) {
+    REGB3 = CALL_standard___kernel___Int___digit_count_base_10(REGB0)(REGB0);
+    goto label1;
+  }
+  /* ../lib/standard/kernel.nit:334 */
+  REGB2 = TAG_Int(0);
+  REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB4)) {
+  } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ../lib/standard/kernel.nit:309 */
+  /* ../lib/standard/kernel.nit:334 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:310 */
+    /* ../lib/standard/kernel.nit:335 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
-    REGB3 = TAG_Int(-UNTAG_Int(REGB0));
+    /* ../lib/standard/kernel.nit:246 */
+    REGB4 = TAG_Int(-UNTAG_Int(REGB0));
   } else {
-    /* ../lib/standard/kernel.nit:312 */
-    REGB4 = TAG_Int(0);
-    REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
-    if (UNTAG_Bool(REGB5)) {
+    /* ../lib/standard/kernel.nit:337 */
+    REGB5 = TAG_Int(0);
+    REGB6 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB5));
+    if (UNTAG_Bool(REGB6)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
-      REGB4 = TAG_Bool((REGB0)==(REGB4));
-      /* ../lib/standard/kernel.nit:312 */
-      REGB5 = REGB4;
+      /* ../lib/standard/kernel.nit:237 */
+      REGB5 = TAG_Bool((REGB0)==(REGB5));
+      /* ../lib/standard/kernel.nit:337 */
+      REGB6 = REGB5;
     }
-    if (UNTAG_Bool(REGB5)) {
-      /* ../lib/standard/kernel.nit:313 */
-      REGB5 = TAG_Int(1);
+    if (UNTAG_Bool(REGB6)) {
+      /* ../lib/standard/kernel.nit:338 */
+      REGB6 = TAG_Int(1);
+      REGB3 = REGB6;
       goto label1;
     } else {
-      /* ../lib/standard/kernel.nit:315 */
-      REGB4 = TAG_Int(0);
-      REGB2 = REGB4;
-      /* ../lib/standard/kernel.nit:316 */
-      REGB3 = REGB0;
+      /* ../lib/standard/kernel.nit:340 */
+      REGB6 = TAG_Int(0);
+      REGB2 = REGB6;
+      /* ../lib/standard/kernel.nit:341 */
+      REGB4 = REGB0;
     }
   }
-  /* ../lib/standard/kernel.nit:319 */
+  /* ../lib/standard/kernel.nit:344 */
   while(1) {
     REGB0 = TAG_Int(0);
-    REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB4)) {
+    REGB6 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB6)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
-    REGB0 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:319 */
+    /* ../lib/standard/kernel.nit:244 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB0));
+    /* ../lib/standard/kernel.nit:344 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/kernel.nit:320 */
+      /* ../lib/standard/kernel.nit:345 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/kernel.nit:320 */
+      /* ../lib/standard/kernel.nit:345 */
       REGB2 = REGB0;
-      /* ../lib/standard/kernel.nit:242 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:321 */
-      REGB3 = REGB0;
+      /* ../lib/standard/kernel.nit:249 */
+      REGB0 = TAG_Int(UNTAG_Int(REGB4)/UNTAG_Int(REGB1));
+      /* ../lib/standard/kernel.nit:346 */
+      REGB4 = REGB0;
     } else {
-      /* ../lib/standard/kernel.nit:319 */
+      /* ../lib/standard/kernel.nit:344 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/kernel.nit:323 */
-  REGB5 = REGB2;
+  /* ../lib/standard/kernel.nit:348 */
+  REGB3 = REGB2;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return REGB5;
+  return REGB3;
+}
+static const char LOCATE_standard___kernel___Int___digit_count_base_10[] = "kernel::Int::digit_count_base_10";
+val_t standard___kernel___Int___digit_count_base_10(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___kernel;
+  fra.me.line = 351;
+  fra.me.meth = LOCATE_standard___kernel___Int___digit_count_base_10;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  REGB0 = p0;
+  /* ../lib/standard/kernel.nit:356 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:242 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  /* ../lib/standard/kernel.nit:356 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ../lib/standard/kernel.nit:357 */
+    REGB1 = TAG_Int(2);
+    /* ../lib/standard/kernel.nit:246 */
+    REGB2 = TAG_Int(-UNTAG_Int(REGB0));
+  } else {
+    /* ../lib/standard/kernel.nit:360 */
+    REGB3 = TAG_Int(1);
+    REGB1 = REGB3;
+    /* ../lib/standard/kernel.nit:361 */
+    REGB2 = REGB0;
+  }
+  /* ../lib/standard/kernel.nit:363 */
+  while(1) {
+    /* ../lib/standard/kernel.nit:364 */
+    REGB0 = TAG_Int(10);
+    REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
+    /* ../lib/standard/kernel.nit:364 */
+    if (UNTAG_Bool(REGB0)) {
+      REGB0 = REGB1;
+      goto label1;
+    }
+    /* ../lib/standard/kernel.nit:365 */
+    REGB3 = TAG_Int(100);
+    REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB4)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+    /* ../lib/standard/kernel.nit:365 */
+    if (UNTAG_Bool(REGB3)) {
+      REGB3 = TAG_Int(1);
+      /* ../lib/standard/kernel.nit:245 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+      /* ../lib/standard/kernel.nit:365 */
+      REGB0 = REGB3;
+      goto label1;
+    }
+    /* ../lib/standard/kernel.nit:366 */
+    REGB3 = TAG_Int(1000);
+    REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB4)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+    /* ../lib/standard/kernel.nit:366 */
+    if (UNTAG_Bool(REGB3)) {
+      REGB3 = TAG_Int(2);
+      /* ../lib/standard/kernel.nit:245 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+      /* ../lib/standard/kernel.nit:366 */
+      REGB0 = REGB3;
+      goto label1;
+    }
+    /* ../lib/standard/kernel.nit:367 */
+    REGB3 = TAG_Int(10000);
+    REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB4)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:242 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+    /* ../lib/standard/kernel.nit:367 */
+    if (UNTAG_Bool(REGB3)) {
+      REGB3 = TAG_Int(3);
+      /* ../lib/standard/kernel.nit:245 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+      /* ../lib/standard/kernel.nit:367 */
+      REGB0 = REGB3;
+      goto label1;
+    }
+    /* ../lib/standard/kernel.nit:368 */
+    REGB3 = TAG_Int(10000);
+    /* ../lib/standard/kernel.nit:249 */
+    REGB3 = TAG_Int(UNTAG_Int(REGB2)/UNTAG_Int(REGB3));
+    /* ../lib/standard/kernel.nit:368 */
+    REGB2 = REGB3;
+    /* ../lib/standard/kernel.nit:369 */
+    REGB3 = TAG_Int(4);
+    /* ../lib/standard/kernel.nit:245 */
+    REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+    /* ../lib/standard/kernel.nit:369 */
+    REGB1 = REGB3;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
 static const char LOCATE_standard___kernel___Int___to_c[] = "kernel::Int::to_c";
 val_t standard___kernel___Int___to_c(val_t p0){
@@ -1717,22 +1859,22 @@ val_t standard___kernel___Int___to_c(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 326;
+  fra.me.line = 373;
   fra.me.meth = LOCATE_standard___kernel___Int___to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:331 */
+  /* ../lib/standard/kernel.nit:380 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:331 */
+  /* ../lib/standard/kernel.nit:380 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Int(36);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1740,52 +1882,52 @@ val_t standard___kernel___Int___to_c(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/kernel.nit:331 */
+    /* ../lib/standard/kernel.nit:380 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___kernel, 331);
+    nit_abort("Assert failed", NULL, LOCATE_standard___kernel, 380);
   }
-  /* ../lib/standard/kernel.nit:332 */
+  /* ../lib/standard/kernel.nit:381 */
   REGB1 = TAG_Int(10);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:332 */
+  /* ../lib/standard/kernel.nit:381 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/kernel.nit:333 */
+    /* ../lib/standard/kernel.nit:382 */
     REGB1 = TAG_Char('0');
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:300 */
+    /* ../lib/standard/kernel.nit:318 */
     REGB1 = TAG_Char(UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:333 */
+    /* ../lib/standard/kernel.nit:382 */
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:384 */
     REGB2 = TAG_Char('a');
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB2 = TAG_Int((unsigned char)UNTAG_Char(REGB2));
-    /* ../lib/standard/kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:384 */
     REGB3 = TAG_Int(10);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:300 */
+    /* ../lib/standard/kernel.nit:318 */
     REGB3 = TAG_Char(UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:384 */
     REGB1 = REGB3;
     goto label1;
   }
@@ -1803,7 +1945,7 @@ void standard___kernel___Int___enumerate_to(val_t p0, val_t p1, struct stack_fra
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 339;
+  fra.me.line = 388;
   fra.me.meth = LOCATE_standard___kernel___Int___enumerate_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1813,30 +1955,30 @@ void standard___kernel___Int___enumerate_to(val_t p0, val_t p1, struct stack_fra
   REGB0 = p0;
   REGB1 = p1;
   CREG[0] = clos_fun0;
-  /* ../lib/standard/kernel.nit:344 */
+  /* ../lib/standard/kernel.nit:393 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:344 */
+    /* ../lib/standard/kernel.nit:393 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/kernel.nit:345 */
+      /* ../lib/standard/kernel.nit:394 */
       ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, REGB0);
       if (closctx_param->has_broke) {
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:346 */
+      /* ../lib/standard/kernel.nit:395 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:346 */
+      /* ../lib/standard/kernel.nit:395 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:344 */
+      /* ../lib/standard/kernel.nit:393 */
       goto label2;
     }
   }
@@ -1855,7 +1997,7 @@ void standard___kernel___Int___enumerate_before(val_t p0, val_t p1, struct stack
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 350;
+  fra.me.line = 399;
   fra.me.meth = LOCATE_standard___kernel___Int___enumerate_before;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1865,30 +2007,30 @@ void standard___kernel___Int___enumerate_before(val_t p0, val_t p1, struct stack
   REGB0 = p0;
   REGB1 = p1;
   CREG[0] = clos_fun0;
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/kernel.nit:356 */
+      /* ../lib/standard/kernel.nit:405 */
       ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, REGB0);
       if (closctx_param->has_broke) {
         goto label1;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -1906,34 +2048,34 @@ val_t standard___kernel___Int___abs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 361;
+  fra.me.line = 410;
   fra.me.meth = LOCATE_standard___kernel___Int___abs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:364 */
+  /* ../lib/standard/kernel.nit:417 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:364 */
+  /* ../lib/standard/kernel.nit:417 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/kernel.nit:366 */
+    /* ../lib/standard/kernel.nit:419 */
     REGB1 = REGB0;
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:368 */
+    /* ../lib/standard/kernel.nit:421 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-    /* ../lib/standard/kernel.nit:241 */
+    /* ../lib/standard/kernel.nit:248 */
     REGB0 = TAG_Int(UNTAG_Int(REGB2)*UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:368 */
+    /* ../lib/standard/kernel.nit:421 */
     REGB1 = REGB0;
     goto label1;
   }
@@ -1948,13 +2090,13 @@ val_t standard___kernel___Char___object_id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 380;
+  fra.me.line = 433;
   fra.me.meth = LOCATE_standard___kernel___Char___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:380 */
+  /* ../lib/standard/kernel.nit:433 */
   REGB0 = TAG_Int(UNTAG_Char(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1966,7 +2108,7 @@ val_t standard___kernel___Char_____eqeq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 381;
+  fra.me.line = 434;
   fra.me.meth = LOCATE_standard___kernel___Char_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1974,7 +2116,7 @@ val_t standard___kernel___Char_____eqeq(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ../lib/standard/kernel.nit:381 */
+  /* ../lib/standard/kernel.nit:434 */
   REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1986,7 +2128,7 @@ val_t standard___kernel___Char_____neq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 382;
+  fra.me.line = 435;
   fra.me.meth = LOCATE_standard___kernel___Char_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1994,7 +2136,7 @@ val_t standard___kernel___Char_____neq(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ../lib/standard/kernel.nit:382 */
+  /* ../lib/standard/kernel.nit:435 */
   REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -2006,13 +2148,13 @@ void standard___kernel___Char___output(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 383;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_standard___kernel___Char___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:383 */
+  /* ../lib/standard/kernel.nit:436 */
   printf("%c", (unsigned char)UNTAG_Char(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -2026,7 +2168,7 @@ val_t standard___kernel___Char_____leq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 385;
+  fra.me.line = 438;
   fra.me.meth = LOCATE_standard___kernel___Char_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -2038,7 +2180,7 @@ val_t standard___kernel___Char_____leq(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:385 */
+  /* ../lib/standard/kernel.nit:438 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -2052,7 +2194,7 @@ val_t standard___kernel___Char_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 386;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_standard___kernel___Char_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -2064,7 +2206,7 @@ val_t standard___kernel___Char_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:386 */
+  /* ../lib/standard/kernel.nit:439 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)<UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -2078,7 +2220,7 @@ val_t standard___kernel___Char_____geq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 387;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_standard___kernel___Char_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -2090,7 +2232,7 @@ val_t standard___kernel___Char_____geq(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:387 */
+  /* ../lib/standard/kernel.nit:440 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -2104,7 +2246,7 @@ val_t standard___kernel___Char_____g(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 388;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_standard___kernel___Char_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -2116,7 +2258,7 @@ val_t standard___kernel___Char_____g(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:388 */
+  /* ../lib/standard/kernel.nit:441 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -2128,13 +2270,13 @@ val_t standard___kernel___Char___succ(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 390;
+  fra.me.line = 443;
   fra.me.meth = LOCATE_standard___kernel___Char___succ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:390 */
+  /* ../lib/standard/kernel.nit:443 */
   REGB0 = TAG_Char(UNTAG_Char(REGB0)+1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -2146,13 +2288,13 @@ val_t standard___kernel___Char___prec(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 391;
+  fra.me.line = 444;
   fra.me.meth = LOCATE_standard___kernel___Char___prec;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:391 */
+  /* ../lib/standard/kernel.nit:444 */
   REGB0 = TAG_Char(UNTAG_Char(REGB0)-1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -2166,7 +2308,7 @@ val_t standard___kernel___Char___distance(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 393;
+  fra.me.line = 446;
   fra.me.meth = LOCATE_standard___kernel___Char___distance;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -2178,29 +2320,29 @@ val_t standard___kernel___Char___distance(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:416 */
+  /* ../lib/standard/kernel.nit:471 */
   REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
   REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/kernel.nit:396 */
+  /* ../lib/standard/kernel.nit:449 */
   REGB0 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ../lib/standard/kernel.nit:396 */
+  /* ../lib/standard/kernel.nit:449 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/kernel.nit:397 */
+    /* ../lib/standard/kernel.nit:450 */
     REGB0 = REGB1;
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:399 */
+    /* ../lib/standard/kernel.nit:452 */
     REGB0 = REGB1;
     goto label1;
   }
@@ -2218,60 +2360,60 @@ val_t standard___kernel___Char___to_i(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 403;
+  fra.me.line = 456;
   fra.me.meth = LOCATE_standard___kernel___Char___to_i;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:407 */
+  /* ../lib/standard/kernel.nit:462 */
   REGB1 = TAG_Char('-');
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:381 */
+    /* ../lib/standard/kernel.nit:434 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/kernel.nit:407 */
+    /* ../lib/standard/kernel.nit:462 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:408 */
+    /* ../lib/standard/kernel.nit:463 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-    /* ../lib/standard/kernel.nit:408 */
+    /* ../lib/standard/kernel.nit:463 */
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:409 */
+    /* ../lib/standard/kernel.nit:464 */
     REGB1 = CALL_standard___kernel___Char___is_digit(REGB0)(REGB0);
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-      /* ../lib/standard/kernel.nit:410 */
+      /* ../lib/standard/kernel.nit:465 */
       REGB3 = TAG_Char('0');
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:410 */
+      /* ../lib/standard/kernel.nit:465 */
       REGB2 = REGB3;
       goto label1;
     } else {
-      /* ../lib/standard/kernel.nit:412 */
+      /* ../lib/standard/kernel.nit:467 */
       REGB0 = CALL_standard___kernel___Char___to_lower(REGB0)(REGB0);
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-      /* ../lib/standard/kernel.nit:412 */
+      /* ../lib/standard/kernel.nit:467 */
       REGB3 = TAG_Char('a');
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ../lib/standard/kernel.nit:412 */
+      /* ../lib/standard/kernel.nit:467 */
       REGB1 = TAG_Int(10);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:412 */
+      /* ../lib/standard/kernel.nit:467 */
       REGB2 = REGB1;
       goto label1;
     }
@@ -2287,13 +2429,13 @@ val_t standard___kernel___Char___ascii(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 416;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_standard___kernel___Char___ascii;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:416 */
+  /* ../lib/standard/kernel.nit:471 */
   REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -2306,14 +2448,14 @@ val_t standard___kernel___Char_____plus(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 419;
+  fra.me.line = 477;
   fra.me.meth = LOCATE_standard___kernel___Char_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:419 */
+  /* ../lib/standard/kernel.nit:477 */
   REGB1 = TAG_Char(UNTAG_Char(REGB0)+UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -2326,14 +2468,14 @@ val_t standard___kernel___Char_____minus(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 420;
+  fra.me.line = 478;
   fra.me.meth = LOCATE_standard___kernel___Char_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
   REGB1 = p1;
-  /* ../lib/standard/kernel.nit:420 */
+  /* ../lib/standard/kernel.nit:478 */
   REGB1 = TAG_Char(UNTAG_Char(REGB0)-UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -2348,29 +2490,29 @@ val_t standard___kernel___Char___to_lower(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 422;
+  fra.me.line = 480;
   fra.me.meth = LOCATE_standard___kernel___Char___to_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:426 */
+  /* ../lib/standard/kernel.nit:488 */
   REGB1 = CALL_standard___kernel___Char___is_upper(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-    /* ../lib/standard/kernel.nit:427 */
+    /* ../lib/standard/kernel.nit:489 */
     REGB2 = TAG_Char('a');
     REGB3 = TAG_Char('A');
     REGB3 = CALL_standard___kernel___Discrete___distance(REGB2)(REGB2, REGB3);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:300 */
+    /* ../lib/standard/kernel.nit:318 */
     REGB3 = TAG_Char(UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:427 */
+    /* ../lib/standard/kernel.nit:489 */
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:429 */
+    /* ../lib/standard/kernel.nit:491 */
     REGB3 = REGB0;
     goto label1;
   }
@@ -2388,29 +2530,29 @@ val_t standard___kernel___Char___to_upper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 433;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_standard___kernel___Char___to_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:437 */
+  /* ../lib/standard/kernel.nit:503 */
   REGB1 = CALL_standard___kernel___Char___is_lower(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-    /* ../lib/standard/kernel.nit:438 */
+    /* ../lib/standard/kernel.nit:504 */
     REGB2 = TAG_Char('a');
     REGB3 = TAG_Char('A');
     REGB3 = CALL_standard___kernel___Discrete___distance(REGB2)(REGB2, REGB3);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:300 */
+    /* ../lib/standard/kernel.nit:318 */
     REGB3 = TAG_Char(UNTAG_Int(REGB3));
-    /* ../lib/standard/kernel.nit:438 */
+    /* ../lib/standard/kernel.nit:504 */
     goto label1;
   } else {
-    /* ../lib/standard/kernel.nit:440 */
+    /* ../lib/standard/kernel.nit:506 */
     REGB3 = REGB0;
     goto label1;
   }
@@ -2427,22 +2569,22 @@ val_t standard___kernel___Char___is_digit(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 444;
+  fra.me.line = 510;
   fra.me.meth = LOCATE_standard___kernel___Char___is_digit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:447 */
+  /* ../lib/standard/kernel.nit:517 */
   REGB1 = TAG_Char('0');
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:387 */
+  /* ../lib/standard/kernel.nit:440 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ../lib/standard/kernel.nit:447 */
+  /* ../lib/standard/kernel.nit:517 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('9');
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -2450,10 +2592,10 @@ val_t standard___kernel___Char___is_digit(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:385 */
+    /* ../lib/standard/kernel.nit:438 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ../lib/standard/kernel.nit:447 */
+    /* ../lib/standard/kernel.nit:517 */
     REGB0 = TAG_Bool(0);
     REGB1 = REGB0;
   }
@@ -2471,22 +2613,22 @@ val_t standard___kernel___Char___is_lower(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 450;
+  fra.me.line = 520;
   fra.me.meth = LOCATE_standard___kernel___Char___is_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:453 */
+  /* ../lib/standard/kernel.nit:528 */
   REGB1 = TAG_Char('a');
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:387 */
+  /* ../lib/standard/kernel.nit:440 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ../lib/standard/kernel.nit:453 */
+  /* ../lib/standard/kernel.nit:528 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('z');
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -2494,10 +2636,10 @@ val_t standard___kernel___Char___is_lower(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:385 */
+    /* ../lib/standard/kernel.nit:438 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ../lib/standard/kernel.nit:453 */
+    /* ../lib/standard/kernel.nit:528 */
     REGB0 = TAG_Bool(0);
     REGB1 = REGB0;
   }
@@ -2515,22 +2657,22 @@ val_t standard___kernel___Char___is_upper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 456;
+  fra.me.line = 531;
   fra.me.meth = LOCATE_standard___kernel___Char___is_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:459 */
+  /* ../lib/standard/kernel.nit:539 */
   REGB1 = TAG_Char('A');
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:387 */
+  /* ../lib/standard/kernel.nit:440 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ../lib/standard/kernel.nit:459 */
+  /* ../lib/standard/kernel.nit:539 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('Z');
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -2538,10 +2680,10 @@ val_t standard___kernel___Char___is_upper(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:385 */
+    /* ../lib/standard/kernel.nit:438 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ../lib/standard/kernel.nit:459 */
+    /* ../lib/standard/kernel.nit:539 */
     REGB0 = TAG_Bool(0);
     REGB1 = REGB0;
   }
@@ -2558,13 +2700,13 @@ val_t standard___kernel___Char___is_letter(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___kernel;
-  fra.me.line = 462;
+  fra.me.line = 542;
   fra.me.meth = LOCATE_standard___kernel___Char___is_letter;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/kernel.nit:465 */
+  /* ../lib/standard/kernel.nit:550 */
   REGB1 = CALL_standard___kernel___Char___is_lower(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(1);
index d6af5b1..6fbb669 100644 (file)
@@ -94,10 +94,11 @@ extern const int SFT_standard___kernel[];
 #define CALL_standard___kernel___Int___to_f(recv) ((standard___kernel___Int___to_f_t)CALL((recv), (SFT_standard___kernel[20] + 7)))
 #define CALL_standard___kernel___Int___ascii(recv) ((standard___kernel___Int___ascii_t)CALL((recv), (SFT_standard___kernel[20] + 8)))
 #define CALL_standard___kernel___Int___digit_count(recv) ((standard___kernel___Int___digit_count_t)CALL((recv), (SFT_standard___kernel[20] + 9)))
-#define CALL_standard___kernel___Int___to_c(recv) ((standard___kernel___Int___to_c_t)CALL((recv), (SFT_standard___kernel[20] + 10)))
-#define CALL_standard___kernel___Int___enumerate_to(recv) ((standard___kernel___Int___enumerate_to_t)CALL((recv), (SFT_standard___kernel[20] + 11)))
-#define CALL_standard___kernel___Int___enumerate_before(recv) ((standard___kernel___Int___enumerate_before_t)CALL((recv), (SFT_standard___kernel[20] + 12)))
-#define CALL_standard___kernel___Int___abs(recv) ((standard___kernel___Int___abs_t)CALL((recv), (SFT_standard___kernel[20] + 13)))
+#define CALL_standard___kernel___Int___digit_count_base_10(recv) ((standard___kernel___Int___digit_count_base_10_t)CALL((recv), (SFT_standard___kernel[20] + 10)))
+#define CALL_standard___kernel___Int___to_c(recv) ((standard___kernel___Int___to_c_t)CALL((recv), (SFT_standard___kernel[20] + 11)))
+#define CALL_standard___kernel___Int___enumerate_to(recv) ((standard___kernel___Int___enumerate_to_t)CALL((recv), (SFT_standard___kernel[20] + 12)))
+#define CALL_standard___kernel___Int___enumerate_before(recv) ((standard___kernel___Int___enumerate_before_t)CALL((recv), (SFT_standard___kernel[20] + 13)))
+#define CALL_standard___kernel___Int___abs(recv) ((standard___kernel___Int___abs_t)CALL((recv), (SFT_standard___kernel[20] + 14)))
 #define ID_standard___kernel___Char (SFT_standard___kernel[21])
 #define COLOR_standard___kernel___Char (SFT_standard___kernel[22])
 #define INIT_TABLE_POS_standard___kernel___Char (SFT_standard___kernel[23] + 0)
@@ -243,6 +244,8 @@ val_t standard___kernel___Int___ascii(val_t p0);
 typedef val_t (*standard___kernel___Int___ascii_t)(val_t p0);
 val_t standard___kernel___Int___digit_count(val_t p0, val_t p1);
 typedef val_t (*standard___kernel___Int___digit_count_t)(val_t p0, val_t p1);
+val_t standard___kernel___Int___digit_count_base_10(val_t p0);
+typedef val_t (*standard___kernel___Int___digit_count_base_10_t)(val_t p0);
 val_t standard___kernel___Int___to_c(val_t p0);
 typedef val_t (*standard___kernel___Int___to_c_t)(val_t p0);
 typedef void (*CLOS_standard___kernel___Int___enumerate_to_0)(struct stack_frame_t *, val_t);
index 3b611f4..51c738d 100644 (file)
@@ -359,7 +359,7 @@ val_t standard___math___Collection___rand(val_t p0){
     REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[2],REGB0));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB0 = TAG_Bool((closctx->REG[2])==(REGB0));
       /* ../lib/standard/math.nit:51 */
       REGB1 = REGB0;
@@ -371,7 +371,7 @@ val_t standard___math___Collection___rand(val_t p0){
     }
     /* ../lib/standard/math.nit:52 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(closctx->REG[2])-UNTAG_Int(REGB1));
     /* ../lib/standard/math.nit:52 */
     closctx->REG[2] = REGB1;
index e910168..5125a96 100644 (file)
@@ -61,7 +61,7 @@ val_t standard___stream___IStream___read(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* ../lib/standard/stream.nit:34 */
     if (UNTAG_Bool(REGB1)) {
@@ -81,17 +81,17 @@ val_t standard___stream___IStream___read(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
       /* ../lib/standard/stream.nit:36 */
       if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/kernel.nit:300 */
+        /* ../lib/standard/kernel.nit:318 */
         REGB1 = TAG_Char(UNTAG_Int(REGB1));
         /* ../lib/standard/stream.nit:37 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB1);
         /* ../lib/standard/stream.nit:38 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
         /* ../lib/standard/stream.nit:38 */
         REGB0 = REGB1;
@@ -175,11 +175,11 @@ val_t standard___stream___IStream___read_all(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
       /* ../lib/standard/stream.nit:59 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/kernel.nit:300 */
+        /* ../lib/standard/kernel.nit:318 */
         REGB0 = TAG_Char(UNTAG_Int(REGB0));
         /* ../lib/standard/stream.nit:59 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -221,13 +221,13 @@ void standard___stream___IStream___append_line_to(val_t p0, val_t p1){
     REGB0 = CALL_standard___stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
     /* ../lib/standard/stream.nit:69 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
     /* ../lib/standard/stream.nit:69 */
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ../lib/standard/stream.nit:69 */
       REGB2 = REGB1;
@@ -239,7 +239,7 @@ void standard___stream___IStream___append_line_to(val_t p0, val_t p1){
         goto label1;
       }
     } else {
-      /* ../lib/standard/kernel.nit:300 */
+      /* ../lib/standard/kernel.nit:318 */
       REGB0 = TAG_Char(UNTAG_Int(REGB0));
       /* ../lib/standard/stream.nit:73 */
       CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -248,7 +248,7 @@ void standard___stream___IStream___append_line_to(val_t p0, val_t p1){
       REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB2 = TAG_Bool((REGB0)==(REGB2));
         /* ../lib/standard/stream.nit:74 */
         REGB1 = REGB2;
@@ -359,7 +359,7 @@ val_t standard___stream___BufferedIStream___read_char(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ../lib/standard/stream.nit:99 */
   if (UNTAG_Bool(REGB1)) {
@@ -390,13 +390,13 @@ val_t standard___stream___BufferedIStream___read_char(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
   /* ../lib/standard/stream.nit:102 */
   if (UNTAG_Bool(REGB0)) {
     /* ../lib/standard/stream.nit:103 */
     REGB0 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB0));
     /* ../lib/standard/stream.nit:103 */
     goto label1;
@@ -417,11 +417,11 @@ val_t standard___stream___BufferedIStream___read_char(val_t p0){
   /* ../lib/standard/stream.nit:106 */
   REGB2 = ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
   /* ../lib/standard/stream.nit:106 */
   ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB3;
-  /* ../lib/standard/kernel.nit:416 */
+  /* ../lib/standard/kernel.nit:471 */
   REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
   /* ../lib/standard/stream.nit:107 */
   REGB0 = REGB1;
@@ -482,7 +482,7 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
     /* ../lib/standard/stream.nit:115 */
     if (UNTAG_Bool(REGB3)) {
@@ -491,7 +491,7 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
       /* ../lib/standard/stream.nit:116 */
       if (UNTAG_Bool(REGB3)) {
@@ -534,7 +534,7 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         /* ../lib/standard/stream.nit:122 */
         if (UNTAG_Bool(REGB3)) {
@@ -544,7 +544,7 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:237 */
+          /* ../lib/standard/kernel.nit:244 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
         } else {
           /* ../lib/standard/stream.nit:122 */
@@ -562,13 +562,13 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB3);
           /* ../lib/standard/stream.nit:124 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
           /* ../lib/standard/stream.nit:124 */
           REGB1 = REGB3;
           /* ../lib/standard/stream.nit:125 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
           /* ../lib/standard/stream.nit:125 */
           REGB0 = REGB3;
@@ -646,7 +646,7 @@ val_t standard___stream___BufferedIStream___read_all(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
         /* ../lib/standard/stream.nit:138 */
         if (UNTAG_Bool(REGB2)) {
@@ -660,7 +660,7 @@ val_t standard___stream___BufferedIStream___read_all(val_t p0){
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB2);
           /* ../lib/standard/stream.nit:140 */
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
           /* ../lib/standard/stream.nit:140 */
           REGB0 = REGB2;
@@ -735,7 +735,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       /* ../lib/standard/stream.nit:153 */
       if (UNTAG_Bool(REGB1)) {
@@ -749,7 +749,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
           /* ../lib/standard/stream.nit:153 */
           REGB3 = REGB2;
@@ -761,7 +761,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
       }
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
         /* ../lib/standard/stream.nit:153 */
         REGB0 = REGB3;
@@ -782,7 +782,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
     /* ../lib/standard/stream.nit:156 */
     if (UNTAG_Bool(REGB3)) {
@@ -793,7 +793,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
       /* ../lib/standard/stream.nit:158 */
       REGB2 = TAG_Bool(ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
@@ -802,7 +802,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_standard___stream, 158);
       }
       REGB2 = ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB2 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
       /* ../lib/standard/stream.nit:158 */
       CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB2);
@@ -820,7 +820,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
         /* ../lib/standard/stream.nit:162 */
         if (UNTAG_Bool(REGB3)) {
@@ -834,7 +834,7 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB3);
           /* ../lib/standard/stream.nit:164 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
           /* ../lib/standard/stream.nit:164 */
           REGB2 = REGB3;
@@ -863,13 +863,13 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
     /* ../lib/standard/stream.nit:168 */
     if (UNTAG_Bool(REGB2)) {
       /* ../lib/standard/stream.nit:170 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ../lib/standard/stream.nit:170 */
       ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB2;
@@ -934,7 +934,7 @@ val_t standard___stream___BufferedIStream___eof(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ../lib/standard/stream.nit:184 */
   if (UNTAG_Bool(REGB1)) {
@@ -1284,13 +1284,13 @@ val_t standard___stream___FDIStream___read_char(val_t p0){
   REGB0 = CALL_standard___stream___FDStream___native_read_char(fra.me.REG[0])(fra.me.REG[0], REGB0);
   /* ../lib/standard/stream.nit:237 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
   /* ../lib/standard/stream.nit:237 */
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ../lib/standard/stream.nit:237 */
     REGB2 = REGB1;
@@ -1415,7 +1415,7 @@ void standard___stream___FDOStream___write(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   /* ../lib/standard/stream.nit:252 */
   if (UNTAG_Bool(REGB0)) {
@@ -1524,7 +1524,7 @@ val_t standard___stream___Object___poll(val_t p0, val_t p1){
       REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((fra.me.REG[3])==(NIT_NULL));
       /* ../lib/standard/stream.nit:290 */
       REGB0 = REGB1;
index c2cf002..aded659 100644 (file)
@@ -3,9 +3,11 @@
 */
 #include "standard___string._ffi.h"
 
+#include <stdio.h>
+
 String Float_to_precision_native___impl( float recv, bigint nb )
 {
-#line 826 "../lib/standard/string.nit"
+#line 830 "../lib/standard/string.nit"
 
 
                int size;
@@ -15,5 +17,5 @@ String Float_to_precision_native___impl( float recv, bigint nb )
                str = malloc(size + 1);
                sprintf(str, "%.*f", (int)nb, recv );
 
-               return new_String_from_cstring( str );
+               return NativeString_to_s( str );
        }
index 315d61d..44581b9 100644 (file)
@@ -7,18 +7,18 @@ val_t standard___string___AbstractString___items(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 28;
+  fra.me.line = 32;
   fra.me.meth = LOCATE_standard___string___AbstractString___items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:28 */
+  /* ../lib/standard/string.nit:32 */
   REGB0 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 28);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 32);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -32,7 +32,7 @@ val_t standard___string___AbstractString_____bra(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 30;
+  fra.me.line = 34;
   fra.me.meth = LOCATE_standard___string___AbstractString_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -40,16 +40,16 @@ val_t standard___string___AbstractString_____bra(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:30 */
+  /* ../lib/standard/string.nit:37 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 30);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 37);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:955 */
+  /* ../lib/standard/string.nit:970 */
   REGB0 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
-  /* ../lib/standard/string.nit:30 */
+  /* ../lib/standard/string.nit:37 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -66,7 +66,7 @@ val_t standard___string___AbstractString___substring(val_t p0, val_t p1, val_t p
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 32;
+  fra.me.line = 39;
   fra.me.meth = LOCATE_standard___string___AbstractString___substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -77,34 +77,34 @@ val_t standard___string___AbstractString___substring(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
-  /* ../lib/standard/string.nit:40 */
+  /* ../lib/standard/string.nit:51 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:40 */
+  /* ../lib/standard/string.nit:51 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 40);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 51);
   }
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:41 */
+  /* ../lib/standard/string.nit:52 */
   REGB1 = REGB2;
-  /* ../lib/standard/string.nit:42 */
+  /* ../lib/standard/string.nit:53 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:42 */
+  /* ../lib/standard/string.nit:53 */
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Int(0);
     REGB0 = REGB2;
@@ -121,9 +121,9 @@ val_t standard___string___AbstractString___substring(val_t p0, val_t p1, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:43 */
+  /* ../lib/standard/string.nit:54 */
   if (UNTAG_Bool(REGB2)) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -132,7 +132,7 @@ val_t standard___string___AbstractString___substring(val_t p0, val_t p1, val_t p
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ../lib/standard/string.nit:43 */
+    /* ../lib/standard/string.nit:54 */
     REGB1 = REGB2;
   }
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -140,57 +140,57 @@ val_t standard___string___AbstractString___substring(val_t p0, val_t p1, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:44 */
+  /* ../lib/standard/string.nit:55 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:45 */
+    /* ../lib/standard/string.nit:56 */
     fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB2);
-    /* ../lib/standard/string.nit:46 */
+    /* ../lib/standard/string.nit:57 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:46 */
+      /* ../lib/standard/string.nit:57 */
       if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/string.nit:47 */
+        /* ../lib/standard/string.nit:58 */
         REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 47);
+          nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 58);
         }
         fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-        /* ../lib/standard/string.nit:955 */
+        /* ../lib/standard/string.nit:970 */
         REGB2 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
-        /* ../lib/standard/string.nit:47 */
+        /* ../lib/standard/string.nit:58 */
         CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[1])(fra.me.REG[1], REGB2);
-        /* ../lib/standard/string.nit:48 */
+        /* ../lib/standard/string.nit:59 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/string.nit:48 */
+        /* ../lib/standard/string.nit:59 */
         REGB0 = REGB2;
       } else {
-        /* ../lib/standard/string.nit:46 */
+        /* ../lib/standard/string.nit:57 */
         goto label1;
       }
     }
     label1: while(0);
-    /* ../lib/standard/string.nit:50 */
+    /* ../lib/standard/string.nit:61 */
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
     goto label2;
   } else {
-    /* ../lib/standard/string.nit:52 */
+    /* ../lib/standard/string.nit:63 */
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -211,7 +211,7 @@ val_t standard___string___AbstractString___substring_from(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 56;
+  fra.me.line = 67;
   fra.me.meth = LOCATE_standard___string___AbstractString___substring_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -231,12 +231,12 @@ val_t standard___string___AbstractString___substring_from(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:63 */
+  /* ../lib/standard/string.nit:76 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 63);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 76);
   }
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -245,9 +245,9 @@ val_t standard___string___AbstractString___substring_from(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:64 */
+  /* ../lib/standard/string.nit:77 */
   fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1);
   goto label1;
   label1: while(0);
@@ -267,7 +267,7 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 67;
+  fra.me.line = 80;
   fra.me.meth = LOCATE_standard___string___AbstractString___has_substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -286,24 +286,24 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:73 */
+  /* ../lib/standard/string.nit:86 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:75 */
+  /* ../lib/standard/string.nit:88 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 75);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 88);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:76 */
+  /* ../lib/standard/string.nit:89 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 76);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 89);
   }
   fra.me.REG[3] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -318,9 +318,9 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:77 */
+  /* ../lib/standard/string.nit:90 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(1);
   } else {
@@ -329,47 +329,47 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:77 */
+    /* ../lib/standard/string.nit:90 */
     REGB1 = REGB3;
   }
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(0);
     goto label1;
   }
-  /* ../lib/standard/string.nit:78 */
+  /* ../lib/standard/string.nit:91 */
   REGB3 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 78);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 91);
   }
   REGB3 = ATTR_standard___string___String____index_from(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:79 */
+  /* ../lib/standard/string.nit:92 */
   REGB2 = REGB4;
-  /* ../lib/standard/string.nit:80 */
+  /* ../lib/standard/string.nit:93 */
   while(1) {
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-    /* ../lib/standard/string.nit:80 */
+    /* ../lib/standard/string.nit:93 */
     if (UNTAG_Bool(REGB4)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
       REGB5 = TAG_Char(UNBOX_NativeString(fra.me.REG[3])[UNTAG_Int(REGB2)]);
-      /* ../lib/standard/string.nit:81 */
+      /* ../lib/standard/string.nit:94 */
       REGB6 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
       if (UNTAG_Bool(REGB6)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB5 = TAG_Bool((REGB4)==(REGB5));
-        /* ../lib/standard/string.nit:81 */
+        /* ../lib/standard/string.nit:94 */
         REGB6 = REGB5;
       }
       REGB6 = TAG_Bool(!UNTAG_Bool(REGB6));
@@ -378,25 +378,25 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
         REGB1 = REGB6;
         goto label1;
       }
-      /* ../lib/standard/string.nit:82 */
+      /* ../lib/standard/string.nit:95 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB6 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB6));
-      /* ../lib/standard/string.nit:82 */
+      /* ../lib/standard/string.nit:95 */
       REGB0 = REGB6;
-      /* ../lib/standard/string.nit:83 */
+      /* ../lib/standard/string.nit:96 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB6 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB6));
-      /* ../lib/standard/string.nit:83 */
+      /* ../lib/standard/string.nit:96 */
       REGB2 = REGB6;
     } else {
-      /* ../lib/standard/string.nit:80 */
+      /* ../lib/standard/string.nit:93 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:85 */
+  /* ../lib/standard/string.nit:98 */
   REGB2 = TAG_Bool(1);
   REGB1 = REGB2;
   goto label1;
@@ -411,7 +411,7 @@ val_t standard___string___AbstractString___has_prefix(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 88;
+  fra.me.line = 101;
   fra.me.meth = LOCATE_standard___string___AbstractString___has_prefix;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -420,7 +420,7 @@ val_t standard___string___AbstractString___has_prefix(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:92 */
+  /* ../lib/standard/string.nit:105 */
   REGB0 = TAG_Int(0);
   REGB0 = CALL_standard___string___AbstractString___has_substring(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
   goto label1;
@@ -436,7 +436,7 @@ val_t standard___string___AbstractString___has_suffix(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 94;
+  fra.me.line = 107;
   fra.me.meth = LOCATE_standard___string___AbstractString___has_suffix;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -458,9 +458,9 @@ val_t standard___string___AbstractString___has_suffix(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:98 */
+  /* ../lib/standard/string.nit:111 */
   REGB1 = CALL_standard___string___AbstractString___has_substring(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB1);
   goto label1;
   label1: while(0);
@@ -474,19 +474,19 @@ val_t standard___string___AbstractString___to_i(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 100;
+  fra.me.line = 113;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_i;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:104 */
+  /* ../lib/standard/string.nit:120 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:966 */
+  /* ../lib/standard/string.nit:981 */
   REGB0 = TAG_Int(atoi(UNBOX_NativeString(fra.me.REG[0])));
-  /* ../lib/standard/string.nit:104 */
+  /* ../lib/standard/string.nit:120 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -498,14 +498,14 @@ val_t standard___string___AbstractString___to_f(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 107;
+  fra.me.line = 123;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_f;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:111 */
+  /* ../lib/standard/string.nit:131 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___String___to_cstring(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___NativeString___atof(fra.me.REG[0])(fra.me.REG[0]);
@@ -521,14 +521,14 @@ val_t standard___string___AbstractString___to_hex(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 114;
+  fra.me.line = 134;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_hex;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:115 */
+  /* ../lib/standard/string.nit:135 */
   REGB0 = TAG_Int(16);
   REGB0 = CALL_standard___string___AbstractString___a_to(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -543,7 +543,7 @@ val_t standard___string___AbstractString___a_to(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 117;
+  fra.me.line = 137;
   fra.me.meth = LOCATE_standard___string___AbstractString___a_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -554,12 +554,12 @@ val_t standard___string___AbstractString___a_to(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:117 */
+  /* ../lib/standard/string.nit:137 */
   fra.me.REG[1] = REGB0;
-  /* ../lib/standard/string.nit:120 */
+  /* ../lib/standard/string.nit:142 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = REGB0;
-  /* ../lib/standard/string.nit:121 */
+  /* ../lib/standard/string.nit:143 */
   REGB0 = TAG_Bool(0);
   fra.me.REG[3] = REGB0;
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___string___AbstractString___a_to_1));
@@ -567,15 +567,15 @@ val_t standard___string___AbstractString___a_to(val_t p0, val_t p1){
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ../lib/standard/string.nit:138 */
+  /* ../lib/standard/string.nit:160 */
   if (UNTAG_Bool(fra.me.REG[3])) {
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB0 = TAG_Int(-UNTAG_Int(fra.me.REG[2]));
-    /* ../lib/standard/string.nit:139 */
+    /* ../lib/standard/string.nit:161 */
     fra.me.REG[0] = REGB0;
     goto label3;
   } else {
-    /* ../lib/standard/string.nit:141 */
+    /* ../lib/standard/string.nit:163 */
     fra.me.REG[0] = fra.me.REG[2];
     goto label3;
   }
@@ -590,7 +590,7 @@ val_t standard___string___AbstractString___a_to(val_t p0, val_t p1){
     val_t REGB2;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/string.nit:123 */
+    /* ../lib/standard/string.nit:145 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -604,52 +604,52 @@ val_t standard___string___AbstractString___a_to(val_t p0, val_t p1){
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
     REGB0 = fra.me.REG[0];
-    /* ../lib/standard/string.nit:125 */
+    /* ../lib/standard/string.nit:147 */
     REGB0 = CALL_standard___kernel___Char___to_i(REGB0)(REGB0);
     REGB1 = TAG_Bool(VAL_ISA(closctx->REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(closctx->REG[1]));
-    /* ../lib/standard/string.nit:126 */
+    /* ../lib/standard/string.nit:148 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/string.nit:127 */
+      /* ../lib/standard/string.nit:149 */
       if (UNTAG_Bool(closctx->REG[3])) {
-        /* ../lib/standard/kernel.nit:239 */
+        /* ../lib/standard/kernel.nit:246 */
         REGB1 = TAG_Int(-UNTAG_Int(closctx->REG[2]));
-        /* ../lib/standard/string.nit:128 */
+        /* ../lib/standard/string.nit:150 */
         closctx->REG[0] = REGB1;
         closctx->has_broke = 1;
         goto label2;
       } else {
-        /* ../lib/standard/string.nit:130 */
+        /* ../lib/standard/string.nit:152 */
         closctx->REG[0] = closctx->REG[2];
         closctx->has_broke = 1;
         goto label2;
       }
     } else {
-      /* ../lib/standard/string.nit:132 */
+      /* ../lib/standard/string.nit:154 */
       REGB1 = TAG_Int(0);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:132 */
+      /* ../lib/standard/string.nit:154 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/string.nit:133 */
+        /* ../lib/standard/string.nit:155 */
         REGB1 = TAG_Bool(1);
         closctx->REG[3] = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:241 */
+        /* ../lib/standard/kernel.nit:248 */
         REGB1 = TAG_Int(UNTAG_Int(closctx->REG[2])*UNTAG_Int(closctx->REG[1]));
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-        /* ../lib/standard/string.nit:135 */
+        /* ../lib/standard/string.nit:157 */
         closctx->REG[2] = REGB0;
       }
     }
@@ -664,7 +664,7 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 145;
+  fra.me.line = 167;
   fra.me.meth = LOCATE_standard___string___AbstractString___is_numeric;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -672,7 +672,7 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:148 */
+  /* ../lib/standard/string.nit:175 */
   REGB0 = TAG_Bool(0);
   fra.me.REG[1] = REGB0;
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___string___AbstractString___is_numeric_1));
@@ -680,7 +680,7 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ../lib/standard/string.nit:161 */
+  /* ../lib/standard/string.nit:188 */
   REGB0 = TAG_Bool(1);
   fra.me.REG[0] = REGB0;
   goto label3;
@@ -696,7 +696,7 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
     val_t REGB3;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/string.nit:149 */
+    /* ../lib/standard/string.nit:176 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -710,18 +710,18 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
     REGB0 = fra.me.REG[0];
-    /* ../lib/standard/string.nit:151 */
+    /* ../lib/standard/string.nit:178 */
     REGB1 = CALL_standard___string___Char___is_numeric(REGB0)(REGB0);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/string.nit:153 */
+      /* ../lib/standard/string.nit:180 */
       REGB1 = TAG_Char('.');
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
-        /* ../lib/standard/string.nit:153 */
+        /* ../lib/standard/string.nit:180 */
         REGB2 = REGB1;
       }
       if (UNTAG_Bool(REGB2)) {
@@ -731,9 +731,9 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
-          /* ../lib/standard/string.nit:153 */
+          /* ../lib/standard/string.nit:180 */
           REGB3 = REGB1;
         }
         REGB2 = REGB3;
@@ -745,11 +745,11 @@ val_t standard___string___AbstractString___is_numeric(val_t p0){
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/string.nit:155 */
+        /* ../lib/standard/string.nit:182 */
         REGB2 = TAG_Bool(1);
         closctx->REG[1] = REGB2;
       } else {
-        /* ../lib/standard/string.nit:157 */
+        /* ../lib/standard/string.nit:184 */
         REGB2 = TAG_Bool(0);
         closctx->REG[0] = REGB2;
         closctx->has_broke = 1;
@@ -767,7 +767,7 @@ val_t standard___string___AbstractString___to_upper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 164;
+  fra.me.line = 191;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -782,10 +782,10 @@ val_t standard___string___AbstractString___to_upper(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:167 */
+  /* ../lib/standard/string.nit:196 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB0);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___string___AbstractString___to_upper_1));
-  /* ../lib/standard/string.nit:169 */
+  /* ../lib/standard/string.nit:198 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -797,7 +797,7 @@ val_t standard___string___AbstractString___to_upper(val_t p0){
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/string.nit:168 */
+    /* ../lib/standard/string.nit:197 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -823,7 +823,7 @@ val_t standard___string___AbstractString___to_lower(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 172;
+  fra.me.line = 201;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -838,10 +838,10 @@ val_t standard___string___AbstractString___to_lower(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:175 */
+  /* ../lib/standard/string.nit:206 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB0);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___string___AbstractString___to_lower_1));
-  /* ../lib/standard/string.nit:177 */
+  /* ../lib/standard/string.nit:208 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -853,7 +853,7 @@ val_t standard___string___AbstractString___to_lower(val_t p0){
     val_t REGB0;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/string.nit:176 */
+    /* ../lib/standard/string.nit:207 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -884,7 +884,7 @@ val_t standard___string___AbstractString___trim(val_t p0){
         static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 180;
+  fra.me.line = 211;
   fra.me.meth = LOCATE_standard___string___AbstractString___trim;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -893,70 +893,70 @@ val_t standard___string___AbstractString___trim(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:184 */
+  /* ../lib/standard/string.nit:218 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 184);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 218);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/string.nit:184 */
+    /* ../lib/standard/string.nit:218 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     goto label1;
   }
-  /* ../lib/standard/string.nit:186 */
+  /* ../lib/standard/string.nit:220 */
   REGB2 = TAG_Int(0);
-  /* ../lib/standard/string.nit:187 */
+  /* ../lib/standard/string.nit:221 */
   while(1) {
     REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-    /* ../lib/standard/string.nit:187 */
+    /* ../lib/standard/string.nit:221 */
     REGB0 = TAG_Int(32);
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:187 */
+    /* ../lib/standard/string.nit:221 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/string.nit:188 */
+      /* ../lib/standard/string.nit:222 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/string.nit:188 */
+      /* ../lib/standard/string.nit:222 */
       REGB2 = REGB0;
-      /* ../lib/standard/string.nit:189 */
+      /* ../lib/standard/string.nit:223 */
       REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 189);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 223);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
       REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB0 = TAG_Bool((REGB2)==(REGB0));
-        /* ../lib/standard/string.nit:189 */
+        /* ../lib/standard/string.nit:223 */
         REGB1 = REGB0;
       }
       if (UNTAG_Bool(REGB1)) {
         if (!once_value_2) {
           fra.me.REG[2] = BOX_NativeString("");
           REGB1 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
           once_value_2 = fra.me.REG[2];
           register_static_object(&once_value_2);
         } else fra.me.REG[2] = once_value_2;
@@ -965,7 +965,7 @@ val_t standard___string___AbstractString___trim(val_t p0){
         goto label1;
       }
     } else {
-      /* ../lib/standard/string.nit:187 */
+      /* ../lib/standard/string.nit:221 */
       goto label3;
     }
   }
@@ -977,39 +977,39 @@ val_t standard___string___AbstractString___trim(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:192 */
+  /* ../lib/standard/string.nit:226 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:193 */
+  /* ../lib/standard/string.nit:227 */
   while(1) {
     REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-    /* ../lib/standard/string.nit:193 */
+    /* ../lib/standard/string.nit:227 */
     REGB3 = TAG_Int(32);
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB3));
-    /* ../lib/standard/string.nit:193 */
+    /* ../lib/standard/string.nit:227 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:194 */
+      /* ../lib/standard/string.nit:228 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:194 */
+      /* ../lib/standard/string.nit:228 */
       REGB0 = REGB3;
-      /* ../lib/standard/string.nit:195 */
+      /* ../lib/standard/string.nit:229 */
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((REGB0)==(REGB2));
-        /* ../lib/standard/string.nit:195 */
+        /* ../lib/standard/string.nit:229 */
         REGB3 = REGB1;
       }
       if (UNTAG_Bool(REGB3)) {
@@ -1019,18 +1019,18 @@ val_t standard___string___AbstractString___trim(val_t p0){
         goto label1;
       }
     } else {
-      /* ../lib/standard/string.nit:193 */
+      /* ../lib/standard/string.nit:227 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:197 */
+  /* ../lib/standard/string.nit:231 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:197 */
+  /* ../lib/standard/string.nit:231 */
   fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB2, REGB3);
   fra.me.REG[1] = fra.me.REG[0];
   goto label1;
@@ -1047,7 +1047,7 @@ void standard___string___AbstractString___output(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 200;
+  fra.me.line = 234;
   fra.me.meth = LOCATE_standard___string___AbstractString___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1055,9 +1055,9 @@ void standard___string___AbstractString___output(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:202 */
+  /* ../lib/standard/string.nit:236 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/string.nit:203 */
+  /* ../lib/standard/string.nit:237 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1071,29 +1071,29 @@ void standard___string___AbstractString___output(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:203 */
+    /* ../lib/standard/string.nit:237 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/string.nit:204 */
+      /* ../lib/standard/string.nit:238 */
       REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 204);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 238);
       }
       fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB1 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB0)]);
-      /* ../lib/standard/kernel.nit:383 */
+      /* ../lib/standard/kernel.nit:436 */
       printf("%c", (unsigned char)UNTAG_Char(REGB1));;
-      /* ../lib/standard/string.nit:205 */
+      /* ../lib/standard/string.nit:239 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:205 */
+      /* ../lib/standard/string.nit:239 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/string.nit:203 */
+      /* ../lib/standard/string.nit:237 */
       goto label1;
     }
   }
@@ -1108,18 +1108,18 @@ val_t standard___string___String___index_from(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 218;
+  fra.me.line = 252;
   fra.me.meth = LOCATE_standard___string___String___index_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:218 */
+  /* ../lib/standard/string.nit:252 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 218);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 252);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1132,18 +1132,18 @@ val_t standard___string___String___index_to(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 221;
+  fra.me.line = 255;
   fra.me.meth = LOCATE_standard___string___String___index_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:221 */
+  /* ../lib/standard/string.nit:255 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 221);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 255);
   }
   REGB0 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1159,7 +1159,7 @@ val_t standard___string___String_____bra(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 228;
+  fra.me.line = 262;
   fra.me.meth = LOCATE_standard___string___String_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1168,34 +1168,34 @@ val_t standard___string___String_____bra(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:231 */
+  /* ../lib/standard/string.nit:263 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:231 */
+  /* ../lib/standard/string.nit:263 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 231);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 263);
   }
-  /* ../lib/standard/string.nit:234 */
+  /* ../lib/standard/string.nit:266 */
   REGB1 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 234);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 266);
   }
   REGB1 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:234 */
+  /* ../lib/standard/string.nit:266 */
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 234);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 266);
   }
   REGB2 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1203,31 +1203,31 @@ val_t standard___string___String_____bra(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:234 */
+  /* ../lib/standard/string.nit:266 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 234);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 266);
   }
-  /* ../lib/standard/string.nit:235 */
+  /* ../lib/standard/string.nit:267 */
   REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 235);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 267);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 235);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 267);
   }
   REGB2 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:955 */
+  /* ../lib/standard/string.nit:970 */
   REGB2 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB2)]);
-  /* ../lib/standard/string.nit:235 */
+  /* ../lib/standard/string.nit:267 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1245,7 +1245,7 @@ val_t standard___string___String___substring(val_t p0, val_t p1, val_t p2){
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 238;
+  fra.me.line = 270;
   fra.me.meth = LOCATE_standard___string___String___substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1256,68 +1256,68 @@ val_t standard___string___String___substring(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
-  /* ../lib/standard/string.nit:251 */
+  /* ../lib/standard/string.nit:272 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:251 */
+  /* ../lib/standard/string.nit:272 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 251);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 272);
   }
-  /* ../lib/standard/string.nit:253 */
+  /* ../lib/standard/string.nit:274 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:253 */
+  /* ../lib/standard/string.nit:274 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:254 */
+    /* ../lib/standard/string.nit:275 */
     REGB1 = REGB2;
-    /* ../lib/standard/string.nit:255 */
+    /* ../lib/standard/string.nit:276 */
     REGB2 = TAG_Int(0);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/string.nit:255 */
+    /* ../lib/standard/string.nit:276 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Int(0);
       REGB1 = REGB2;
     }
-    /* ../lib/standard/string.nit:256 */
+    /* ../lib/standard/string.nit:277 */
     REGB2 = TAG_Int(0);
     REGB0 = REGB2;
   }
-  /* ../lib/standard/string.nit:259 */
+  /* ../lib/standard/string.nit:280 */
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 259);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 280);
   }
   REGB2 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
   REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:261 */
+  /* ../lib/standard/string.nit:282 */
   REGB3 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 261);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 282);
   }
   REGB3 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
   REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1325,40 +1325,40 @@ val_t standard___string___String___substring(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:261 */
+  /* ../lib/standard/string.nit:282 */
   if (UNTAG_Bool(REGB3)) {
     REGB3 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 261);
+      nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 282);
     }
     REGB3 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
     REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 261);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 282);
     }
     fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
     fra.me.REG[1] = NEW_String_standard___string___String___from_substring(REGB0, REGB3, fra.me.REG[1]);
     goto label1;
   }
-  /* ../lib/standard/string.nit:263 */
+  /* ../lib/standard/string.nit:284 */
   REGB3 = TAG_Int(0);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB3 = TAG_Bool((REGB1)==(REGB3));
-    /* ../lib/standard/string.nit:263 */
+    /* ../lib/standard/string.nit:284 */
     REGB2 = REGB3;
   }
   if (UNTAG_Bool(REGB2)) {
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB2 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_2 = fra.me.REG[2];
       register_static_object(&once_value_2);
     } else fra.me.REG[2] = once_value_2;
@@ -1366,17 +1366,17 @@ val_t standard___string___String___substring(val_t p0, val_t p1, val_t p2){
     fra.me.REG[1] = fra.me.REG[2];
     goto label1;
   }
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:265 */
+  /* ../lib/standard/string.nit:286 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:265 */
+  /* ../lib/standard/string.nit:286 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 265);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 286);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   fra.me.REG[0] = NEW_String_standard___string___String___from_substring(REGB0, REGB2, fra.me.REG[0]);
@@ -1396,7 +1396,7 @@ val_t standard___string___String___substring_from(val_t p0, val_t p1){
     static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 268;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_standard___string___String___substring_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1405,11 +1405,11 @@ val_t standard___string___String___substring_from(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:278 */
+  /* ../lib/standard/string.nit:291 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 278);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 291);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1417,39 +1417,39 @@ val_t standard___string___String___substring_from(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:278 */
+  /* ../lib/standard/string.nit:291 */
   if (UNTAG_Bool(REGB1)) {
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_1 = fra.me.REG[1];
       register_static_object(&once_value_1);
     } else fra.me.REG[1] = once_value_1;
     fra.me.REG[1] = fra.me.REG[1];
     goto label2;
   }
-  /* ../lib/standard/string.nit:279 */
+  /* ../lib/standard/string.nit:292 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:279 */
+  /* ../lib/standard/string.nit:292 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Int(0);
     REGB0 = REGB1;
   }
-  /* ../lib/standard/string.nit:280 */
+  /* ../lib/standard/string.nit:293 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 280);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 293);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1);
@@ -1472,7 +1472,7 @@ val_t standard___string___String___has_substring(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_standard___string;
-  fra.me.line = 283;
+  fra.me.line = 296;
   fra.me.meth = LOCATE_standard___string___String___has_substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1484,37 +1484,37 @@ val_t standard___string___String___has_substring(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/string.nit:289 */
+  /* ../lib/standard/string.nit:298 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 289);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 298);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:292 */
+  /* ../lib/standard/string.nit:301 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 292);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 301);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:294 */
+  /* ../lib/standard/string.nit:303 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 294);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 303);
   }
   fra.me.REG[3] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:296 */
+  /* ../lib/standard/string.nit:305 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 296);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 305);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1522,9 +1522,9 @@ val_t standard___string___String___has_substring(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:296 */
+  /* ../lib/standard/string.nit:305 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(1);
   } else {
@@ -1533,48 +1533,48 @@ val_t standard___string___String___has_substring(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:296 */
+    /* ../lib/standard/string.nit:305 */
     REGB1 = REGB3;
   }
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(0);
     goto label1;
   }
-  /* ../lib/standard/string.nit:298 */
+  /* ../lib/standard/string.nit:307 */
   REGB3 = CALL_standard___string___String___index_from(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:299 */
+  /* ../lib/standard/string.nit:308 */
   REGB2 = REGB4;
-  /* ../lib/standard/string.nit:300 */
+  /* ../lib/standard/string.nit:309 */
   REGB4 = CALL_standard___string___String___index_from(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-  /* ../lib/standard/string.nit:300 */
+  /* ../lib/standard/string.nit:309 */
   REGB0 = REGB4;
-  /* ../lib/standard/string.nit:302 */
+  /* ../lib/standard/string.nit:311 */
   while(1) {
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-    /* ../lib/standard/string.nit:302 */
+    /* ../lib/standard/string.nit:311 */
     if (UNTAG_Bool(REGB4)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
       REGB5 = TAG_Char(UNBOX_NativeString(fra.me.REG[3])[UNTAG_Int(REGB2)]);
-      /* ../lib/standard/string.nit:303 */
+      /* ../lib/standard/string.nit:312 */
       REGB6 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
       if (UNTAG_Bool(REGB6)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB5 = TAG_Bool((REGB4)==(REGB5));
-        /* ../lib/standard/string.nit:303 */
+        /* ../lib/standard/string.nit:312 */
         REGB6 = REGB5;
       }
       REGB6 = TAG_Bool(!UNTAG_Bool(REGB6));
@@ -1583,25 +1583,25 @@ val_t standard___string___String___has_substring(val_t p0, val_t p1, val_t p2){
         REGB1 = REGB6;
         goto label1;
       }
-      /* ../lib/standard/string.nit:304 */
+      /* ../lib/standard/string.nit:313 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB6 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB6));
-      /* ../lib/standard/string.nit:304 */
+      /* ../lib/standard/string.nit:313 */
       REGB0 = REGB6;
-      /* ../lib/standard/string.nit:305 */
+      /* ../lib/standard/string.nit:314 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB6 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB6));
-      /* ../lib/standard/string.nit:305 */
+      /* ../lib/standard/string.nit:314 */
       REGB2 = REGB6;
     } else {
-      /* ../lib/standard/string.nit:302 */
+      /* ../lib/standard/string.nit:311 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:308 */
+  /* ../lib/standard/string.nit:317 */
   REGB2 = TAG_Bool(1);
   REGB1 = REGB2;
   goto label1;
@@ -1619,7 +1619,7 @@ val_t standard___string___String___to_upper(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 311;
+  fra.me.line = 320;
   fra.me.meth = LOCATE_standard___string___String___to_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1628,72 +1628,72 @@ val_t standard___string___String___to_upper(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:314 */
+  /* ../lib/standard/string.nit:322 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 314);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 322);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ../lib/standard/string.nit:315 */
+  /* ../lib/standard/string.nit:323 */
   REGB1 = TAG_Int(0);
-  /* ../lib/standard/string.nit:317 */
+  /* ../lib/standard/string.nit:325 */
   REGB0 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 317);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 325);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:318 */
+  /* ../lib/standard/string.nit:326 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 318);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 326);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:319 */
+  /* ../lib/standard/string.nit:327 */
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 319);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 327);
   }
   REGB2 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:321 */
+  /* ../lib/standard/string.nit:329 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
-    /* ../lib/standard/string.nit:321 */
+    /* ../lib/standard/string.nit:329 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB3 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
-      /* ../lib/standard/string.nit:322 */
+      /* ../lib/standard/string.nit:330 */
       REGB3 = CALL_standard___kernel___Char___to_upper(REGB3)(REGB3);
-      /* ../lib/standard/string.nit:956 */
+      /* ../lib/standard/string.nit:971 */
       UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB1)]=UNTAG_Char(REGB3);;
-      /* ../lib/standard/string.nit:323 */
+      /* ../lib/standard/string.nit:331 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:323 */
+      /* ../lib/standard/string.nit:331 */
       REGB1 = REGB3;
-      /* ../lib/standard/string.nit:324 */
+      /* ../lib/standard/string.nit:332 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:324 */
+      /* ../lib/standard/string.nit:332 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/string.nit:321 */
+      /* ../lib/standard/string.nit:329 */
       goto label1;
     }
   }
@@ -1705,18 +1705,18 @@ val_t standard___string___String___to_upper(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:327 */
+  /* ../lib/standard/string.nit:335 */
   REGB1 = TAG_Char('\0');
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB1);;
-  /* ../lib/standard/string.nit:329 */
+  /* ../lib/standard/string.nit:337 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 329);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 337);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+  fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -1732,7 +1732,7 @@ val_t standard___string___String___to_lower(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 332;
+  fra.me.line = 340;
   fra.me.meth = LOCATE_standard___string___String___to_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1741,72 +1741,72 @@ val_t standard___string___String___to_lower(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:335 */
+  /* ../lib/standard/string.nit:342 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 335);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 342);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ../lib/standard/string.nit:336 */
+  /* ../lib/standard/string.nit:343 */
   REGB1 = TAG_Int(0);
-  /* ../lib/standard/string.nit:338 */
+  /* ../lib/standard/string.nit:345 */
   REGB0 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 338);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 345);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:339 */
+  /* ../lib/standard/string.nit:346 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 339);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 346);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:340 */
+  /* ../lib/standard/string.nit:347 */
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 340);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 347);
   }
   REGB2 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:342 */
+  /* ../lib/standard/string.nit:349 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
-    /* ../lib/standard/string.nit:342 */
+    /* ../lib/standard/string.nit:349 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB3 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
-      /* ../lib/standard/string.nit:343 */
+      /* ../lib/standard/string.nit:350 */
       REGB3 = CALL_standard___kernel___Char___to_lower(REGB3)(REGB3);
-      /* ../lib/standard/string.nit:956 */
+      /* ../lib/standard/string.nit:971 */
       UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB1)]=UNTAG_Char(REGB3);;
-      /* ../lib/standard/string.nit:344 */
+      /* ../lib/standard/string.nit:351 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:344 */
+      /* ../lib/standard/string.nit:351 */
       REGB1 = REGB3;
-      /* ../lib/standard/string.nit:345 */
+      /* ../lib/standard/string.nit:352 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:345 */
+      /* ../lib/standard/string.nit:352 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/string.nit:342 */
+      /* ../lib/standard/string.nit:349 */
       goto label1;
     }
   }
@@ -1818,18 +1818,18 @@ val_t standard___string___String___to_lower(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:348 */
+  /* ../lib/standard/string.nit:355 */
   REGB1 = TAG_Char('\0');
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB1);;
-  /* ../lib/standard/string.nit:350 */
+  /* ../lib/standard/string.nit:357 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 350);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 357);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+  fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -1847,7 +1847,7 @@ val_t standard___string___String___trim(val_t p0){
         static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 353;
+  fra.me.line = 360;
   fra.me.meth = LOCATE_standard___string___String___trim;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1856,86 +1856,86 @@ val_t standard___string___String___trim(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:355 */
+  /* ../lib/standard/string.nit:362 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 355);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 362);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/string.nit:355 */
+    /* ../lib/standard/string.nit:362 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
   }
-  /* ../lib/standard/string.nit:357 */
+  /* ../lib/standard/string.nit:364 */
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 357);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 364);
   }
   REGB2 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:358 */
+  /* ../lib/standard/string.nit:365 */
   while(1) {
     REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 358);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 365);
     }
     fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-    /* ../lib/standard/string.nit:955 */
+    /* ../lib/standard/string.nit:970 */
     REGB1 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB2)]);
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-    /* ../lib/standard/string.nit:358 */
+    /* ../lib/standard/string.nit:365 */
     REGB0 = TAG_Int(32);
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:358 */
+    /* ../lib/standard/string.nit:365 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/string.nit:359 */
+      /* ../lib/standard/string.nit:366 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/string.nit:359 */
+      /* ../lib/standard/string.nit:366 */
       REGB2 = REGB0;
-      /* ../lib/standard/string.nit:360 */
+      /* ../lib/standard/string.nit:367 */
       REGB0 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 360);
+        nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 367);
       }
       REGB0 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:360 */
+      /* ../lib/standard/string.nit:367 */
       REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((REGB2)==(REGB1));
-        /* ../lib/standard/string.nit:360 */
+        /* ../lib/standard/string.nit:367 */
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
         if (!once_value_2) {
           fra.me.REG[2] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -1944,95 +1944,95 @@ val_t standard___string___String___trim(val_t p0){
         goto label1;
       }
     } else {
-      /* ../lib/standard/string.nit:358 */
+      /* ../lib/standard/string.nit:365 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ../lib/standard/string.nit:363 */
+  /* ../lib/standard/string.nit:370 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 363);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 370);
   }
   REGB0 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:364 */
+  /* ../lib/standard/string.nit:371 */
   while(1) {
     REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 364);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 371);
     }
     fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-    /* ../lib/standard/string.nit:955 */
+    /* ../lib/standard/string.nit:970 */
     REGB1 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
-    /* ../lib/standard/kernel.nit:416 */
+    /* ../lib/standard/kernel.nit:471 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-    /* ../lib/standard/string.nit:364 */
+    /* ../lib/standard/string.nit:371 */
     REGB3 = TAG_Int(32);
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB3));
-    /* ../lib/standard/string.nit:364 */
+    /* ../lib/standard/string.nit:371 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:365 */
+      /* ../lib/standard/string.nit:372 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:365 */
+      /* ../lib/standard/string.nit:372 */
       REGB0 = REGB3;
-      /* ../lib/standard/string.nit:366 */
+      /* ../lib/standard/string.nit:373 */
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((REGB0)==(REGB2));
-        /* ../lib/standard/string.nit:366 */
+        /* ../lib/standard/string.nit:373 */
         REGB3 = REGB1;
       }
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 366);
+          nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 373);
         }
         fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-        /* ../lib/standard/string.nit:955 */
+        /* ../lib/standard/string.nit:970 */
         REGB3 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB2)]);
-        /* ../lib/standard/string.nit:366 */
+        /* ../lib/standard/string.nit:373 */
         fra.me.REG[2] = CALL_standard___string___Object___to_s(REGB3)(REGB3);
         fra.me.REG[1] = fra.me.REG[2];
         goto label1;
       }
     } else {
-      /* ../lib/standard/string.nit:364 */
+      /* ../lib/standard/string.nit:371 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ../lib/standard/string.nit:368 */
+  /* ../lib/standard/string.nit:375 */
   REGB3 = CALL_standard___string___String___index_from(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:368 */
+  /* ../lib/standard/string.nit:375 */
   REGB2 = REGB3;
-  /* ../lib/standard/string.nit:369 */
+  /* ../lib/standard/string.nit:376 */
   REGB3 = CALL_standard___string___String___index_from(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:369 */
+  /* ../lib/standard/string.nit:376 */
   REGB0 = REGB3;
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:370 */
+  /* ../lib/standard/string.nit:377 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:370 */
+  /* ../lib/standard/string.nit:377 */
   fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB2, REGB3);
   fra.me.REG[1] = fra.me.REG[0];
   goto label1;
@@ -2049,7 +2049,7 @@ void standard___string___String___output(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 373;
+  fra.me.line = 380;
   fra.me.meth = LOCATE_standard___string___String___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2057,50 +2057,50 @@ void standard___string___String___output(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:375 */
+  /* ../lib/standard/string.nit:382 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 375);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 382);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:376 */
+  /* ../lib/standard/string.nit:383 */
   REGB1 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 376);
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 383);
   }
   REGB1 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:377 */
+  /* ../lib/standard/string.nit:384 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:377 */
+    /* ../lib/standard/string.nit:384 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/string.nit:378 */
+      /* ../lib/standard/string.nit:385 */
       REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 378);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 385);
       }
       fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB2 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB0)]);
-      /* ../lib/standard/kernel.nit:383 */
+      /* ../lib/standard/kernel.nit:436 */
       printf("%c", (unsigned char)UNTAG_Char(REGB2));;
-      /* ../lib/standard/string.nit:379 */
+      /* ../lib/standard/string.nit:386 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/string.nit:379 */
+      /* ../lib/standard/string.nit:386 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/string.nit:377 */
+      /* ../lib/standard/string.nit:384 */
       goto label1;
     }
   }
@@ -2118,7 +2118,7 @@ void standard___string___String___from_substring(val_t p0, val_t p1, val_t p2, v
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 387;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_standard___string___String___from_substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2129,26 +2129,26 @@ void standard___string___String___from_substring(val_t p0, val_t p1, val_t p2, v
   REGB0 = p1;
   REGB1 = p2;
   fra.me.REG[1] = p3;
-  /* ../lib/standard/string.nit:395 */
+  /* ../lib/standard/string.nit:402 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/string.nit:396 */
+  /* ../lib/standard/string.nit:403 */
   ATTR_standard___string___String____index_from(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/string.nit:397 */
+  /* ../lib/standard/string.nit:404 */
   ATTR_standard___string___String____index_to(fra.me.REG[0]) = REGB1;
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:398 */
+  /* ../lib/standard/string.nit:405 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:398 */
+  /* ../lib/standard/string.nit:405 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
 }
-static const char LOCATE_standard___string___String___with_native[] = "string::String::with_native";
-void standard___string___String___with_native(val_t p0, val_t p1, val_t p2, int* init_table){
+static const char LOCATE_standard___string___String___with_infos[] = "string::String::with_infos";
+void standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
   int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___String].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2158,8 +2158,8 @@ void standard___string___String___with_native(val_t p0, val_t p1, val_t p2, int*
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 401;
-  fra.me.meth = LOCATE_standard___string___String___with_native;
+  fra.me.line = 408;
+  fra.me.meth = LOCATE_standard___string___String___with_infos;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.nitni_local_ref_head = NULL;
@@ -2168,112 +2168,20 @@ void standard___string___String___with_native(val_t p0, val_t p1, val_t p2, int*
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/string.nit:404 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:236 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:404 */
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 404);
-  }
-  /* ../lib/standard/string.nit:405 */
+  REGB1 = p3;
+  REGB2 = p4;
+  /* ../lib/standard/string.nit:410 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/string.nit:406 */
+  /* ../lib/standard/string.nit:411 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/string.nit:407 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___string___String____index_from(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/string.nit:408 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 408);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:408 */
-  ATTR_standard___string___String____index_to(fra.me.REG[0]) = REGB1;
+  /* ../lib/standard/string.nit:412 */
+  ATTR_standard___string___String____index_from(fra.me.REG[0]) = REGB1;
+  /* ../lib/standard/string.nit:413 */
+  ATTR_standard___string___String____index_to(fra.me.REG[0]) = REGB2;
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
   return;
 }
-static const char LOCATE_standard___string___String___from_cstring[] = "string::String::from_cstring";
-void standard___string___String___from_cstring(val_t p0, val_t p1, int* init_table){
-  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___String].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos2]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___string;
-  fra.me.line = 411;
-  fra.me.meth = LOCATE_standard___string___String___from_cstring;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:414 */
-  REGB0 = CALL_standard___string___NativeString___cstring_length(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___string___String___with_native(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
-  stack_frame_head = fra.me.prev;
-  init_table[itpos2] = 1;
-  return;
-}
-static const char LOCATE_standard___string___String___copy_from_native[] = "string::String::copy_from_native";
-void standard___string___String___copy_from_native(val_t p0, val_t p1, int* init_table){
-  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___String].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  if (init_table[itpos3]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___string;
-  fra.me.line = 417;
-  fra.me.meth = LOCATE_standard___string___String___copy_from_native;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:423 */
-  REGB0 = CALL_standard___string___NativeString___cstring_length(fra.me.REG[1])(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:424 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:972 */
-  fra.me.REG[2] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ../lib/standard/string.nit:425 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Int(0);
-  /* ../lib/standard/string.nit:957 */
-  (void)memcpy(UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB1), UNTAG_Int(REGB0));;
-  /* ../lib/standard/string.nit:426 */
-  REGB2 = TAG_Char('\0');
-  /* ../lib/standard/string.nit:956 */
-  UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB2);;
-  /* ../lib/standard/string.nit:427 */
-  CALL_standard___string___String___with_native(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], REGB0, init_table);
-  stack_frame_head = fra.me.prev;
-  init_table[itpos3] = 1;
-  return;
-}
 static const char LOCATE_standard___string___String___to_cstring[] = "string::String::to_cstring";
 val_t standard___string___String___to_cstring(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -2284,7 +2192,7 @@ val_t standard___string___String___to_cstring(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 430;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_standard___string___String___to_cstring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2293,11 +2201,11 @@ val_t standard___string___String___to_cstring(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:434 */
+  /* ../lib/standard/string.nit:419 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 434);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 419);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
@@ -2306,64 +2214,64 @@ val_t standard___string___String___to_cstring(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:434 */
+  /* ../lib/standard/string.nit:419 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(1);
   } else {
     REGB0 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 434);
+      nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_standard___string, 419);
     }
     REGB0 = ATTR_standard___string___String____index_to(fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___string___AbstractString___items(fra.me.REG[0])(fra.me.REG[0]);
     REGB2 = CALL_standard___string___NativeString___cstring_length(fra.me.REG[1])(fra.me.REG[1]);
     REGB3 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-    /* ../lib/standard/string.nit:434 */
+    /* ../lib/standard/string.nit:419 */
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB3 = TAG_Bool((REGB0)==(REGB3));
-      /* ../lib/standard/string.nit:434 */
+      /* ../lib/standard/string.nit:419 */
       REGB2 = REGB3;
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/string.nit:435 */
+    /* ../lib/standard/string.nit:420 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 435);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 420);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-    /* ../lib/standard/string.nit:972 */
+    /* ../lib/standard/string.nit:1007 */
     fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB2) * sizeof(char))));
-    /* ../lib/standard/string.nit:436 */
+    /* ../lib/standard/string.nit:421 */
     fra.me.REG[2] = CALL_standard___string___AbstractString___items(fra.me.REG[0])(fra.me.REG[0]);
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 436);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 421);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB1 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 436);
+      nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 421);
     }
     REGB1 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
     REGB3 = TAG_Int(0);
-    /* ../lib/standard/string.nit:957 */
+    /* ../lib/standard/string.nit:972 */
     (void)memcpy(UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB3), UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB1), UNTAG_Int(REGB2));;
     /* ../lib/standard/collection/array.nit:24 */
     REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -2372,18 +2280,18 @@ val_t standard___string___String___to_cstring(val_t p0){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ../lib/standard/string.nit:437 */
+    /* ../lib/standard/string.nit:422 */
     REGB1 = TAG_Char('\0');
-    /* ../lib/standard/string.nit:956 */
+    /* ../lib/standard/string.nit:971 */
     UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB3)]=UNTAG_Char(REGB1);;
-    /* ../lib/standard/string.nit:438 */
+    /* ../lib/standard/string.nit:423 */
     goto label1;
   }
-  /* ../lib/standard/string.nit:440 */
+  /* ../lib/standard/string.nit:425 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 440);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 425);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   fra.me.REG[1] = fra.me.REG[0];
@@ -2405,7 +2313,7 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 443;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_standard___string___String_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2414,7 +2322,7 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:445 */
+  /* ../lib/standard/string.nit:430 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
@@ -2427,19 +2335,19 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
     REGB0 = TAG_Bool(0);
     goto label1;
   }
-  /* ../lib/standard/string.nit:447 */
+  /* ../lib/standard/string.nit:432 */
   REGB1 = CALL_standard___kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 447);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 432);
   }
   REGB2 = CALL_standard___kernel___Object___object_id(fra.me.REG[1])(fra.me.REG[1]);
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
-    /* ../lib/standard/string.nit:447 */
+    /* ../lib/standard/string.nit:432 */
     REGB3 = REGB2;
   }
   if (UNTAG_Bool(REGB3)) {
@@ -2447,26 +2355,26 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
     REGB0 = REGB3;
     goto label1;
   }
-  /* ../lib/standard/string.nit:449 */
+  /* ../lib/standard/string.nit:434 */
   REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 449);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 434);
   }
   REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:451 */
+  /* ../lib/standard/string.nit:436 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 451);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 436);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB2)==(REGB3));
-    /* ../lib/standard/string.nit:451 */
+    /* ../lib/standard/string.nit:436 */
     REGB1 = REGB2;
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
@@ -2475,57 +2383,57 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
     REGB0 = REGB1;
     goto label1;
   }
-  /* ../lib/standard/string.nit:453 */
+  /* ../lib/standard/string.nit:438 */
   REGB1 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 453);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 438);
   }
   REGB1 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:454 */
+  /* ../lib/standard/string.nit:439 */
   REGB2 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 454);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 439);
   }
   REGB2 = ATTR_standard___string___String____index_from(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:458 */
+  /* ../lib/standard/string.nit:443 */
   REGB4 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 458);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 443);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:459 */
+  /* ../lib/standard/string.nit:444 */
   REGB4 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 459);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 444);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:461 */
+  /* ../lib/standard/string.nit:446 */
   while(1) {
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
-    /* ../lib/standard/string.nit:461 */
+    /* ../lib/standard/string.nit:446 */
     if (UNTAG_Bool(REGB4)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB1)]);
       REGB5 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB2)]);
-      /* ../lib/standard/string.nit:462 */
+      /* ../lib/standard/string.nit:447 */
       REGB6 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
       if (UNTAG_Bool(REGB6)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB5 = TAG_Bool((REGB4)==(REGB5));
-        /* ../lib/standard/string.nit:462 */
+        /* ../lib/standard/string.nit:447 */
         REGB6 = REGB5;
       }
       REGB6 = TAG_Bool(!UNTAG_Bool(REGB6));
@@ -2534,25 +2442,25 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
         REGB0 = REGB6;
         goto label1;
       }
-      /* ../lib/standard/string.nit:463 */
+      /* ../lib/standard/string.nit:448 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB6 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB6));
-      /* ../lib/standard/string.nit:463 */
+      /* ../lib/standard/string.nit:448 */
       REGB1 = REGB6;
-      /* ../lib/standard/string.nit:464 */
+      /* ../lib/standard/string.nit:449 */
       REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB6 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB6));
-      /* ../lib/standard/string.nit:464 */
+      /* ../lib/standard/string.nit:449 */
       REGB2 = REGB6;
     } else {
-      /* ../lib/standard/string.nit:461 */
+      /* ../lib/standard/string.nit:446 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:467 */
+  /* ../lib/standard/string.nit:452 */
   REGB2 = TAG_Bool(1);
   REGB0 = REGB2;
   goto label1;
@@ -2576,7 +2484,7 @@ val_t standard___string___String_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 470;
+  fra.me.line = 455;
   fra.me.meth = LOCATE_standard___string___String_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2592,86 +2500,86 @@ val_t standard___string___String_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___string, 0);
   }
-  /* ../lib/standard/string.nit:474 */
+  /* ../lib/standard/string.nit:460 */
   REGB0 = CALL_standard___kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___kernel___Object___object_id(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/string.nit:474 */
+    /* ../lib/standard/string.nit:460 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(0);
     goto label1;
   }
-  /* ../lib/standard/string.nit:479 */
+  /* ../lib/standard/string.nit:465 */
   REGB1 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 479);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 465);
   }
   REGB1 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:480 */
+  /* ../lib/standard/string.nit:466 */
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 480);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 466);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:482 */
+  /* ../lib/standard/string.nit:468 */
   REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 482);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 468);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:483 */
+  /* ../lib/standard/string.nit:469 */
   REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 483);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 469);
   }
   fra.me.REG[3] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:485 */
+  /* ../lib/standard/string.nit:471 */
   REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 485);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 471);
   }
   REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:486 */
+  /* ../lib/standard/string.nit:472 */
   REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 486);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 472);
   }
   REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB5 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:490 */
+  /* ../lib/standard/string.nit:476 */
   while(1) {
     REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB6)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB6 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB5));
-    /* ../lib/standard/string.nit:490 */
+    /* ../lib/standard/string.nit:476 */
     if (UNTAG_Bool(REGB6)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB6 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB1)]);
       REGB7 = TAG_Char(UNBOX_NativeString(fra.me.REG[3])[UNTAG_Int(REGB0)]);
-      /* ../lib/standard/string.nit:494 */
+      /* ../lib/standard/string.nit:480 */
       REGB8 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB7));
       if (UNTAG_Bool(REGB8)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB9 = TAG_Bool((REGB6)==(REGB7));
-        /* ../lib/standard/string.nit:494 */
+        /* ../lib/standard/string.nit:480 */
         REGB8 = REGB9;
       }
       REGB8 = TAG_Bool(!UNTAG_Bool(REGB8));
@@ -2681,33 +2589,33 @@ val_t standard___string___String_____l(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:386 */
+        /* ../lib/standard/kernel.nit:439 */
         REGB7 = TAG_Bool(UNTAG_Char(REGB6)<UNTAG_Char(REGB7));
-        /* ../lib/standard/string.nit:495 */
+        /* ../lib/standard/string.nit:481 */
         if (UNTAG_Bool(REGB7)) {
           REGB7 = TAG_Bool(1);
           REGB2 = REGB7;
           goto label1;
         }
-        /* ../lib/standard/string.nit:496 */
+        /* ../lib/standard/string.nit:482 */
         REGB7 = TAG_Bool(0);
         REGB2 = REGB7;
         goto label1;
       }
-      /* ../lib/standard/string.nit:499 */
+      /* ../lib/standard/string.nit:485 */
       REGB7 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB7 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB7));
-      /* ../lib/standard/string.nit:499 */
+      /* ../lib/standard/string.nit:485 */
       REGB1 = REGB7;
-      /* ../lib/standard/string.nit:500 */
+      /* ../lib/standard/string.nit:486 */
       REGB7 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB7 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB7));
-      /* ../lib/standard/string.nit:500 */
+      /* ../lib/standard/string.nit:486 */
       REGB0 = REGB7;
     } else {
-      /* ../lib/standard/string.nit:490 */
+      /* ../lib/standard/string.nit:476 */
       goto label2;
     }
   }
@@ -2717,9 +2625,9 @@ val_t standard___string___String_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-  /* ../lib/standard/string.nit:503 */
+  /* ../lib/standard/string.nit:489 */
   REGB2 = REGB4;
   goto label1;
   label1: while(0);
@@ -2733,10 +2641,11 @@ val_t standard___string___String_____plus(val_t p0, val_t p1){
   val_t REGB1;
   val_t REGB2;
   val_t REGB3;
+  val_t REGB4;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 506;
+  fra.me.line = 492;
   fra.me.meth = LOCATE_standard___string___String_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2747,69 +2656,66 @@ val_t standard___string___String_____plus(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:509 */
+  /* ../lib/standard/string.nit:497 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 509);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 497);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:510 */
+  /* ../lib/standard/string.nit:498 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 510);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 498);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:512 */
-  REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
-  REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:972 */
-  fra.me.REG[2] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB3) * sizeof(char))));
-  /* ../lib/standard/string.nit:514 */
-  REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB3)) {
+  REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+  /* ../lib/standard/string.nit:502 */
+  REGB4 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:245 */
+  REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
+  /* ../lib/standard/string.nit:1007 */
+  fra.me.REG[2] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB4) * sizeof(char))));
+  /* ../lib/standard/string.nit:504 */
+  REGB4 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 514);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 504);
   }
   fra.me.REG[3] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  REGB3 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB3)) {
+  REGB4 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 514);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 504);
   }
-  REGB3 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  REGB2 = TAG_Int(0);
-  /* ../lib/standard/string.nit:957 */
-  (void)memcpy(UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[3])+UNTAG_Int(REGB3), UNTAG_Int(REGB0));;
-  /* ../lib/standard/string.nit:515 */
-  REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
+  REGB4 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
+  REGB3 = TAG_Int(0);
+  /* ../lib/standard/string.nit:972 */
+  (void)memcpy(UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB3), UNBOX_NativeString(fra.me.REG[3])+UNTAG_Int(REGB4), UNTAG_Int(REGB0));;
+  /* ../lib/standard/string.nit:505 */
+  REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 515);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 505);
   }
   fra.me.REG[3] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  REGB2 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
+  REGB3 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 515);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 505);
   }
-  REGB2 = ATTR_standard___string___String____index_from(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:957 */
-  (void)memcpy(UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB0), UNBOX_NativeString(fra.me.REG[3])+UNTAG_Int(REGB2), UNTAG_Int(REGB1));;
-  /* ../lib/standard/kernel.nit:238 */
-  REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:517 */
-  REGB3 = TAG_Char('\0');
-  /* ../lib/standard/string.nit:956 */
-  UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB2)]=UNTAG_Char(REGB3);;
-  /* ../lib/standard/kernel.nit:238 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:519 */
-  fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+  REGB3 = ATTR_standard___string___String____index_from(fra.me.REG[1]);
+  /* ../lib/standard/string.nit:972 */
+  (void)memcpy(UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB0), UNBOX_NativeString(fra.me.REG[3])+UNTAG_Int(REGB3), UNTAG_Int(REGB1));;
+  /* ../lib/standard/string.nit:507 */
+  REGB0 = TAG_Char('\0');
+  /* ../lib/standard/string.nit:971 */
+  UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB2)]=UNTAG_Char(REGB0);;
+  /* ../lib/standard/string.nit:509 */
+  fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2827,7 +2733,7 @@ val_t standard___string___String_____star(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 522;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_standard___string___String_____star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2836,83 +2742,83 @@ val_t standard___string___String_____star(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:525 */
+  /* ../lib/standard/string.nit:519 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:525 */
+  /* ../lib/standard/string.nit:519 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 525);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 519);
   }
-  /* ../lib/standard/string.nit:527 */
+  /* ../lib/standard/string.nit:521 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 527);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 521);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:241 */
+  /* ../lib/standard/kernel.nit:248 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:531 */
+  /* ../lib/standard/string.nit:525 */
   REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 531);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 525);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:533 */
+  /* ../lib/standard/string.nit:527 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[0] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB3) * sizeof(char))));
-  /* ../lib/standard/string.nit:535 */
+  /* ../lib/standard/string.nit:529 */
   REGB3 = TAG_Char('\0');
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB2)]=UNTAG_Char(REGB3);;
-  /* ../lib/standard/string.nit:537 */
+  /* ../lib/standard/string.nit:531 */
   REGB3 = TAG_Int(0);
-  /* ../lib/standard/string.nit:539 */
+  /* ../lib/standard/string.nit:533 */
   REGB4 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:344 */
+  /* ../lib/standard/kernel.nit:393 */
   while(1) {
     REGB5 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB5)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:344 */
+    /* ../lib/standard/kernel.nit:393 */
     if (UNTAG_Bool(REGB5)) {
-      /* ../lib/standard/string.nit:540 */
+      /* ../lib/standard/string.nit:534 */
       REGB5 = TAG_Int(0);
-      /* ../lib/standard/string.nit:957 */
+      /* ../lib/standard/string.nit:972 */
       (void)memcpy(UNBOX_NativeString(fra.me.REG[0])+UNTAG_Int(REGB3), UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB5), UNTAG_Int(REGB1));;
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:541 */
+      /* ../lib/standard/string.nit:535 */
       REGB3 = REGB5;
-      /* ../lib/standard/kernel.nit:346 */
+      /* ../lib/standard/kernel.nit:395 */
       REGB5 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
-      /* ../lib/standard/kernel.nit:346 */
+      /* ../lib/standard/kernel.nit:395 */
       REGB4 = REGB5;
     } else {
-      /* ../lib/standard/kernel.nit:344 */
+      /* ../lib/standard/kernel.nit:393 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/string.nit:544 */
-  fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+  /* ../lib/standard/string.nit:538 */
+  fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -2924,14 +2830,14 @@ val_t standard___string___String___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 547;
+  fra.me.line = 541;
   fra.me.meth = LOCATE_standard___string___String___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:547 */
+  /* ../lib/standard/string.nit:541 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2948,7 +2854,7 @@ val_t standard___string___String___hash(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 549;
+  fra.me.line = 543;
   fra.me.meth = LOCATE_standard___string___String___hash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2956,81 +2862,81 @@ val_t standard___string___String___hash(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:552 */
+  /* ../lib/standard/string.nit:546 */
   REGB0 = TAG_Int(5381);
-  /* ../lib/standard/string.nit:553 */
+  /* ../lib/standard/string.nit:547 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 553);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 547);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:555 */
+  /* ../lib/standard/string.nit:549 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 555);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 549);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:556 */
+  /* ../lib/standard/string.nit:550 */
   REGB1 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 556);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 550);
   }
   REGB1 = ATTR_standard___string___String____index_from(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:558 */
+  /* ../lib/standard/string.nit:552 */
   REGB2 = REGB3;
-  /* ../lib/standard/string.nit:560 */
+  /* ../lib/standard/string.nit:554 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:560 */
+    /* ../lib/standard/string.nit:554 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:561 */
+      /* ../lib/standard/string.nit:555 */
       REGB3 = TAG_Int(32);
-      /* ../lib/standard/kernel.nit:241 */
+      /* ../lib/standard/kernel.nit:248 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ../lib/standard/string.nit:561 */
+      /* ../lib/standard/string.nit:555 */
       REGB4 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 561);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 555);
       }
       fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB2)]);
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB4 = TAG_Int((unsigned char)UNTAG_Char(REGB4));
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-      /* ../lib/standard/string.nit:561 */
+      /* ../lib/standard/string.nit:555 */
       REGB0 = REGB4;
-      /* ../lib/standard/string.nit:562 */
+      /* ../lib/standard/string.nit:556 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB4));
-      /* ../lib/standard/string.nit:562 */
+      /* ../lib/standard/string.nit:556 */
       REGB2 = REGB4;
     } else {
-      /* ../lib/standard/string.nit:560 */
+      /* ../lib/standard/string.nit:554 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/string.nit:565 */
+  /* ../lib/standard/string.nit:559 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -3046,7 +2952,7 @@ void standard___string___Buffer_____braeq(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_standard___string;
-  fra.me.line = 578;
+  fra.me.line = 572;
   fra.me.meth = LOCATE_standard___string___Buffer_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -3062,31 +2968,31 @@ void standard___string___Buffer_____braeq(val_t p0, val_t p1, val_t p2){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:580 */
+  /* ../lib/standard/string.nit:574 */
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ../lib/standard/string.nit:580 */
+    /* ../lib/standard/string.nit:574 */
     REGB3 = REGB2;
   }
   if (UNTAG_Bool(REGB3)) {
-    /* ../lib/standard/string.nit:581 */
+    /* ../lib/standard/string.nit:575 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
-    /* ../lib/standard/string.nit:582 */
+    /* ../lib/standard/string.nit:576 */
     goto label1;
   }
-  /* ../lib/standard/string.nit:584 */
+  /* ../lib/standard/string.nit:578 */
   REGB3 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB3));
-  /* ../lib/standard/string.nit:584 */
+  /* ../lib/standard/string.nit:578 */
   if (UNTAG_Bool(REGB3)) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -3100,25 +3006,25 @@ void standard___string___Buffer_____braeq(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
   } else {
-    /* ../lib/standard/string.nit:584 */
+    /* ../lib/standard/string.nit:578 */
     REGB2 = TAG_Bool(0);
     REGB3 = REGB2;
   }
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 584);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 578);
   }
-  /* ../lib/standard/string.nit:585 */
+  /* ../lib/standard/string.nit:579 */
   REGB3 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 585);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 579);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB1);;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3134,7 +3040,7 @@ void standard___string___Buffer___add(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 588;
+  fra.me.line = 582;
   fra.me.meth = LOCATE_standard___string___Buffer___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3143,11 +3049,11 @@ void standard___string___Buffer___add(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:590 */
+  /* ../lib/standard/string.nit:584 */
   REGB1 = TAG_Bool(ATTR_standard___string___Buffer____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 590);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 584);
   }
   REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3162,9 +3068,9 @@ void standard___string___Buffer___add(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:590 */
+  /* ../lib/standard/string.nit:584 */
   if (UNTAG_Bool(REGB2)) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -3173,18 +3079,18 @@ void standard___string___Buffer___add(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ../lib/standard/string.nit:590 */
+    /* ../lib/standard/string.nit:584 */
     REGB1 = TAG_Int(5);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:590 */
+    /* ../lib/standard/string.nit:584 */
     CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
   }
-  /* ../lib/standard/string.nit:591 */
+  /* ../lib/standard/string.nit:585 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 591);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 585);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3194,14 +3100,14 @@ void standard___string___Buffer___add(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB1)]=UNTAG_Char(REGB0);;
-  /* ../lib/standard/string.nit:592 */
+  /* ../lib/standard/string.nit:586 */
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:592 */
+  /* ../lib/standard/string.nit:586 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   return;
@@ -3216,7 +3122,7 @@ void standard___string___Buffer___enlarge(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 595;
+  fra.me.line = 589;
   fra.me.meth = LOCATE_standard___string___Buffer___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3226,11 +3132,11 @@ void standard___string___Buffer___enlarge(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:597 */
+  /* ../lib/standard/string.nit:591 */
   REGB1 = TAG_Bool(ATTR_standard___string___Buffer____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 597);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 591);
   }
   REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -3238,48 +3144,48 @@ void standard___string___Buffer___enlarge(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:598 */
+  /* ../lib/standard/string.nit:592 */
   if (UNTAG_Bool(REGB2)) {
     goto label1;
   }
-  /* ../lib/standard/string.nit:599 */
+  /* ../lib/standard/string.nit:593 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:599 */
+    /* ../lib/standard/string.nit:593 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:241 */
+      /* ../lib/standard/kernel.nit:248 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
-      /* ../lib/standard/string.nit:599 */
+      /* ../lib/standard/string.nit:593 */
       REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:599 */
+      /* ../lib/standard/string.nit:593 */
       REGB1 = REGB3;
     } else {
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:600 */
+  /* ../lib/standard/string.nit:594 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB0) * sizeof(char))));
-  /* ../lib/standard/string.nit:601 */
+  /* ../lib/standard/string.nit:595 */
   REGB0 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 601);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 595);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -3289,14 +3195,14 @@ void standard___string___Buffer___enlarge(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:601 */
+  /* ../lib/standard/string.nit:595 */
   REGB3 = TAG_Int(0);
   REGB2 = TAG_Int(0);
-  /* ../lib/standard/string.nit:957 */
+  /* ../lib/standard/string.nit:972 */
   (void)memcpy(UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB3), UNTAG_Int(REGB0));;
-  /* ../lib/standard/string.nit:602 */
+  /* ../lib/standard/string.nit:596 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/string.nit:603 */
+  /* ../lib/standard/string.nit:597 */
   ATTR_standard___string___Buffer____capacity(fra.me.REG[0]) = REGB1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3312,7 +3218,7 @@ void standard___string___Buffer___append(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 606;
+  fra.me.line = 600;
   fra.me.meth = LOCATE_standard___string___Buffer___append;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -3325,10 +3231,10 @@ void standard___string___Buffer___append(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:606 */
+  /* ../lib/standard/string.nit:600 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ../lib/standard/string.nit:608 */
+  /* ../lib/standard/string.nit:602 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
   if (UNTAG_Bool(REGB0)) {
     /* ../lib/standard/collection/array.nit:24 */
@@ -3338,71 +3244,71 @@ void standard___string___Buffer___append(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ../lib/standard/string.nit:610 */
+    /* ../lib/standard/string.nit:604 */
     REGB1 = TAG_Bool(ATTR_standard___string___Buffer____capacity(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 610);
+      nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 604);
     }
     REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[2]);
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 610);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 604);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/string.nit:610 */
+    /* ../lib/standard/string.nit:604 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 610);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 604);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/string.nit:610 */
+      /* ../lib/standard/string.nit:604 */
       CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[2])(fra.me.REG[2], REGB2);
     }
-    /* ../lib/standard/string.nit:611 */
+    /* ../lib/standard/string.nit:605 */
     fra.me.REG[4] = CALL_standard___string___AbstractString___items(fra.me.REG[3])(fra.me.REG[3]);
     REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 611);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 605);
     }
     fra.me.REG[5] = ATTR_standard___string___AbstractString____items(fra.me.REG[2]);
     REGB2 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 611);
+      nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 605);
     }
     REGB2 = ATTR_standard___string___String____index_from(fra.me.REG[3]);
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 611);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 605);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/string.nit:957 */
+    /* ../lib/standard/string.nit:972 */
     (void)memcpy(UNBOX_NativeString(fra.me.REG[5])+UNTAG_Int(REGB1), UNBOX_NativeString(fra.me.REG[4])+UNTAG_Int(REGB2), UNTAG_Int(REGB0));;
-    /* ../lib/standard/string.nit:612 */
+    /* ../lib/standard/string.nit:606 */
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:612 */
+    /* ../lib/standard/string.nit:606 */
     ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB0;
   } else {
-    /* ../lib/standard/string.nit:614 */
+    /* ../lib/standard/string.nit:608 */
     CALL_SUPER_standard___string___Buffer___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
@@ -3417,7 +3323,7 @@ val_t standard___string___Buffer___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 618;
+  fra.me.line = 612;
   fra.me.meth = LOCATE_standard___string___Buffer___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3433,22 +3339,22 @@ val_t standard___string___Buffer___to_s(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:621 */
+  /* ../lib/standard/string.nit:615 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ../lib/standard/string.nit:622 */
+  /* ../lib/standard/string.nit:616 */
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 622);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 616);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Int(0);
-  /* ../lib/standard/string.nit:957 */
+  /* ../lib/standard/string.nit:972 */
   (void)memcpy(UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB1), UNTAG_Int(REGB0));;
   /* ../lib/standard/collection/array.nit:24 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -3457,9 +3363,9 @@ val_t standard___string___Buffer___to_s(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:625 */
+  /* ../lib/standard/string.nit:619 */
   REGB1 = TAG_Char('\0');
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB2)]=UNTAG_Char(REGB1);;
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -3468,8 +3374,8 @@ val_t standard___string___Buffer___to_s(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:627 */
-  fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+  /* ../lib/standard/string.nit:621 */
+  fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3488,7 +3394,7 @@ val_t standard___string___Buffer_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 630;
+  fra.me.line = 624;
   fra.me.meth = LOCATE_standard___string___Buffer_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3502,7 +3408,7 @@ val_t standard___string___Buffer_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___string, 0);
   }
-  /* ../lib/standard/string.nit:632 */
+  /* ../lib/standard/string.nit:626 */
   REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -3517,48 +3423,48 @@ val_t standard___string___Buffer_____l(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:635 */
+  /* ../lib/standard/string.nit:629 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:635 */
+    /* ../lib/standard/string.nit:629 */
     if (UNTAG_Bool(REGB3)) {
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
     } else {
-      /* ../lib/standard/string.nit:635 */
+      /* ../lib/standard/string.nit:629 */
       REGB4 = TAG_Bool(0);
       REGB3 = REGB4;
     }
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:636 */
+      /* ../lib/standard/string.nit:630 */
       REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ../lib/standard/string.nit:637 */
+      /* ../lib/standard/string.nit:631 */
       REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      /* ../lib/standard/kernel.nit:416 */
+      /* ../lib/standard/kernel.nit:471 */
       REGB4 = TAG_Int((unsigned char)UNTAG_Char(REGB4));
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-      /* ../lib/standard/string.nit:638 */
+      /* ../lib/standard/string.nit:632 */
       if (UNTAG_Bool(REGB5)) {
-        /* ../lib/standard/string.nit:639 */
+        /* ../lib/standard/string.nit:633 */
         REGB5 = TAG_Bool(1);
         goto label1;
       } else {
@@ -3567,24 +3473,24 @@ val_t standard___string___Buffer_____l(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-        /* ../lib/standard/string.nit:640 */
+        /* ../lib/standard/string.nit:634 */
         if (UNTAG_Bool(REGB3)) {
-          /* ../lib/standard/string.nit:641 */
+          /* ../lib/standard/string.nit:635 */
           REGB3 = TAG_Bool(0);
           REGB5 = REGB3;
           goto label1;
         }
       }
-      /* ../lib/standard/string.nit:643 */
+      /* ../lib/standard/string.nit:637 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:643 */
+      /* ../lib/standard/string.nit:637 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/string.nit:635 */
+      /* ../lib/standard/string.nit:629 */
       goto label2;
     }
   }
@@ -3594,16 +3500,16 @@ val_t standard___string___Buffer_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:645 */
+  /* ../lib/standard/string.nit:639 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/string.nit:646 */
+    /* ../lib/standard/string.nit:640 */
     REGB2 = TAG_Bool(1);
     REGB5 = REGB2;
     goto label1;
   } else {
-    /* ../lib/standard/string.nit:648 */
+    /* ../lib/standard/string.nit:642 */
     REGB2 = TAG_Bool(0);
     REGB5 = REGB2;
     goto label1;
@@ -3614,39 +3520,39 @@ val_t standard___string___Buffer_____l(val_t p0, val_t p1){
 }
 static const char LOCATE_standard___string___Buffer___init[] = "string::Buffer::init";
 void standard___string___Buffer___init(val_t p0, int* init_table){
-  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___Buffer].i;
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___Buffer].i;
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos4]) return;
+  if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 652;
+  fra.me.line = 646;
   fra.me.meth = LOCATE_standard___string___Buffer___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:655 */
+  /* ../lib/standard/string.nit:649 */
   REGB0 = TAG_Int(5);
   CALL_standard___string___Buffer___with_capacity(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
   stack_frame_head = fra.me.prev;
-  init_table[itpos4] = 1;
+  init_table[itpos2] = 1;
   return;
 }
 static const char LOCATE_standard___string___Buffer___from[] = "string::Buffer::from";
 void standard___string___Buffer___from(val_t p0, val_t p1, int* init_table){
-  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___Buffer].i;
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___Buffer].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
   val_t tmp;
-  if (init_table[itpos5]) return;
+  if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 658;
+  fra.me.line = 652;
   fra.me.meth = LOCATE_standard___string___Buffer___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3664,11 +3570,11 @@ void standard___string___Buffer___from(val_t p0, val_t p1, int* init_table){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:660 */
+  /* ../lib/standard/string.nit:654 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:660 */
+  /* ../lib/standard/string.nit:654 */
   ATTR_standard___string___Buffer____capacity(fra.me.REG[0]) = REGB1;
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -3677,58 +3583,58 @@ void standard___string___Buffer___from(val_t p0, val_t p1, int* init_table){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:661 */
+  /* ../lib/standard/string.nit:655 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
-  /* ../lib/standard/string.nit:662 */
+  /* ../lib/standard/string.nit:656 */
   REGB1 = TAG_Bool(ATTR_standard___string___Buffer____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 662);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 656);
   }
   REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[2] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ../lib/standard/string.nit:662 */
+  /* ../lib/standard/string.nit:656 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[2];
-  /* ../lib/standard/string.nit:663 */
+  /* ../lib/standard/string.nit:657 */
   fra.me.REG[2] = CALL_standard___string___AbstractString___items(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 663);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 657);
   }
   fra.me.REG[3] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 663);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 657);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___string___String____index_from(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 663);
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_standard___string, 657);
   }
   REGB0 = ATTR_standard___string___String____index_from(fra.me.REG[1]);
   REGB2 = TAG_Int(0);
-  /* ../lib/standard/string.nit:957 */
+  /* ../lib/standard/string.nit:972 */
   (void)memcpy(UNBOX_NativeString(fra.me.REG[3])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[2])+UNTAG_Int(REGB0), UNTAG_Int(REGB1));;
   stack_frame_head = fra.me.prev;
-  init_table[itpos5] = 1;
+  init_table[itpos3] = 1;
   return;
 }
 static const char LOCATE_standard___string___Buffer___with_capacity[] = "string::Buffer::with_capacity";
 void standard___string___Buffer___with_capacity(val_t p0, val_t p1, int* init_table){
-  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___Buffer].i;
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___Buffer].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
   val_t tmp;
-  if (init_table[itpos6]) return;
+  if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 666;
+  fra.me.line = 660;
   fra.me.meth = LOCATE_standard___string___Buffer___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3737,35 +3643,35 @@ void standard___string___Buffer___with_capacity(val_t p0, val_t p1, int* init_ta
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:669 */
+  /* ../lib/standard/string.nit:663 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:669 */
+  /* ../lib/standard/string.nit:663 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 669);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 663);
   }
-  /* ../lib/standard/string.nit:671 */
+  /* ../lib/standard/string.nit:665 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ../lib/standard/string.nit:671 */
+  /* ../lib/standard/string.nit:665 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/string.nit:672 */
+  /* ../lib/standard/string.nit:666 */
   ATTR_standard___string___Buffer____capacity(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/string.nit:673 */
+  /* ../lib/standard/string.nit:667 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
-  init_table[itpos6] = 1;
+  init_table[itpos4] = 1;
   return;
 }
 static const char LOCATE_standard___string___Buffer_____eqeq[] = "string::Buffer::(kernel::Object::==)";
@@ -3780,7 +3686,7 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 676;
+  fra.me.line = 670;
   fra.me.meth = LOCATE_standard___string___Buffer_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3789,7 +3695,7 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:678 */
+  /* ../lib/standard/string.nit:672 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___string___Buffer, ID_standard___string___Buffer)) /*cast Buffer*/;
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
@@ -3809,10 +3715,10 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:680 */
+  /* ../lib/standard/string.nit:674 */
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 680);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 674);
   }
   /* ../lib/standard/collection/array.nit:24 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -3821,13 +3727,13 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:680 */
+  /* ../lib/standard/string.nit:674 */
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB2)==(REGB1));
-    /* ../lib/standard/string.nit:680 */
+    /* ../lib/standard/string.nit:674 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -3836,43 +3742,43 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
     REGB0 = REGB3;
     goto label1;
   }
-  /* ../lib/standard/string.nit:681 */
+  /* ../lib/standard/string.nit:675 */
   REGB3 = TAG_Int(0);
-  /* ../lib/standard/string.nit:682 */
+  /* ../lib/standard/string.nit:676 */
   REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 682);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 676);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:683 */
+  /* ../lib/standard/string.nit:677 */
   REGB2 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 683);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 677);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ../lib/standard/string.nit:684 */
+  /* ../lib/standard/string.nit:678 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:684 */
+    /* ../lib/standard/string.nit:678 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/string.nit:955 */
+      /* ../lib/standard/string.nit:970 */
       REGB2 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB3)]);
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB3)]);
-      /* ../lib/standard/string.nit:685 */
+      /* ../lib/standard/string.nit:679 */
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB4 = TAG_Bool((REGB2)==(REGB4));
-        /* ../lib/standard/string.nit:685 */
+        /* ../lib/standard/string.nit:679 */
         REGB5 = REGB4;
       }
       REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
@@ -3881,19 +3787,19 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
         REGB0 = REGB5;
         goto label1;
       }
-      /* ../lib/standard/string.nit:686 */
+      /* ../lib/standard/string.nit:680 */
       REGB5 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-      /* ../lib/standard/string.nit:686 */
+      /* ../lib/standard/string.nit:680 */
       REGB3 = REGB5;
     } else {
-      /* ../lib/standard/string.nit:684 */
+      /* ../lib/standard/string.nit:678 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:688 */
+  /* ../lib/standard/string.nit:682 */
   REGB3 = TAG_Bool(1);
   REGB0 = REGB3;
   goto label1;
@@ -3908,18 +3814,18 @@ val_t standard___string___Buffer___capacity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 691;
+  fra.me.line = 685;
   fra.me.meth = LOCATE_standard___string___Buffer___capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:691 */
+  /* ../lib/standard/string.nit:685 */
   REGB0 = TAG_Bool(ATTR_standard___string___Buffer____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 691);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 685);
   }
   REGB0 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3931,14 +3837,14 @@ val_t standard___string___Object___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 699;
+  fra.me.line = 693;
   fra.me.meth = LOCATE_standard___string___Object___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:700 */
+  /* ../lib/standard/string.nit:694 */
   fra.me.REG[0] = CALL_standard___string___Object___inspect(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -3951,14 +3857,14 @@ val_t standard___string___Object___native_class_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 702;
+  fra.me.line = 696;
   fra.me.meth = LOCATE_standard___string___Object___native_class_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:702 */
+  /* ../lib/standard/string.nit:696 */
   fra.me.REG[0] = BOX_NativeString(VAL2VFT(fra.me.REG[0])[2].cname);;
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -3969,16 +3875,16 @@ val_t standard___string___Object___class_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 705;
+  fra.me.line = 699;
   fra.me.meth = LOCATE_standard___string___Object___class_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:709 */
+  /* ../lib/standard/string.nit:702 */
   fra.me.REG[0] = CALL_standard___string___Object___native_class_name(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_String_standard___string___String___from_cstring(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3993,7 +3899,7 @@ val_t standard___string___Object___inspect(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 711;
+  fra.me.line = 704;
   fra.me.meth = LOCATE_standard___string___Object___inspect;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4002,13 +3908,13 @@ val_t standard___string___Object___inspect(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:715 */
+  /* ../lib/standard/string.nit:708 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("<");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -4019,7 +3925,7 @@ val_t standard___string___Object___inspect(val_t p0){
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString(">");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
   } else fra.me.REG[0] = once_value_2;
@@ -4041,7 +3947,7 @@ val_t standard___string___Object___inspect_head(val_t p0){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 718;
+  fra.me.line = 711;
   fra.me.meth = LOCATE_standard___string___Object___inspect_head;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4050,13 +3956,13 @@ val_t standard___string___Object___inspect_head(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:722 */
+  /* ../lib/standard/string.nit:715 */
   REGB0 = TAG_Int(5);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -4067,7 +3973,7 @@ val_t standard___string___Object___inspect_head(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(":#");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -4079,7 +3985,7 @@ val_t standard___string___Object___inspect_head(val_t p0){
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
@@ -4097,14 +4003,14 @@ val_t standard___string___Object___args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 725;
+  fra.me.line = 718;
   fra.me.meth = LOCATE_standard___string___Object___args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:727 */
+  /* ../lib/standard/string.nit:720 */
   fra.me.REG[0] = CALL_standard___kernel___Object___sys(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___Object___args(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4123,7 +4029,7 @@ val_t standard___string___Bool___to_s(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_standard___string;
-  fra.me.line = 732;
+  fra.me.line = 725;
   fra.me.meth = LOCATE_standard___string___Bool___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4131,14 +4037,14 @@ val_t standard___string___Bool___to_s(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:734 */
+  /* ../lib/standard/string.nit:729 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/string.nit:735 */
+    /* ../lib/standard/string.nit:730 */
     if (!once_value_1) {
       if (!once_value_2) {
         fra.me.REG[0] = BOX_NativeString("true");
         REGB0 = TAG_Int(4);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_2 = fra.me.REG[0];
         register_static_object(&once_value_2);
       } else fra.me.REG[0] = once_value_2;
@@ -4149,12 +4055,12 @@ val_t standard___string___Bool___to_s(val_t p0){
     fra.me.REG[0] = fra.me.REG[0];
     goto label3;
   } else {
-    /* ../lib/standard/string.nit:737 */
+    /* ../lib/standard/string.nit:732 */
     if (!once_value_4) {
       if (!once_value_5) {
         fra.me.REG[1] = BOX_NativeString("false");
         REGB0 = TAG_Int(5);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_5 = fra.me.REG[1];
         register_static_object(&once_value_5);
       } else fra.me.REG[1] = once_value_5;
@@ -4181,7 +4087,7 @@ void standard___string___Int___fill_buffer(val_t p0, val_t p1, val_t p2, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 743;
+  fra.me.line = 738;
   fra.me.meth = LOCATE_standard___string___Int___fill_buffer;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4191,52 +4097,52 @@ void standard___string___Int___fill_buffer(val_t p0, val_t p1, val_t p2, val_t p
   fra.me.REG[0] = p1;
   REGB1 = p2;
   REGB2 = p3;
-  /* ../lib/standard/string.nit:749 */
+  /* ../lib/standard/string.nit:744 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ../lib/standard/string.nit:749 */
+  /* ../lib/standard/string.nit:744 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:751 */
+    /* ../lib/standard/string.nit:746 */
     REGB3 = TAG_Int(0);
     REGB4 = TAG_Char('-');
     CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB4);
   } else {
-    /* ../lib/standard/string.nit:752 */
+    /* ../lib/standard/string.nit:747 */
     REGB4 = TAG_Int(0);
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB4 = TAG_Bool((REGB0)==(REGB4));
-      /* ../lib/standard/string.nit:752 */
+      /* ../lib/standard/string.nit:747 */
       REGB3 = REGB4;
     }
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:753 */
+      /* ../lib/standard/string.nit:748 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Char('0');
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB4);
-      /* ../lib/standard/string.nit:754 */
+      /* ../lib/standard/string.nit:749 */
       goto label1;
     } else {
-      /* ../lib/standard/string.nit:756 */
+      /* ../lib/standard/string.nit:751 */
       REGB2 = REGB0;
     }
   }
-  /* ../lib/standard/string.nit:759 */
+  /* ../lib/standard/string.nit:754 */
   REGB0 = CALL_standard___kernel___Int___digit_count(REGB0)(REGB0, REGB1);
   REGB4 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
-  /* ../lib/standard/string.nit:760 */
+  /* ../lib/standard/string.nit:755 */
   while(1) {
     REGB0 = TAG_Int(0);
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -4244,9 +4150,9 @@ void standard___string___Int___fill_buffer(val_t p0, val_t p1, val_t p2, val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:760 */
+    /* ../lib/standard/string.nit:755 */
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -4254,31 +4160,31 @@ void standard___string___Int___fill_buffer(val_t p0, val_t p1, val_t p2, val_t p
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB0));
     } else {
-      /* ../lib/standard/string.nit:760 */
+      /* ../lib/standard/string.nit:755 */
       REGB3 = TAG_Bool(0);
       REGB0 = REGB3;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/kernel.nit:243 */
+      /* ../lib/standard/kernel.nit:250 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)%UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:761 */
+      /* ../lib/standard/string.nit:756 */
       REGB0 = CALL_standard___kernel___Int___to_c(REGB0)(REGB0);
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB4, REGB0);
-      /* ../lib/standard/kernel.nit:242 */
+      /* ../lib/standard/kernel.nit:249 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)/UNTAG_Int(REGB1));
-      /* ../lib/standard/string.nit:762 */
+      /* ../lib/standard/string.nit:757 */
       REGB2 = REGB0;
-      /* ../lib/standard/string.nit:763 */
+      /* ../lib/standard/string.nit:758 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB0));
-      /* ../lib/standard/string.nit:763 */
+      /* ../lib/standard/string.nit:758 */
       REGB4 = REGB0;
     } else {
-      /* ../lib/standard/string.nit:760 */
+      /* ../lib/standard/string.nit:755 */
       goto label2;
     }
   }
@@ -4287,26 +4193,48 @@ void standard___string___Int___fill_buffer(val_t p0, val_t p1, val_t p2, val_t p
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_standard___string___Int___native_int_to_s[] = "string::Int::native_int_to_s";
+val_t standard___string___Int___native_int_to_s(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___string;
+  fra.me.line = 762;
+  fra.me.meth = LOCATE_standard___string___Int___native_int_to_s;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ../lib/standard/string.nit:762 */
+  fra.me.REG[0] = Int_native_int_to_s___out(REGB0, REGB1);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
 static const char LOCATE_standard___string___Int___to_s[] = "string::Int::(string::Object::to_s)";
 val_t standard___string___Int___to_s(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t REGB1;
-  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 767;
+  fra.me.line = 765;
   fra.me.meth = LOCATE_standard___string___Int___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:768 */
+  /* ../lib/standard/string.nit:770 */
   REGB1 = TAG_Int(10);
-  REGB2 = TAG_Bool(1);
-  fra.me.REG[0] = CALL_standard___string___Int___to_base(REGB0)(REGB0, REGB1, REGB2);
+  REGB1 = CALL_standard___kernel___Int___digit_count(REGB0)(REGB0, REGB1);
+  /* ../lib/standard/string.nit:771 */
+  fra.me.REG[0] = CALL_standard___string___Int___native_int_to_s(REGB0)(REGB0, REGB1);
+  fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -4321,14 +4249,14 @@ val_t standard___string___Int___to_hex(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 770;
+  fra.me.line = 774;
   fra.me.meth = LOCATE_standard___string___Int___to_hex;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:771 */
+  /* ../lib/standard/string.nit:775 */
   REGB1 = TAG_Int(16);
   REGB2 = TAG_Bool(0);
   fra.me.REG[0] = CALL_standard___string___Int___to_base(REGB0)(REGB0, REGB1, REGB2);
@@ -4349,7 +4277,7 @@ val_t standard___string___Int___to_base(val_t p0, val_t p1, val_t p2){
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 773;
+  fra.me.line = 777;
   fra.me.meth = LOCATE_standard___string___Int___to_base;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4358,22 +4286,22 @@ val_t standard___string___Int___to_base(val_t p0, val_t p1, val_t p2){
   REGB0 = p0;
   REGB1 = p1;
   REGB2 = p2;
-  /* ../lib/standard/string.nit:776 */
+  /* ../lib/standard/string.nit:780 */
   REGB3 = CALL_standard___kernel___Int___digit_count(REGB0)(REGB0, REGB1);
-  /* ../lib/standard/string.nit:777 */
+  /* ../lib/standard/string.nit:781 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString(" ");
     REGB4 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB4);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB4);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
   fra.me.REG[0] = fra.me.REG[0];
   fra.me.REG[0] = CALL_standard___string___String_____star(fra.me.REG[0])(fra.me.REG[0], REGB3);
   fra.me.REG[0] = NEW_Buffer_standard___string___Buffer___from(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:778 */
+  /* ../lib/standard/string.nit:782 */
   CALL_standard___string___Int___fill_buffer(REGB0)(REGB0, fra.me.REG[0], REGB1, REGB2);
-  /* ../lib/standard/string.nit:779 */
+  /* ../lib/standard/string.nit:783 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label2;
   label2: while(0);
@@ -4393,7 +4321,7 @@ val_t standard___string___Float___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 784;
+  fra.me.line = 788;
   fra.me.meth = LOCATE_standard___string___Float___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4402,7 +4330,7 @@ val_t standard___string___Float___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:786 */
+  /* ../lib/standard/string.nit:790 */
   REGB0 = TAG_Int(3);
   fra.me.REG[0] = CALL_standard___string___Float___to_precision(fra.me.REG[0])(fra.me.REG[0], REGB0);
   /* ../lib/standard/collection/array.nit:24 */
@@ -4412,90 +4340,90 @@ val_t standard___string___Float___to_s(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:788 */
+  /* ../lib/standard/string.nit:792 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-  /* ../lib/standard/kernel.nit:344 */
+  /* ../lib/standard/kernel.nit:393 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:234 */
+    /* ../lib/standard/kernel.nit:241 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB2));
-    /* ../lib/standard/kernel.nit:344 */
+    /* ../lib/standard/kernel.nit:393 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:788 */
+      /* ../lib/standard/string.nit:792 */
       REGB3 = REGB1;
-      /* ../lib/standard/string.nit:789 */
+      /* ../lib/standard/string.nit:793 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
       REGB3 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:790 */
+      /* ../lib/standard/string.nit:794 */
       REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
-      /* ../lib/standard/string.nit:791 */
+      /* ../lib/standard/string.nit:795 */
       REGB5 = TAG_Char('0');
       REGB6 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
       if (UNTAG_Bool(REGB6)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB5 = TAG_Bool((REGB4)==(REGB5));
-        /* ../lib/standard/string.nit:791 */
+        /* ../lib/standard/string.nit:795 */
         REGB6 = REGB5;
       }
       if (UNTAG_Bool(REGB6)) {
-        /* ../lib/standard/string.nit:792 */
+        /* ../lib/standard/string.nit:796 */
         goto label1;
       } else {
-        /* ../lib/standard/string.nit:793 */
+        /* ../lib/standard/string.nit:797 */
         REGB6 = TAG_Char('.');
         REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB6));
         if (UNTAG_Bool(REGB5)) {
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB6 = TAG_Bool((REGB4)==(REGB6));
-          /* ../lib/standard/string.nit:793 */
+          /* ../lib/standard/string.nit:797 */
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
-          /* ../lib/standard/string.nit:794 */
+          /* ../lib/standard/string.nit:798 */
           REGB5 = TAG_Int(0);
           REGB6 = TAG_Int(2);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB6 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB6));
-          /* ../lib/standard/string.nit:794 */
+          /* ../lib/standard/string.nit:798 */
           fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB5, REGB6);
           goto label2;
         } else {
-          /* ../lib/standard/string.nit:796 */
+          /* ../lib/standard/string.nit:800 */
           REGB6 = TAG_Int(0);
           REGB5 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-          /* ../lib/standard/string.nit:796 */
+          /* ../lib/standard/string.nit:800 */
           fra.me.REG[2] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB6, REGB5);
           fra.me.REG[1] = fra.me.REG[2];
           goto label2;
         }
       }
       label1: while(0);
-      /* ../lib/standard/kernel.nit:346 */
+      /* ../lib/standard/kernel.nit:395 */
       REGB5 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB5 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB5));
-      /* ../lib/standard/kernel.nit:346 */
+      /* ../lib/standard/kernel.nit:395 */
       REGB1 = REGB5;
     } else {
-      /* ../lib/standard/kernel.nit:344 */
+      /* ../lib/standard/kernel.nit:393 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ../lib/standard/string.nit:799 */
+  /* ../lib/standard/string.nit:803 */
   fra.me.REG[1] = fra.me.REG[0];
   goto label2;
   label2: while(0);
@@ -4516,7 +4444,7 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
     static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 802;
+  fra.me.line = 806;
   fra.me.meth = LOCATE_standard___string___Float___to_precision;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -4528,95 +4456,95 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:805 */
+  /* ../lib/standard/string.nit:809 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/string.nit:805 */
+    /* ../lib/standard/string.nit:809 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/kernel.nit:219 */
+    /* ../lib/standard/kernel.nit:220 */
     REGB2 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
-    /* ../lib/standard/string.nit:805 */
+    /* ../lib/standard/string.nit:809 */
     fra.me.REG[1] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
     goto label1;
   }
-  /* ../lib/standard/string.nit:806 */
+  /* ../lib/standard/string.nit:810 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ../lib/standard/string.nit:807 */
+  /* ../lib/standard/string.nit:811 */
   REGB2 = TAG_Int(0);
-  /* ../lib/standard/kernel.nit:350 */
+  /* ../lib/standard/kernel.nit:399 */
   REGB1 = REGB0;
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string.nit:807 */
+      /* ../lib/standard/string.nit:811 */
       fra.me.REG[3] = BOX_Float(10.0);
-      /* ../lib/standard/kernel.nit:216 */
+      /* ../lib/standard/kernel.nit:217 */
       fra.me.REG[3] = BOX_Float(UNBOX_Float(fra.me.REG[2])*UNBOX_Float(fra.me.REG[3]));
-      /* ../lib/standard/string.nit:807 */
+      /* ../lib/standard/string.nit:811 */
       fra.me.REG[2] = fra.me.REG[3];
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:808 */
+  /* ../lib/standard/string.nit:812 */
   fra.me.REG[3] = BOX_Float(0.0);
-  /* ../lib/standard/kernel.nit:212 */
+  /* ../lib/standard/kernel.nit:213 */
   REGB2 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>UNBOX_Float(fra.me.REG[3]));
-  /* ../lib/standard/string.nit:808 */
+  /* ../lib/standard/string.nit:812 */
   if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/string.nit:809 */
+    /* ../lib/standard/string.nit:813 */
     fra.me.REG[3] = BOX_Float(0.5);
-    /* ../lib/standard/kernel.nit:213 */
+    /* ../lib/standard/kernel.nit:214 */
     fra.me.REG[3] = BOX_Float(UNBOX_Float(fra.me.REG[2])+UNBOX_Float(fra.me.REG[3]));
-    /* ../lib/standard/string.nit:809 */
+    /* ../lib/standard/string.nit:813 */
     fra.me.REG[2] = fra.me.REG[3];
   } else {
-    /* ../lib/standard/string.nit:811 */
+    /* ../lib/standard/string.nit:815 */
     fra.me.REG[3] = BOX_Float(0.5);
-    /* ../lib/standard/kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:216 */
     fra.me.REG[3] = BOX_Float(UNBOX_Float(fra.me.REG[2])-UNBOX_Float(fra.me.REG[3]));
-    /* ../lib/standard/string.nit:811 */
+    /* ../lib/standard/string.nit:815 */
     fra.me.REG[2] = fra.me.REG[3];
   }
-  /* ../lib/standard/kernel.nit:219 */
+  /* ../lib/standard/kernel.nit:220 */
   REGB2 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[2]));
-  /* ../lib/standard/string.nit:814 */
+  /* ../lib/standard/string.nit:818 */
   REGB1 = TAG_Int(0);
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB2)==(REGB1));
-    /* ../lib/standard/string.nit:814 */
+    /* ../lib/standard/string.nit:818 */
     REGB3 = REGB1;
   }
   if (UNTAG_Bool(REGB3)) {
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("0.0");
       REGB3 = TAG_Int(3);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB3);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB3);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -4624,7 +4552,7 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
     fra.me.REG[1] = fra.me.REG[2];
     goto label1;
   }
-  /* ../lib/standard/string.nit:815 */
+  /* ../lib/standard/string.nit:819 */
   fra.me.REG[2] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
   /* ../lib/standard/collection/array.nit:24 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -4638,11 +4566,11 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB0));
-  /* ../lib/standard/string.nit:817 */
+  /* ../lib/standard/string.nit:821 */
   if (UNTAG_Bool(REGB3)) {
-    /* ../lib/standard/string.nit:818 */
+    /* ../lib/standard/string.nit:822 */
     REGB3 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -4651,9 +4579,9 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:818 */
+    /* ../lib/standard/string.nit:822 */
     fra.me.REG[3] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB3, REGB1);
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -4662,15 +4590,15 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:819 */
+    /* ../lib/standard/string.nit:823 */
     fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB1, REGB0);
-    /* ../lib/standard/string.nit:820 */
+    /* ../lib/standard/string.nit:824 */
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -4680,11 +4608,11 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
   } else {
-    /* ../lib/standard/string.nit:822 */
+    /* ../lib/standard/string.nit:826 */
     if (!once_value_5) {
       fra.me.REG[0] = BOX_NativeString("0.");
       REGB1 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
       once_value_5 = fra.me.REG[0];
       register_static_object(&once_value_5);
     } else fra.me.REG[0] = once_value_5;
@@ -4692,14 +4620,14 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("0");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
     fra.me.REG[4] = fra.me.REG[4];
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-    /* ../lib/standard/string.nit:822 */
+    /* ../lib/standard/string.nit:826 */
     fra.me.REG[4] = CALL_standard___string___String_____star(fra.me.REG[4])(fra.me.REG[4], REGB2);
     fra.me.REG[4] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[2] = CALL_standard___string___String_____plus(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
@@ -4717,7 +4645,7 @@ val_t standard___string___Float___to_precision_native(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 826;
+  fra.me.line = 830;
   fra.me.meth = LOCATE_standard___string___Float___to_precision_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -4725,7 +4653,7 @@ val_t standard___string___Float___to_precision_native(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:826 */
+  /* ../lib/standard/string.nit:830 */
   fra.me.REG[0] = Float_to_precision_native___out(fra.me.REG[0], REGB0);
   ;
   stack_frame_head = fra.me.prev;
@@ -4739,20 +4667,20 @@ val_t standard___string___Char___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 839;
+  fra.me.line = 843;
   fra.me.meth = LOCATE_standard___string___Char___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:841 */
+  /* ../lib/standard/string.nit:846 */
   REGB1 = TAG_Int(1);
   fra.me.REG[0] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB1);
-  /* ../lib/standard/string.nit:842 */
+  /* ../lib/standard/string.nit:847 */
   REGB1 = TAG_Int(0);
   CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB0);
-  /* ../lib/standard/string.nit:843 */
+  /* ../lib/standard/string.nit:848 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -4768,22 +4696,22 @@ val_t standard___string___Char___is_numeric(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 846;
+  fra.me.line = 851;
   fra.me.meth = LOCATE_standard___string___Char___is_numeric;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:849 */
+  /* ../lib/standard/string.nit:854 */
   REGB1 = TAG_Char('0');
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:387 */
+  /* ../lib/standard/kernel.nit:440 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ../lib/standard/string.nit:849 */
+  /* ../lib/standard/string.nit:854 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('9');
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -4791,19 +4719,19 @@ val_t standard___string___Char___is_numeric(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:385 */
+    /* ../lib/standard/kernel.nit:438 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ../lib/standard/string.nit:849 */
+    /* ../lib/standard/string.nit:854 */
     REGB0 = TAG_Bool(0);
     REGB1 = REGB0;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/string.nit:851 */
+    /* ../lib/standard/string.nit:856 */
     REGB1 = TAG_Bool(1);
     goto label1;
   }
-  /* ../lib/standard/string.nit:853 */
+  /* ../lib/standard/string.nit:858 */
   REGB0 = TAG_Bool(0);
   REGB1 = REGB0;
   goto label1;
@@ -4821,22 +4749,22 @@ val_t standard___string___Char___is_alpha(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 856;
+  fra.me.line = 861;
   fra.me.meth = LOCATE_standard___string___Char___is_alpha;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:859 */
+  /* ../lib/standard/string.nit:864 */
   REGB1 = TAG_Char('a');
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:387 */
+  /* ../lib/standard/kernel.nit:440 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ../lib/standard/string.nit:859 */
+  /* ../lib/standard/string.nit:864 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('z');
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -4844,10 +4772,10 @@ val_t standard___string___Char___is_alpha(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:385 */
+    /* ../lib/standard/kernel.nit:438 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ../lib/standard/string.nit:859 */
+    /* ../lib/standard/string.nit:864 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
@@ -4860,9 +4788,9 @@ val_t standard___string___Char___is_alpha(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:387 */
+    /* ../lib/standard/kernel.nit:440 */
     REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
-    /* ../lib/standard/string.nit:859 */
+    /* ../lib/standard/string.nit:864 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Char('Z');
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -4870,10 +4798,10 @@ val_t standard___string___Char___is_alpha(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:385 */
+      /* ../lib/standard/kernel.nit:438 */
       REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
     } else {
-      /* ../lib/standard/string.nit:859 */
+      /* ../lib/standard/string.nit:864 */
       REGB0 = TAG_Bool(0);
       REGB2 = REGB0;
     }
@@ -4883,7 +4811,7 @@ val_t standard___string___Char___is_alpha(val_t p0){
     REGB1 = TAG_Bool(1);
     goto label1;
   }
-  /* ../lib/standard/string.nit:860 */
+  /* ../lib/standard/string.nit:865 */
   REGB2 = TAG_Bool(0);
   REGB1 = REGB2;
   goto label1;
@@ -4899,13 +4827,13 @@ val_t standard___string___Char___is_alphanumeric(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 863;
+  fra.me.line = 868;
   fra.me.meth = LOCATE_standard___string___Char___is_alphanumeric;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   REGB0 = p0;
-  /* ../lib/standard/string.nit:866 */
+  /* ../lib/standard/string.nit:871 */
   REGB1 = CALL_standard___string___Char___is_numeric(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(1);
@@ -4917,7 +4845,7 @@ val_t standard___string___Char___is_alphanumeric(val_t p0){
     REGB1 = TAG_Bool(1);
     goto label1;
   }
-  /* ../lib/standard/string.nit:867 */
+  /* ../lib/standard/string.nit:872 */
   REGB0 = TAG_Bool(0);
   REGB1 = REGB0;
   goto label1;
@@ -4931,7 +4859,7 @@ val_t standard___string___Collection___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 872;
+  fra.me.line = 877;
   fra.me.meth = LOCATE_standard___string___Collection___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4939,10 +4867,10 @@ val_t standard___string___Collection___to_s(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:875 */
+  /* ../lib/standard/string.nit:880 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___string___Collection___to_s_1));
-  /* ../lib/standard/string.nit:877 */
+  /* ../lib/standard/string.nit:882 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -4955,7 +4883,7 @@ val_t standard___string___Collection___to_s(val_t p0){
     val_t REGB1;
     fun_t CREG[1];
     val_t tmp;
-    /* ../lib/standard/string.nit:876 */
+    /* ../lib/standard/string.nit:881 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -4984,7 +4912,7 @@ val_t standard___string___Collection___to_s(val_t p0){
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___string, 876);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___string, 881);
       }
       fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
@@ -5001,7 +4929,7 @@ val_t standard___string___Collection___join(val_t p0, val_t p1){
     static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 880;
+  fra.me.line = 885;
   fra.me.meth = LOCATE_standard___string___Collection___join;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -5014,26 +4942,26 @@ val_t standard___string___Collection___join(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string.nit:883 */
+  /* ../lib/standard/string.nit:891 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       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];
     goto label2;
   }
-  /* ../lib/standard/string.nit:885 */
+  /* ../lib/standard/string.nit:893 */
   fra.me.REG[3] = NEW_Buffer_standard___string___Buffer___init();
-  /* ../lib/standard/string.nit:888 */
+  /* ../lib/standard/string.nit:896 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:889 */
+  /* ../lib/standard/string.nit:897 */
   fra.me.REG[4] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:890 */
+  /* ../lib/standard/string.nit:898 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5050,23 +4978,23 @@ val_t standard___string___Collection___join(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___string, 890);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___string, 898);
     }
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
-  /* ../lib/standard/string.nit:893 */
+  /* ../lib/standard/string.nit:901 */
   CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:894 */
+  /* ../lib/standard/string.nit:902 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/string.nit:895 */
+      /* ../lib/standard/string.nit:903 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      /* ../lib/standard/string.nit:896 */
+      /* ../lib/standard/string.nit:904 */
       fra.me.REG[5] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[4] = fra.me.REG[5];
-      /* ../lib/standard/string.nit:897 */
+      /* ../lib/standard/string.nit:905 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -5083,20 +5011,20 @@ val_t standard___string___Collection___join(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___string, 897);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___string, 905);
         }
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
         CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       }
-      /* ../lib/standard/string.nit:898 */
+      /* ../lib/standard/string.nit:906 */
       CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ../lib/standard/string.nit:894 */
+      /* ../lib/standard/string.nit:902 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ../lib/standard/string.nit:900 */
+  /* ../lib/standard/string.nit:908 */
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[2] = fra.me.REG[3];
   goto label2;
@@ -5115,7 +5043,7 @@ val_t standard___string___Array___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 905;
+  fra.me.line = 913;
   fra.me.meth = LOCATE_standard___string___Array___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5124,9 +5052,9 @@ val_t standard___string___Array___to_s(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:908 */
+  /* ../lib/standard/string.nit:916 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
-  /* ../lib/standard/string.nit:909 */
+  /* ../lib/standard/string.nit:917 */
   REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -5135,35 +5063,35 @@ val_t standard___string___Array___to_s(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:911 */
+  /* ../lib/standard/string.nit:919 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/string.nit:911 */
+    /* ../lib/standard/string.nit:919 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[2] = fra.me.REG[0];
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -5171,29 +5099,29 @@ val_t standard___string___Array___to_s(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
-      /* ../lib/standard/string.nit:913 */
+      /* ../lib/standard/string.nit:921 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -5210,24 +5138,24 @@ val_t standard___string___Array___to_s(val_t p0){
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___string, 913);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___string, 921);
         }
         fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
         CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
       }
-      /* ../lib/standard/string.nit:914 */
+      /* ../lib/standard/string.nit:922 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/string.nit:914 */
+      /* ../lib/standard/string.nit:922 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/string.nit:911 */
+      /* ../lib/standard/string.nit:919 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string.nit:916 */
+  /* ../lib/standard/string.nit:924 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -5251,7 +5179,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
         static val_t once_value_10; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 921;
+  fra.me.line = 929;
   fra.me.meth = LOCATE_standard___string___Map___join;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -5268,28 +5196,28 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ../lib/standard/string.nit:926 */
+  /* ../lib/standard/string.nit:939 */
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
     fra.me.REG[3] = fra.me.REG[3];
     goto label2;
   }
-  /* ../lib/standard/string.nit:928 */
+  /* ../lib/standard/string.nit:941 */
   fra.me.REG[4] = NEW_Buffer_standard___string___Buffer___init();
-  /* ../lib/standard/string.nit:931 */
+  /* ../lib/standard/string.nit:944 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:932 */
+  /* ../lib/standard/string.nit:945 */
   fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:933 */
+  /* ../lib/standard/string.nit:946 */
   fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:934 */
+  /* ../lib/standard/string.nit:947 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5309,7 +5237,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
     if (!once_value_3) {
       fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_3 = fra.me.REG[8];
       register_static_object(&once_value_3);
     } else fra.me.REG[8] = once_value_3;
@@ -5320,7 +5248,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
     if (!once_value_4) {
       fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_4 = fra.me.REG[8];
       register_static_object(&once_value_4);
     } else fra.me.REG[8] = once_value_4;
@@ -5330,7 +5258,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
     if (!once_value_5) {
       fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_5 = fra.me.REG[8];
       register_static_object(&once_value_5);
     } else fra.me.REG[8] = once_value_5;
@@ -5341,7 +5269,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
     if (!once_value_6) {
       fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_6 = fra.me.REG[8];
       register_static_object(&once_value_6);
     } else fra.me.REG[8] = once_value_6;
@@ -5350,21 +5278,21 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
     fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   }
-  /* ../lib/standard/string.nit:937 */
+  /* ../lib/standard/string.nit:950 */
   CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:938 */
+  /* ../lib/standard/string.nit:951 */
   while(1) {
     REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/string.nit:939 */
+      /* ../lib/standard/string.nit:952 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      /* ../lib/standard/string.nit:940 */
+      /* ../lib/standard/string.nit:953 */
       fra.me.REG[7] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[5] = fra.me.REG[7];
-      /* ../lib/standard/string.nit:941 */
+      /* ../lib/standard/string.nit:954 */
       fra.me.REG[7] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[6] = fra.me.REG[7];
-      /* ../lib/standard/string.nit:942 */
+      /* ../lib/standard/string.nit:955 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -5384,7 +5312,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
         if (!once_value_7) {
           fra.me.REG[8] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_7 = fra.me.REG[8];
           register_static_object(&once_value_7);
         } else fra.me.REG[8] = once_value_7;
@@ -5395,7 +5323,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
         } else fra.me.REG[8] = once_value_8;
@@ -5405,7 +5333,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
         if (!once_value_9) {
           fra.me.REG[8] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_9 = fra.me.REG[8];
           register_static_object(&once_value_9);
         } else fra.me.REG[8] = once_value_9;
@@ -5416,7 +5344,7 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
         if (!once_value_10) {
           fra.me.REG[8] = BOX_NativeString("");
           REGB0 = TAG_Int(0);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_10 = fra.me.REG[8];
           register_static_object(&once_value_10);
         } else fra.me.REG[8] = once_value_10;
@@ -5425,15 +5353,15 @@ val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
         fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
         CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
       }
-      /* ../lib/standard/string.nit:943 */
+      /* ../lib/standard/string.nit:956 */
       CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ../lib/standard/string.nit:938 */
+      /* ../lib/standard/string.nit:951 */
       goto label11;
     }
   }
   label11: while(0);
-  /* ../lib/standard/string.nit:945 */
+  /* ../lib/standard/string.nit:958 */
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[3] = fra.me.REG[4];
   goto label2;
@@ -5448,7 +5376,7 @@ val_t standard___string___NativeString_____bra(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 955;
+  fra.me.line = 970;
   fra.me.meth = LOCATE_standard___string___NativeString_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5456,7 +5384,7 @@ val_t standard___string___NativeString_____bra(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:955 */
+  /* ../lib/standard/string.nit:970 */
   REGB0 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -5469,7 +5397,7 @@ void standard___string___NativeString_____braeq(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_standard___string;
-  fra.me.line = 956;
+  fra.me.line = 971;
   fra.me.meth = LOCATE_standard___string___NativeString_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5478,7 +5406,7 @@ void standard___string___NativeString_____braeq(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
-  /* ../lib/standard/string.nit:956 */
+  /* ../lib/standard/string.nit:971 */
   UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB1);;
   stack_frame_head = fra.me.prev;
   return;
@@ -5492,7 +5420,7 @@ void standard___string___NativeString___copy_to(val_t p0, val_t p1, val_t p2, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 957;
+  fra.me.line = 972;
   fra.me.meth = LOCATE_standard___string___NativeString___copy_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5504,7 +5432,7 @@ void standard___string___NativeString___copy_to(val_t p0, val_t p1, val_t p2, va
   REGB0 = p2;
   REGB1 = p3;
   REGB2 = p4;
-  /* ../lib/standard/string.nit:957 */
+  /* ../lib/standard/string.nit:972 */
   (void)memcpy(UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[0])+UNTAG_Int(REGB1), UNTAG_Int(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -5519,42 +5447,42 @@ val_t standard___string___NativeString___cstring_length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 959;
+  fra.me.line = 974;
   fra.me.meth = LOCATE_standard___string___NativeString___cstring_length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:962 */
+  /* ../lib/standard/string.nit:977 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/string.nit:963 */
+  /* ../lib/standard/string.nit:978 */
   while(1) {
-    /* ../lib/standard/string.nit:955 */
+    /* ../lib/standard/string.nit:970 */
     REGB1 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
-    /* ../lib/standard/string.nit:963 */
+    /* ../lib/standard/string.nit:978 */
     REGB2 = TAG_Char('\0');
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ../lib/standard/kernel.nit:381 */
+      /* ../lib/standard/kernel.nit:434 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
-      /* ../lib/standard/string.nit:963 */
+      /* ../lib/standard/string.nit:978 */
       REGB3 = REGB2;
     }
     REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
     if (UNTAG_Bool(REGB3)) {
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string.nit:963 */
+      /* ../lib/standard/string.nit:978 */
       REGB0 = REGB3;
     } else {
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/string.nit:964 */
+  /* ../lib/standard/string.nit:979 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -5567,14 +5495,14 @@ val_t standard___string___NativeString___atoi(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 966;
+  fra.me.line = 981;
   fra.me.meth = LOCATE_standard___string___NativeString___atoi;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:966 */
+  /* ../lib/standard/string.nit:981 */
   REGB0 = TAG_Int(atoi(UNBOX_NativeString(fra.me.REG[0])));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -5585,24 +5513,131 @@ val_t standard___string___NativeString___atof(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 967;
+  fra.me.line = 982;
   fra.me.meth = LOCATE_standard___string___NativeString___atof;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:967 */
+  /* ../lib/standard/string.nit:982 */
   fra.me.REG[0] = NativeString_atof___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_standard___string___NativeString___to_s[] = "string::NativeString::(string::Object::to_s)";
+val_t standard___string___NativeString___to_s(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_standard___string;
+  fra.me.line = 984;
+  fra.me.meth = LOCATE_standard___string___NativeString___to_s;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/string.nit:986 */
+  REGB0 = CALL_standard___string___NativeString___cstring_length(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_standard___string___NativeString___to_s_with_length[] = "string::NativeString::to_s_with_length";
+val_t standard___string___NativeString___to_s_with_length(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___string;
+  fra.me.line = 989;
+  fra.me.meth = LOCATE_standard___string___NativeString___to_s_with_length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ../lib/standard/string.nit:991 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:243 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ../lib/standard/string.nit:991 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 991);
+  }
+  /* ../lib/standard/string.nit:992 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:247 */
+  REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
+  /* ../lib/standard/string.nit:992 */
+  fra.me.REG[0] = NEW_String_standard___string___String___with_infos(fra.me.REG[0], REGB0, REGB1, REGB2);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_standard___string___NativeString___to_s_with_copy[] = "string::NativeString::to_s_with_copy";
+val_t standard___string___NativeString___to_s_with_copy(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___string;
+  fra.me.line = 995;
+  fra.me.meth = LOCATE_standard___string___NativeString___to_s_with_copy;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/string.nit:997 */
+  REGB0 = CALL_standard___string___NativeString___cstring_length(fra.me.REG[0])(fra.me.REG[0]);
+  /* ../lib/standard/string.nit:998 */
+  REGB1 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:245 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+  /* ../lib/standard/string.nit:1007 */
+  fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
+  /* ../lib/standard/string.nit:999 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Int(0);
+  /* ../lib/standard/string.nit:972 */
+  (void)memcpy(UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[0])+UNTAG_Int(REGB1), UNTAG_Int(REGB0));;
+  /* ../lib/standard/string.nit:1000 */
+  REGB2 = TAG_Int(0);
+  REGB1 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:247 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* ../lib/standard/string.nit:1000 */
+  fra.me.REG[1] = NEW_String_standard___string___String___with_infos(fra.me.REG[1], REGB0, REGB2, REGB1);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
 static const char LOCATE_standard___string___NativeString___init[] = "string::NativeString::init";
 void standard___string___NativeString___init(val_t p0, int* init_table){
-  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___NativeString].i;
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___string___NativeString].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos7]) return;
+  if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
   fra.me.line = 0;
@@ -5611,7 +5646,7 @@ void standard___string___NativeString___init(val_t p0, int* init_table){
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  init_table[itpos7] = 1;
+  init_table[itpos5] = 1;
   return;
 }
 static const char LOCATE_standard___string___StringCapable___calloc_string[] = "string::StringCapable::calloc_string";
@@ -5621,7 +5656,7 @@ val_t standard___string___StringCapable___calloc_string(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 972;
+  fra.me.line = 1007;
   fra.me.meth = LOCATE_standard___string___StringCapable___calloc_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5629,7 +5664,7 @@ val_t standard___string___StringCapable___calloc_string(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:972 */
+  /* ../lib/standard/string.nit:1007 */
   fra.me.REG[0] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB0) * sizeof(char))));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -5642,7 +5677,7 @@ val_t standard___string___Sys___args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 978;
+  fra.me.line = 1013;
   fra.me.meth = LOCATE_standard___string___Sys___args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5651,9 +5686,9 @@ val_t standard___string___Sys___args(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:978 */
+  /* ../lib/standard/string.nit:1013 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ../lib/standard/string.nit:980 */
+  /* ../lib/standard/string.nit:1015 */
   fra.me.REG[2] = ATTR_standard___string___Sys____args_cache(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5670,12 +5705,12 @@ val_t standard___string___Sys___args(val_t p0){
   if (UNTAG_Bool(REGB0)) {
     CALL_standard___string___Sys___init_args(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ../lib/standard/string.nit:981 */
+  /* ../lib/standard/string.nit:1016 */
   fra.me.REG[1] = ATTR_standard___string___Sys____args_cache(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___string, 981);
+    nit_abort("Cast failed", NULL, LOCATE_standard___string, 1016);
   }
   goto label1;
   label1: while(0);
@@ -5689,17 +5724,19 @@ val_t standard___string___Sys___program_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 984;
+  fra.me.line = 1019;
   fra.me.meth = LOCATE_standard___string___Sys___program_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:987 */
+  /* ../lib/standard/string.nit:1022 */
   REGB0 = TAG_Int(0);
-  fra.me.REG[0] = CALL_standard___string___Sys___native_argv(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  fra.me.REG[0] = NEW_String_standard___string___String___from_cstring(fra.me.REG[0]);
+  /* ../lib/standard/string.nit:1041 */
+  fra.me.REG[0] = BOX_NativeString(glob_argv[UNTAG_Int(REGB0)]);
+  /* ../lib/standard/string.nit:1022 */
+  fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -5714,7 +5751,7 @@ void standard___string___Sys___init_args(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 990;
+  fra.me.line = 1025;
   fra.me.meth = LOCATE_standard___string___Sys___init_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5723,45 +5760,46 @@ void standard___string___Sys___init_args(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:993 */
-  REGB0 = CALL_standard___string___Sys___native_argc(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/string.nit:994 */
+  /* ../lib/standard/string.nit:1038 */
+  REGB0 = TAG_Int(glob_argc);
+  /* ../lib/standard/string.nit:1029 */
   REGB1 = TAG_Int(0);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-  /* ../lib/standard/string.nit:995 */
+  /* ../lib/standard/string.nit:1030 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/string.nit:996 */
+  /* ../lib/standard/string.nit:1031 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ../lib/standard/string.nit:996 */
+    /* ../lib/standard/string.nit:1031 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/string.nit:997 */
+      /* ../lib/standard/string.nit:1032 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-      /* ../lib/standard/string.nit:997 */
-      fra.me.REG[2] = CALL_standard___string___Sys___native_argv(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      fra.me.REG[2] = NEW_String_standard___string___String___from_cstring(fra.me.REG[2]);
+      /* ../lib/standard/string.nit:1041 */
+      fra.me.REG[2] = BOX_NativeString(glob_argv[UNTAG_Int(REGB1)]);
+      /* ../lib/standard/string.nit:1032 */
+      fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[2]);
-      /* ../lib/standard/string.nit:998 */
+      /* ../lib/standard/string.nit:1033 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/string.nit:998 */
+      /* ../lib/standard/string.nit:1033 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/string.nit:996 */
+      /* ../lib/standard/string.nit:1031 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/string.nit:1000 */
+  /* ../lib/standard/string.nit:1035 */
   ATTR_standard___string___Sys____args_cache(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -5773,15 +5811,15 @@ val_t standard___string___Sys___native_argc(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 1003;
+  fra.me.line = 1038;
   fra.me.meth = LOCATE_standard___string___Sys___native_argc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string.nit:1003 */
-  REGB0 = Sys_native_argc___out(fra.me.REG[0]);
+  /* ../lib/standard/string.nit:1038 */
+  REGB0 = TAG_Int(glob_argc);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
@@ -5792,7 +5830,7 @@ val_t standard___string___Sys___native_argv(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 1005;
+  fra.me.line = 1041;
   fra.me.meth = LOCATE_standard___string___Sys___native_argv;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -5800,8 +5838,8 @@ val_t standard___string___Sys___native_argv(val_t p0, val_t p1){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ../lib/standard/string.nit:1005 */
-  fra.me.REG[0] = Sys_native_argv___out(fra.me.REG[0], REGB0);
+  /* ../lib/standard/string.nit:1041 */
+  fra.me.REG[0] = BOX_NativeString(glob_argv[UNTAG_Int(REGB0)]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
index 0b917e7..4b27515 100644 (file)
@@ -46,12 +46,10 @@ extern const int SFT_standard___string[];
 #define CALL_standard___string___String___index_from(recv) ((standard___string___String___index_from_t)CALL((recv), (SFT_standard___string[7] + 1)))
 #define CALL_standard___string___String___index_to(recv) ((standard___string___String___index_to_t)CALL((recv), (SFT_standard___string[7] + 2)))
 #define CALL_standard___string___String___from_substring(recv) ((standard___string___String___from_substring_t)CALL((recv), (SFT_standard___string[7] + 3)))
-#define CALL_standard___string___String___with_native(recv) ((standard___string___String___with_native_t)CALL((recv), (SFT_standard___string[7] + 4)))
-#define CALL_standard___string___String___from_cstring(recv) ((standard___string___String___from_cstring_t)CALL((recv), (SFT_standard___string[7] + 5)))
-#define CALL_standard___string___String___copy_from_native(recv) ((standard___string___String___copy_from_native_t)CALL((recv), (SFT_standard___string[7] + 6)))
-#define CALL_standard___string___String___to_cstring(recv) ((standard___string___String___to_cstring_t)CALL((recv), (SFT_standard___string[7] + 7)))
-#define CALL_standard___string___String_____plus(recv) ((standard___string___String_____plus_t)CALL((recv), (SFT_standard___string[7] + 8)))
-#define CALL_standard___string___String_____star(recv) ((standard___string___String_____star_t)CALL((recv), (SFT_standard___string[7] + 9)))
+#define CALL_standard___string___String___with_infos(recv) ((standard___string___String___with_infos_t)CALL((recv), (SFT_standard___string[7] + 4)))
+#define CALL_standard___string___String___to_cstring(recv) ((standard___string___String___to_cstring_t)CALL((recv), (SFT_standard___string[7] + 5)))
+#define CALL_standard___string___String_____plus(recv) ((standard___string___String_____plus_t)CALL((recv), (SFT_standard___string[7] + 6)))
+#define CALL_standard___string___String_____star(recv) ((standard___string___String_____star_t)CALL((recv), (SFT_standard___string[7] + 7)))
 #define ID_standard___string___Buffer (SFT_standard___string[8])
 #define COLOR_standard___string___Buffer (SFT_standard___string[9])
 #define ATTR_standard___string___Buffer____capacity(recv) ATTR(recv, (SFT_standard___string[10] + 0))
@@ -68,8 +66,9 @@ extern const int SFT_standard___string[];
 #define CALL_standard___string___Object___inspect_head(recv) ((standard___string___Object___inspect_head_t)CALL((recv), (SFT_standard___string[12] + 4)))
 #define CALL_standard___string___Object___args(recv) ((standard___string___Object___args_t)CALL((recv), (SFT_standard___string[12] + 5)))
 #define CALL_standard___string___Int___fill_buffer(recv) ((standard___string___Int___fill_buffer_t)CALL((recv), (SFT_standard___string[13] + 0)))
-#define CALL_standard___string___Int___to_hex(recv) ((standard___string___Int___to_hex_t)CALL((recv), (SFT_standard___string[13] + 1)))
-#define CALL_standard___string___Int___to_base(recv) ((standard___string___Int___to_base_t)CALL((recv), (SFT_standard___string[13] + 2)))
+#define CALL_standard___string___Int___native_int_to_s(recv) ((standard___string___Int___native_int_to_s_t)CALL((recv), (SFT_standard___string[13] + 1)))
+#define CALL_standard___string___Int___to_hex(recv) ((standard___string___Int___to_hex_t)CALL((recv), (SFT_standard___string[13] + 2)))
+#define CALL_standard___string___Int___to_base(recv) ((standard___string___Int___to_base_t)CALL((recv), (SFT_standard___string[13] + 3)))
 #define CALL_standard___string___Float___to_precision(recv) ((standard___string___Float___to_precision_t)CALL((recv), (SFT_standard___string[14] + 0)))
 #define CALL_standard___string___Float___to_precision_native(recv) ((standard___string___Float___to_precision_native_t)CALL((recv), (SFT_standard___string[14] + 1)))
 #define CALL_standard___string___Char___is_numeric(recv) ((standard___string___Char___is_numeric_t)CALL((recv), (SFT_standard___string[15] + 0)))
@@ -86,7 +85,9 @@ extern const int SFT_standard___string[];
 #define CALL_standard___string___NativeString___cstring_length(recv) ((standard___string___NativeString___cstring_length_t)CALL((recv), (SFT_standard___string[20] + 4)))
 #define CALL_standard___string___NativeString___atoi(recv) ((standard___string___NativeString___atoi_t)CALL((recv), (SFT_standard___string[20] + 5)))
 #define CALL_standard___string___NativeString___atof(recv) ((standard___string___NativeString___atof_t)CALL((recv), (SFT_standard___string[20] + 6)))
-#define CALL_standard___string___NativeString___init(recv) ((standard___string___NativeString___init_t)CALL((recv), (SFT_standard___string[20] + 7)))
+#define CALL_standard___string___NativeString___to_s_with_length(recv) ((standard___string___NativeString___to_s_with_length_t)CALL((recv), (SFT_standard___string[20] + 7)))
+#define CALL_standard___string___NativeString___to_s_with_copy(recv) ((standard___string___NativeString___to_s_with_copy_t)CALL((recv), (SFT_standard___string[20] + 8)))
+#define CALL_standard___string___NativeString___init(recv) ((standard___string___NativeString___init_t)CALL((recv), (SFT_standard___string[20] + 9)))
 #define ID_standard___string___StringCapable (SFT_standard___string[21])
 #define COLOR_standard___string___StringCapable (SFT_standard___string[22])
 #define INIT_TABLE_POS_standard___string___StringCapable (SFT_standard___string[23] + 0)
@@ -164,15 +165,9 @@ typedef void (*standard___string___String___output_t)(val_t p0);
 void standard___string___String___from_substring(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table);
 typedef void (*standard___string___String___from_substring_t)(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table);
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
-void standard___string___String___with_native(val_t p0, val_t p1, val_t p2, int* init_table);
-typedef void (*standard___string___String___with_native_t)(val_t p0, val_t p1, val_t p2, int* init_table);
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
-void standard___string___String___from_cstring(val_t p0, val_t p1, int* init_table);
-typedef void (*standard___string___String___from_cstring_t)(val_t p0, val_t p1, int* init_table);
-val_t NEW_String_standard___string___String___from_cstring(val_t p0);
-void standard___string___String___copy_from_native(val_t p0, val_t p1, int* init_table);
-typedef void (*standard___string___String___copy_from_native_t)(val_t p0, val_t p1, int* init_table);
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
+void standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table);
+typedef void (*standard___string___String___with_infos_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table);
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3);
 val_t standard___string___String___to_cstring(val_t p0);
 typedef val_t (*standard___string___String___to_cstring_t)(val_t p0);
 val_t standard___string___String_____eqeq(val_t p0, val_t p1);
@@ -228,6 +223,8 @@ val_t standard___string___Bool___to_s(val_t p0);
 typedef val_t (*standard___string___Bool___to_s_t)(val_t p0);
 void standard___string___Int___fill_buffer(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef void (*standard___string___Int___fill_buffer_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t standard___string___Int___native_int_to_s(val_t p0, val_t p1);
+typedef val_t (*standard___string___Int___native_int_to_s_t)(val_t p0, val_t p1);
 val_t standard___string___Int___to_s(val_t p0);
 typedef val_t (*standard___string___Int___to_s_t)(val_t p0);
 val_t standard___string___Int___to_hex(val_t p0);
@@ -277,6 +274,12 @@ val_t standard___string___NativeString___atoi(val_t p0);
 typedef val_t (*standard___string___NativeString___atoi_t)(val_t p0);
 val_t standard___string___NativeString___atof(val_t p0);
 typedef val_t (*standard___string___NativeString___atof_t)(val_t p0);
+val_t standard___string___NativeString___to_s(val_t p0);
+typedef val_t (*standard___string___NativeString___to_s_t)(val_t p0);
+val_t standard___string___NativeString___to_s_with_length(val_t p0, val_t p1);
+typedef val_t (*standard___string___NativeString___to_s_with_length_t)(val_t p0, val_t p1);
+val_t standard___string___NativeString___to_s_with_copy(val_t p0);
+typedef val_t (*standard___string___NativeString___to_s_with_copy_t)(val_t p0);
 void standard___string___NativeString___init(val_t p0, int* init_table);
 typedef void (*standard___string___NativeString___init_t)(val_t p0, int* init_table);
 val_t NEW_NativeString_standard___string___NativeString___init();
index 596ea77..be9c313 100644 (file)
@@ -145,7 +145,7 @@ val_t standard___string_search___Pattern___split_in(val_t p0, val_t p1){
         nit_abort("Reciever is null", NULL, LOCATE_standard___string_search, 49);
       }
       REGB1 = CALL_standard___string_search___Match___from(fra.me.REG[3])(fra.me.REG[3]);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ../lib/standard/string_search.nit:50 */
       fra.me.REG[4] = NEW_Match_standard___string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
@@ -173,7 +173,7 @@ val_t standard___string_search___Pattern___split_in(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
   /* ../lib/standard/string_search.nit:55 */
   fra.me.REG[1] = NEW_Match_standard___string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
@@ -242,7 +242,7 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ../lib/standard/string_search.nit:72 */
   if (UNTAG_Bool(REGB1)) {
@@ -265,24 +265,24 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
   REGB2 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
   /* ../lib/standard/string_search.nit:77 */
   while(1) {
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
     /* ../lib/standard/string_search.nit:77 */
     REGB4 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
     REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
     /* ../lib/standard/string_search.nit:77 */
     if (UNTAG_Bool(REGB4)) {
       /* ../lib/standard/string_search.nit:78 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB4));
       /* ../lib/standard/string_search.nit:79 */
       while(1) {
@@ -292,7 +292,7 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB3));
         /* ../lib/standard/string_search.nit:79 */
         if (UNTAG_Bool(REGB3)) {
@@ -303,14 +303,14 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
           }
           fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
           REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
           /* ../lib/standard/string_search.nit:79 */
           REGB5 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB5);
           REGB6 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB5));
           if (UNTAG_Bool(REGB6)) {
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB5 = TAG_Bool((REGB3)==(REGB5));
             /* ../lib/standard/string_search.nit:79 */
             REGB6 = REGB5;
@@ -321,7 +321,7 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
         }
         if (UNTAG_Bool(REGB6)) {
           REGB6 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB6 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB6));
           /* ../lib/standard/string_search.nit:79 */
           REGB4 = REGB6;
@@ -337,7 +337,7 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
       /* ../lib/standard/string_search.nit:80 */
       if (UNTAG_Bool(REGB6)) {
@@ -352,23 +352,23 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
           nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 83);
         }
         fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         REGB5 = REGB4;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Int(0);
         REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB7)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
           REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -376,40 +376,40 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB3));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB7 = TAG_Bool(0);
           REGB3 = REGB7;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label3;
         label3: while(0);
         /* ../lib/standard/string_search.nit:83 */
         REGB5 = fra.me.REG[2];
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
         /* ../lib/standard/string_search.nit:84 */
         REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB3);
         REGB3 = CALL_standard___string_search___BM_Pattern___bc(fra.me.REG[0])(fra.me.REG[0], REGB3);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB3 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
         /* ../lib/standard/string_search.nit:84 */
         REGB7 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
         REGB4 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB4));
         REGB7 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -417,16 +417,16 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB7 = TAG_Bool(UNTAG_Int(REGB5)>UNTAG_Int(REGB4));
         /* ../lib/standard/string_search.nit:86 */
         if (UNTAG_Bool(REGB7)) {
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB5 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB5));
           /* ../lib/standard/string_search.nit:87 */
           REGB0 = REGB5;
         } else {
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
           /* ../lib/standard/string_search.nit:89 */
           REGB0 = REGB4;
@@ -440,7 +440,7 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
   label4: while(0);
   /* ../lib/standard/string_search.nit:93 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* ../lib/standard/string_search.nit:93 */
   REGB6 = REGB0;
@@ -478,7 +478,7 @@ val_t standard___string_search___BM_Pattern___search_in(val_t p0, val_t p1, val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* ../lib/standard/string_search.nit:100 */
   if (UNTAG_Bool(REGB1)) {
@@ -640,14 +640,14 @@ void standard___string_search___BM_Pattern___compute_bc(val_t p0){
   /* ../lib/standard/string_search.nit:144 */
   while(1) {
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     /* ../lib/standard/string_search.nit:144 */
     if (UNTAG_Bool(REGB2)) {
@@ -659,17 +659,17 @@ void standard___string_search___BM_Pattern___compute_bc(val_t p0){
       }
       fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0]);
       REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
       /* ../lib/standard/string_search.nit:145 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
       /* ../lib/standard/string_search.nit:145 */
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
       /* ../lib/standard/string_search.nit:146 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
       /* ../lib/standard/string_search.nit:146 */
       REGB1 = REGB4;
@@ -724,11 +724,11 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
   REGB1 = TAG_Int(0);
   /* ../lib/standard/string_search.nit:157 */
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
   /* ../lib/standard/string_search.nit:158 */
   REGB3 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
   /* ../lib/standard/string_search.nit:159 */
   while(1) {
@@ -738,7 +738,7 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
     /* ../lib/standard/string_search.nit:159 */
     if (UNTAG_Bool(REGB4)) {
@@ -747,34 +747,34 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
       /* ../lib/standard/string_search.nit:160 */
       if (UNTAG_Bool(REGB4)) {
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
         /* ../lib/standard/string_search.nit:160 */
         REGB5 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB5 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB5));
         REGB5 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[2] = fra.me.REG[0];
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Int(0);
         REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB6)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB4)) {
           REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
           REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -782,29 +782,29 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB6 = TAG_Bool(0);
           REGB4 = REGB6;
         }
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
         REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label1;
         label1: while(0);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
         /* ../lib/standard/string_search.nit:160 */
         REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -816,7 +816,7 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB5 = TAG_Bool(UNTAG_Int(fra.me.REG[2])<UNTAG_Int(REGB5));
       } else {
         /* ../lib/standard/string_search.nit:160 */
@@ -824,30 +824,30 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
         REGB5 = REGB4;
       }
       if (UNTAG_Bool(REGB5)) {
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
         /* ../lib/standard/string_search.nit:161 */
         REGB4 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB4 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB4));
         REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[2] = fra.me.REG[0];
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Int(0);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB6)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
           REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -855,26 +855,26 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB6 = TAG_Bool(0);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
         REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label2;
         label2: while(0);
         /* ../lib/standard/string_search.nit:161 */
@@ -885,7 +885,7 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
         /* ../lib/standard/string_search.nit:163 */
         if (UNTAG_Bool(REGB4)) {
@@ -901,16 +901,16 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB4));
           /* ../lib/standard/string_search.nit:165 */
           if (UNTAG_Bool(REGB4)) {
             REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB2);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
             /* ../lib/standard/string_search.nit:165 */
             REGB6 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:240 */
+            /* ../lib/standard/kernel.nit:247 */
             REGB6 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB6));
             REGB6 = TAG_Int(UNTAG_Int(REGB6)-UNTAG_Int(REGB1));
             /* ../lib/standard/string_search.nit:165 */
@@ -918,7 +918,7 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
             REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB6));
             if (UNTAG_Bool(REGB5)) {
             } else {
-              /* ../lib/standard/kernel.nit:381 */
+              /* ../lib/standard/kernel.nit:434 */
               REGB6 = TAG_Bool((REGB4)==(REGB6));
               /* ../lib/standard/string_search.nit:165 */
               REGB5 = REGB6;
@@ -929,7 +929,7 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
           }
           if (UNTAG_Bool(REGB5)) {
             REGB5 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:240 */
+            /* ../lib/standard/kernel.nit:247 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB5));
             /* ../lib/standard/string_search.nit:165 */
             REGB2 = REGB5;
@@ -938,14 +938,14 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
           }
         }
         label3: while(0);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB5 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
         /* ../lib/standard/string_search.nit:166 */
         CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB5);
       }
       /* ../lib/standard/string_search.nit:168 */
       REGB5 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB5));
       /* ../lib/standard/string_search.nit:168 */
       REGB3 = REGB5;
@@ -1009,7 +1009,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
     /* ../lib/standard/string_search.nit:179 */
     if (UNTAG_Bool(REGB2)) {
@@ -1023,7 +1023,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB1, REGB0);
       /* ../lib/standard/string_search.nit:181 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
       /* ../lib/standard/string_search.nit:181 */
       REGB1 = REGB2;
@@ -1037,33 +1037,33 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
   REGB2 = TAG_Int(0);
   /* ../lib/standard/string_search.nit:184 */
   REGB3 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
   /* ../lib/standard/string_search.nit:184 */
   REGB1 = REGB3;
   /* ../lib/standard/string_search.nit:185 */
   while(1) {
     REGB3 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:239 */
+    /* ../lib/standard/kernel.nit:246 */
     REGB3 = TAG_Int(-UNTAG_Int(REGB3));
     REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
     /* ../lib/standard/string_search.nit:185 */
     if (UNTAG_Bool(REGB3)) {
       /* ../lib/standard/string_search.nit:186 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB3 = TAG_Int(-UNTAG_Int(REGB3));
       /* ../lib/standard/string_search.nit:186 */
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB3 = TAG_Bool((REGB1)==(REGB3));
         /* ../lib/standard/string_search.nit:186 */
         REGB4 = REGB3;
@@ -1071,24 +1071,24 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(1);
       } else {
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[2] = fra.me.REG[1];
         REGB3 = REGB1;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Int(0);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB6)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
           REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1096,31 +1096,31 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB6 = TAG_Bool(0);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
         REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label2;
         label2: while(0);
         /* ../lib/standard/string_search.nit:186 */
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
         /* ../lib/standard/string_search.nit:186 */
         REGB5 = TAG_Bool(IS_EQUAL_ON(REGB3,fra.me.REG[2]));
@@ -1131,7 +1131,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
             REGB6 = TAG_Bool(0);
             REGB5 = REGB6;
           } else {
-            /* ../lib/standard/kernel.nit:230 */
+            /* ../lib/standard/kernel.nit:237 */
             REGB3 = TAG_Bool((fra.me.REG[2])==(REGB3));
             /* ../lib/standard/string_search.nit:186 */
             REGB5 = REGB3;
@@ -1143,7 +1143,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
         /* ../lib/standard/string_search.nit:187 */
         while(1) {
           REGB4 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
           REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
           REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1151,7 +1151,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB4));
           /* ../lib/standard/string_search.nit:187 */
           if (UNTAG_Bool(REGB4)) {
@@ -1162,23 +1162,23 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
               nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 188);
             }
             fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             REGB4 = REGB2;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB5 = TAG_Int(0);
             REGB3 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB3)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB5)) {
               REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
               REGB3 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -1186,26 +1186,26 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB3 = TAG_Bool(0);
               REGB5 = REGB3;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
             REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label3;
             label3: while(0);
             /* ../lib/standard/string_search.nit:188 */
@@ -1217,7 +1217,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
                REGB5 = TAG_Bool(0);
                REGB4 = REGB5;
               } else {
-               /* ../lib/standard/kernel.nit:230 */
+               /* ../lib/standard/kernel.nit:237 */
                REGB5 = TAG_Bool((fra.me.REG[2])==(REGB0));
                /* ../lib/standard/string_search.nit:188 */
                REGB4 = REGB5;
@@ -1231,7 +1231,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
               }
               fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
               REGB4 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:240 */
+              /* ../lib/standard/kernel.nit:247 */
               REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
               REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
               /* ../lib/standard/string_search.nit:188 */
@@ -1239,7 +1239,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
             }
             /* ../lib/standard/string_search.nit:189 */
             REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
             /* ../lib/standard/string_search.nit:189 */
             REGB2 = REGB4;
@@ -1252,7 +1252,7 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
       }
       /* ../lib/standard/string_search.nit:192 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB4));
       /* ../lib/standard/string_search.nit:192 */
       REGB1 = REGB4;
@@ -1268,14 +1268,14 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
   /* ../lib/standard/string_search.nit:195 */
   while(1) {
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
     REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB4)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     /* ../lib/standard/string_search.nit:195 */
     if (UNTAG_Bool(REGB2)) {
@@ -1287,26 +1287,26 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
       }
       fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[3] = fra.me.REG[1];
       REGB4 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB5 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB3 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -1314,40 +1314,40 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Bool(0);
         REGB5 = REGB3;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label6;
       label6: while(0);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(fra.me.REG[3]));
       /* ../lib/standard/string_search.nit:196 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
       REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
       /* ../lib/standard/string_search.nit:196 */
       CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
       /* ../lib/standard/string_search.nit:197 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
       /* ../lib/standard/string_search.nit:197 */
       REGB1 = REGB4;
@@ -1360,6 +1360,80 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_standard___string_search___BM_Pattern___hash[] = "string_search::BM_Pattern::(hash::Object::hash)";
+val_t standard___string_search___BM_Pattern___hash(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_standard___string_search;
+  fra.me.line = 201;
+  fra.me.meth = LOCATE_standard___string_search___BM_Pattern___hash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/string_search.nit:201 */
+  REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 201);
+  }
+  fra.me.REG[0] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
+  REGB0 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___string_search___BM_Pattern_____eqeq[] = "string_search::BM_Pattern::(kernel::Object::==)";
+val_t standard___string_search___BM_Pattern_____eqeq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___string_search;
+  fra.me.line = 202;
+  fra.me.meth = LOCATE_standard___string_search___BM_Pattern_____eqeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ../lib/standard/string_search.nit:202 */
+  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___string_search___BM_Pattern, ID_standard___string_search___BM_Pattern)) /*cast BM_Pattern*/;
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 202);
+    }
+    fra.me.REG[1] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[1]);
+    REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 202);
+    }
+    fra.me.REG[0] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      REGB0 = REGB1;
+    }
+  } else {
+    REGB1 = TAG_Bool(0);
+    REGB0 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
 static const char LOCATE_standard___string_search___Match___string[] = "string_search::Match::string";
 val_t standard___string_search___Match___string(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1367,18 +1441,18 @@ val_t standard___string_search___Match___string(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 204;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_standard___string_search___Match___string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string_search.nit:204 */
+  /* ../lib/standard/string_search.nit:207 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___Match____string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_string", LOCATE_standard___string_search, 204);
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_standard___string_search, 207);
   }
   fra.me.REG[0] = ATTR_standard___string_search___Match____string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1391,18 +1465,18 @@ val_t standard___string_search___Match___from(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 207;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_standard___string_search___Match___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string_search.nit:207 */
+  /* ../lib/standard/string_search.nit:210 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_from", LOCATE_standard___string_search, 207);
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_standard___string_search, 210);
   }
   REGB0 = ATTR_standard___string_search___Match____from(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1415,18 +1489,18 @@ val_t standard___string_search___Match___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 210;
+  fra.me.line = 213;
   fra.me.meth = LOCATE_standard___string_search___Match___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string_search.nit:210 */
+  /* ../lib/standard/string_search.nit:213 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 210);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 213);
   }
   REGB0 = ATTR_standard___string_search___Match____length(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1440,29 +1514,29 @@ val_t standard___string_search___Match___after(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 213;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_standard___string_search___Match___after;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string_search.nit:215 */
+  /* ../lib/standard/string_search.nit:218 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_from", LOCATE_standard___string_search, 215);
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_standard___string_search, 218);
   }
   REGB0 = ATTR_standard___string_search___Match____from(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 215);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 218);
   }
   REGB1 = ATTR_standard___string_search___Match____length(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string_search.nit:215 */
+  /* ../lib/standard/string_search.nit:218 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1476,7 +1550,7 @@ val_t standard___string_search___Match___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 217;
+  fra.me.line = 220;
   fra.me.meth = LOCATE_standard___string_search___Match___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1484,23 +1558,23 @@ val_t standard___string_search___Match___to_s(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string_search.nit:218 */
+  /* ../lib/standard/string_search.nit:221 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___Match____string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_string", LOCATE_standard___string_search, 218);
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_standard___string_search, 221);
   }
   fra.me.REG[1] = ATTR_standard___string_search___Match____string(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_standard___string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_from", LOCATE_standard___string_search, 218);
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_standard___string_search, 221);
   }
   REGB0 = ATTR_standard___string_search___Match____from(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_standard___string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 218);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 221);
   }
   REGB1 = ATTR_standard___string_search___Match____length(fra.me.REG[0]);
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB1);
@@ -1522,7 +1596,7 @@ void standard___string_search___Match___init(val_t p0, val_t p1, val_t p2, val_t
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 220;
+  fra.me.line = 223;
   fra.me.meth = LOCATE_standard___string_search___Match___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1533,35 +1607,35 @@ void standard___string_search___Match___init(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[1] = p1;
   REGB0 = p2;
   REGB1 = p3;
-  /* ../lib/standard/string_search.nit:223 */
+  /* ../lib/standard/string_search.nit:226 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/string_search.nit:223 */
+  /* ../lib/standard/string_search.nit:226 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert '%s' failed", "positive_length", LOCATE_standard___string_search, 223);
+    nit_abort("Assert '%s' failed", "positive_length", LOCATE_standard___string_search, 226);
   }
-  /* ../lib/standard/string_search.nit:224 */
+  /* ../lib/standard/string_search.nit:227 */
   REGB2 = TAG_Int(0);
   REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB3)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/string_search.nit:224 */
+  /* ../lib/standard/string_search.nit:227 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert '%s' failed", "valid_from", LOCATE_standard___string_search, 224);
+    nit_abort("Assert '%s' failed", "valid_from", LOCATE_standard___string_search, 227);
   }
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ../lib/standard/collection/array.nit:24 */
   REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1575,18 +1649,18 @@ void standard___string_search___Match___init(val_t p0, val_t p1, val_t p2, val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB3));
-  /* ../lib/standard/string_search.nit:225 */
+  /* ../lib/standard/string_search.nit:228 */
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Assert '%s' failed", "valid_after", LOCATE_standard___string_search, 225);
+    nit_abort("Assert '%s' failed", "valid_after", LOCATE_standard___string_search, 228);
   }
-  /* ../lib/standard/string_search.nit:226 */
+  /* ../lib/standard/string_search.nit:229 */
   ATTR_standard___string_search___Match____string(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/string_search.nit:227 */
+  /* ../lib/standard/string_search.nit:230 */
   ATTR_standard___string_search___Match____from(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/string_search.nit:228 */
+  /* ../lib/standard/string_search.nit:231 */
   ATTR_standard___string_search___Match____length(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -1603,7 +1677,7 @@ val_t standard___string_search___Char___search_index_in(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 235;
+  fra.me.line = 238;
   fra.me.meth = LOCATE_standard___string_search___Char___search_index_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1619,48 +1693,48 @@ val_t standard___string_search___Char___search_index_in(val_t p0, val_t p1, val_
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string_search.nit:238 */
+  /* ../lib/standard/string_search.nit:241 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/string_search.nit:238 */
+    /* ../lib/standard/string_search.nit:241 */
     if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/string_search.nit:239 */
+      /* ../lib/standard/string_search.nit:242 */
       REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB0));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB3 = TAG_Bool((REGB3)==(REGB0));
-        /* ../lib/standard/string_search.nit:239 */
+        /* ../lib/standard/string_search.nit:242 */
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
         REGB4 = REGB1;
         goto label1;
       }
-      /* ../lib/standard/string_search.nit:240 */
+      /* ../lib/standard/string_search.nit:243 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string_search.nit:240 */
+      /* ../lib/standard/string_search.nit:243 */
       REGB1 = REGB3;
     } else {
-      /* ../lib/standard/string_search.nit:238 */
+      /* ../lib/standard/string_search.nit:241 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ../lib/standard/string_search.nit:242 */
+  /* ../lib/standard/string_search.nit:245 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ../lib/standard/string_search.nit:242 */
+  /* ../lib/standard/string_search.nit:245 */
   REGB4 = REGB1;
   goto label1;
   label1: while(0);
@@ -1676,7 +1750,7 @@ val_t standard___string_search___Char___search_in(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_standard___string_search;
-  fra.me.line = 245;
+  fra.me.line = 248;
   fra.me.meth = LOCATE_standard___string_search___Char___search_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1686,24 +1760,24 @@ val_t standard___string_search___Char___search_in(val_t p0, val_t p1, val_t p2){
   REGB0 = p0;
   fra.me.REG[0] = p1;
   REGB1 = p2;
-  /* ../lib/standard/string_search.nit:247 */
+  /* ../lib/standard/string_search.nit:250 */
   REGB1 = CALL_standard___string_search___Pattern___search_index_in(REGB0)(REGB0, fra.me.REG[0], REGB1);
-  /* ../lib/standard/string_search.nit:248 */
+  /* ../lib/standard/string_search.nit:251 */
   REGB0 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-  /* ../lib/standard/string_search.nit:248 */
+  /* ../lib/standard/string_search.nit:251 */
   if (UNTAG_Bool(REGB0)) {
-    /* ../lib/standard/string_search.nit:249 */
+    /* ../lib/standard/string_search.nit:252 */
     fra.me.REG[1] = NIT_NULL;
     goto label1;
   } else {
-    /* ../lib/standard/string_search.nit:251 */
+    /* ../lib/standard/string_search.nit:254 */
     REGB0 = TAG_Int(1);
     fra.me.REG[0] = NEW_Match_standard___string_search___Match___init(fra.me.REG[0], REGB1, REGB0);
     fra.me.REG[1] = fra.me.REG[0];
@@ -1725,7 +1799,7 @@ val_t standard___string_search___String___search_index_in(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 259;
+  fra.me.line = 262;
   fra.me.meth = LOCATE_standard___string_search___String___search_index_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1735,19 +1809,19 @@ val_t standard___string_search___String___search_index_in(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/string_search.nit:261 */
+  /* ../lib/standard/string_search.nit:264 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/string_search.nit:261 */
+  /* ../lib/standard/string_search.nit:264 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string_search, 261);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string_search, 264);
   }
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -1762,22 +1836,22 @@ val_t standard___string_search___String___search_index_in(val_t p0, val_t p1, va
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ../lib/standard/string_search.nit:262 */
+  /* ../lib/standard/string_search.nit:265 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-  /* ../lib/standard/string_search.nit:263 */
+  /* ../lib/standard/string_search.nit:266 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/string_search.nit:263 */
+    /* ../lib/standard/string_search.nit:266 */
     if (UNTAG_Bool(REGB2)) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -1786,11 +1860,11 @@ val_t standard___string_search___String___search_index_in(val_t p0, val_t p1, va
         nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-      /* ../lib/standard/string_search.nit:264 */
+      /* ../lib/standard/string_search.nit:267 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ../lib/standard/string_search.nit:265 */
+      /* ../lib/standard/string_search.nit:268 */
       while(1) {
         REGB2 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1798,21 +1872,21 @@ val_t standard___string_search___String___search_index_in(val_t p0, val_t p1, va
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
-        /* ../lib/standard/string_search.nit:265 */
+        /* ../lib/standard/string_search.nit:268 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-          /* ../lib/standard/string_search.nit:265 */
+          /* ../lib/standard/string_search.nit:268 */
           REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB4);
           REGB5 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
           if (UNTAG_Bool(REGB5)) {
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB4 = TAG_Bool((REGB2)==(REGB4));
-            /* ../lib/standard/string_search.nit:265 */
+            /* ../lib/standard/string_search.nit:268 */
             REGB5 = REGB4;
           }
         } else {
@@ -1821,46 +1895,46 @@ val_t standard___string_search___String___search_index_in(val_t p0, val_t p1, va
         }
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB5));
-          /* ../lib/standard/string_search.nit:265 */
+          /* ../lib/standard/string_search.nit:268 */
           REGB3 = REGB5;
         } else {
           goto label1;
         }
       }
       label1: while(0);
-      /* ../lib/standard/string_search.nit:267 */
+      /* ../lib/standard/string_search.nit:270 */
       REGB5 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
-      /* ../lib/standard/string_search.nit:267 */
+      /* ../lib/standard/string_search.nit:270 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = REGB0;
         goto label2;
       }
-      /* ../lib/standard/string_search.nit:269 */
+      /* ../lib/standard/string_search.nit:272 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/string_search.nit:269 */
+      /* ../lib/standard/string_search.nit:272 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/string_search.nit:263 */
+      /* ../lib/standard/string_search.nit:266 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ../lib/standard/string_search.nit:271 */
+  /* ../lib/standard/string_search.nit:274 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:239 */
+  /* ../lib/standard/kernel.nit:246 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ../lib/standard/string_search.nit:271 */
+  /* ../lib/standard/string_search.nit:274 */
   REGB5 = REGB0;
   goto label2;
   label2: while(0);
@@ -1876,7 +1950,7 @@ val_t standard___string_search___String___search_in(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_standard___string_search;
-  fra.me.line = 274;
+  fra.me.line = 277;
   fra.me.meth = LOCATE_standard___string_search___String___search_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1887,20 +1961,20 @@ val_t standard___string_search___String___search_in(val_t p0, val_t p1, val_t p2
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/string_search.nit:276 */
+  /* ../lib/standard/string_search.nit:279 */
   REGB0 = CALL_standard___string_search___Pattern___search_index_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
-  /* ../lib/standard/string_search.nit:277 */
+  /* ../lib/standard/string_search.nit:280 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/string_search.nit:277 */
+  /* ../lib/standard/string_search.nit:280 */
   if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/string_search.nit:278 */
+    /* ../lib/standard/string_search.nit:281 */
     fra.me.REG[2] = NIT_NULL;
     goto label1;
   } else {
@@ -1911,7 +1985,7 @@ val_t standard___string_search___String___search_in(val_t p0, val_t p1, val_t p2
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ../lib/standard/string_search.nit:280 */
+    /* ../lib/standard/string_search.nit:283 */
     fra.me.REG[1] = NEW_Match_standard___string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
     fra.me.REG[2] = fra.me.REG[1];
     goto label1;
@@ -1927,7 +2001,7 @@ val_t standard___string_search___String___search(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 284;
+  fra.me.line = 287;
   fra.me.meth = LOCATE_standard___string_search___String___search;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1936,7 +2010,7 @@ val_t standard___string_search___String___search(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string_search.nit:285 */
+  /* ../lib/standard/string_search.nit:288 */
   REGB0 = TAG_Int(0);
   fra.me.REG[0] = CALL_standard___string_search___Pattern___search_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
   goto label1;
@@ -1951,7 +2025,7 @@ val_t standard___string_search___String___search_from(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 287;
+  fra.me.line = 290;
   fra.me.meth = LOCATE_standard___string_search___String___search_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1961,7 +2035,7 @@ val_t standard___string_search___String___search_from(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ../lib/standard/string_search.nit:290 */
+  /* ../lib/standard/string_search.nit:293 */
   fra.me.REG[0] = CALL_standard___string_search___Pattern___search_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
   goto label1;
   label1: while(0);
@@ -1974,7 +2048,7 @@ val_t standard___string_search___String___search_all(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 292;
+  fra.me.line = 295;
   fra.me.meth = LOCATE_standard___string_search___String___search_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1983,7 +2057,7 @@ val_t standard___string_search___String___search_all(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string_search.nit:299 */
+  /* ../lib/standard/string_search.nit:302 */
   fra.me.REG[0] = CALL_standard___string_search___Pattern___search_all_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -1999,7 +2073,7 @@ val_t standard___string_search___String___split(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 301;
+  fra.me.line = 304;
   fra.me.meth = LOCATE_standard___string_search___String___split;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2010,7 +2084,7 @@ val_t standard___string_search___String___split(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string_search.nit:305 */
+  /* ../lib/standard/string_search.nit:309 */
   fra.me.REG[0] = CALL_standard___string_search___Pattern___split_in(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -2019,20 +2093,20 @@ val_t standard___string_search___String___split(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/string_search.nit:306 */
+  /* ../lib/standard/string_search.nit:310 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -2046,33 +2120,33 @@ val_t standard___string_search___String___split(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/string_search.nit:307 */
+      /* ../lib/standard/string_search.nit:311 */
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ../lib/standard/string_search.nit:308 */
+  /* ../lib/standard/string_search.nit:312 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -2084,7 +2158,7 @@ val_t standard___string_search___String___split_with(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 311;
+  fra.me.line = 315;
   fra.me.meth = LOCATE_standard___string_search___String___split_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2093,7 +2167,7 @@ val_t standard___string_search___String___split_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ../lib/standard/string_search.nit:312 */
+  /* ../lib/standard/string_search.nit:316 */
   fra.me.REG[1] = CALL_standard___string_search___String___split(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label1;
   label1: while(0);
@@ -2106,7 +2180,7 @@ val_t standard___string_search___String___replace(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_standard___string_search;
-  fra.me.line = 314;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_standard___string_search___String___replace;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2117,7 +2191,7 @@ val_t standard___string_search___String___replace(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ../lib/standard/string_search.nit:320 */
+  /* ../lib/standard/string_search.nit:324 */
   fra.me.REG[1] = CALL_standard___string_search___String___split_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   goto label1;
@@ -2137,7 +2211,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 323;
+  fra.me.line = 327;
   fra.me.meth = LOCATE_standard___string_search___String___html_escape;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2145,7 +2219,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/string_search.nit:329 */
+  /* ../lib/standard/string_search.nit:333 */
   REGB0 = TAG_Char('&');
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
   if (UNTAG_Bool(REGB0)) {
@@ -2153,7 +2227,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString("&amp;");
       REGB1 = TAG_Int(5);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_1 = fra.me.REG[1];
       register_static_object(&once_value_1);
     } else fra.me.REG[1] = once_value_1;
@@ -2161,7 +2235,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     fra.me.REG[1] = CALL_standard___string_search___String___replace(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
     fra.me.REG[0] = fra.me.REG[1];
   }
-  /* ../lib/standard/string_search.nit:330 */
+  /* ../lib/standard/string_search.nit:334 */
   REGB0 = TAG_Char('<');
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
   if (UNTAG_Bool(REGB0)) {
@@ -2169,7 +2243,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("&lt;");
       REGB1 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2177,7 +2251,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     fra.me.REG[1] = CALL_standard___string_search___String___replace(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
     fra.me.REG[0] = fra.me.REG[1];
   }
-  /* ../lib/standard/string_search.nit:331 */
+  /* ../lib/standard/string_search.nit:335 */
   REGB0 = TAG_Char('>');
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
   if (UNTAG_Bool(REGB0)) {
@@ -2185,7 +2259,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     if (!once_value_3) {
       fra.me.REG[1] = BOX_NativeString("&gt;");
       REGB1 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_3 = fra.me.REG[1];
       register_static_object(&once_value_3);
     } else fra.me.REG[1] = once_value_3;
@@ -2193,7 +2267,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     fra.me.REG[1] = CALL_standard___string_search___String___replace(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
     fra.me.REG[0] = fra.me.REG[1];
   }
-  /* ../lib/standard/string_search.nit:332 */
+  /* ../lib/standard/string_search.nit:336 */
   REGB0 = TAG_Char('"');
   REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
   if (UNTAG_Bool(REGB0)) {
@@ -2201,7 +2275,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     if (!once_value_4) {
       fra.me.REG[1] = BOX_NativeString("&quot;");
       REGB1 = TAG_Int(6);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_4 = fra.me.REG[1];
       register_static_object(&once_value_4);
     } else fra.me.REG[1] = once_value_4;
@@ -2209,7 +2283,7 @@ val_t standard___string_search___String___html_escape(val_t p0){
     fra.me.REG[1] = CALL_standard___string_search___String___replace(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
     fra.me.REG[0] = fra.me.REG[1];
   }
-  /* ../lib/standard/string_search.nit:333 */
+  /* ../lib/standard/string_search.nit:337 */
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
index 3b3c118..cc40731 100644 (file)
@@ -73,6 +73,10 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0);
 typedef val_t (*standard___string_search___BM_Pattern___suffixes_t)(val_t p0);
 void standard___string_search___BM_Pattern___compute_gs(val_t p0);
 typedef void (*standard___string_search___BM_Pattern___compute_gs_t)(val_t p0);
+val_t standard___string_search___BM_Pattern___hash(val_t p0);
+typedef val_t (*standard___string_search___BM_Pattern___hash_t)(val_t p0);
+val_t standard___string_search___BM_Pattern_____eqeq(val_t p0, val_t p1);
+typedef val_t (*standard___string_search___BM_Pattern_____eqeq_t)(val_t p0, val_t p1);
 val_t standard___string_search___Match___string(val_t p0);
 typedef val_t (*standard___string_search___Match___string_t)(val_t p0);
 val_t standard___string_search___Match___from(val_t p0);
@@ -108,8 +112,6 @@ val_t standard___string_search___String___replace(val_t p0, val_t p1, val_t p2);
 typedef val_t (*standard___string_search___String___replace_t)(val_t p0, val_t p1, val_t p2);
 val_t standard___string_search___String___html_escape(val_t p0);
 typedef val_t (*standard___string_search___String___html_escape_t)(val_t p0);
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
-val_t NEW_String_standard___string___String___from_cstring(val_t p0);
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3);
 #endif
diff --git a/c_src/standard___time._ffi.c b/c_src/standard___time._ffi.c
new file mode 100644 (file)
index 0000000..c323282
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+       Extern implementation of Nit module time
+*/
+#include "standard___time._ffi.h"
+
+time_t new_TimeT___impl(  )
+{
+#line 34 "../lib/standard/time.nit"
+
+ return time(NULL); }
+
+time_t new_TimeT_from_i___impl( bigint i )
+{
+#line 35 "../lib/standard/time.nit"
+
+ return i; }
+
+void TimeT_update___impl( time_t recv )
+{
+#line 37 "../lib/standard/time.nit"
+
+ time(&recv); }
+
+String TimeT_ctime___impl( time_t recv )
+{
+#line 39 "../lib/standard/time.nit"
+
+
+               return NativeString_to_s_with_copy( ctime(&recv) );
+       }
+
+float TimeT_difftime___impl( time_t recv, time_t start )
+{
+#line 44 "../lib/standard/time.nit"
+
+ return difftime(recv, start); }
+
+bigint TimeT_to_i___impl( time_t recv )
+{
+#line 47 "../lib/standard/time.nit"
+
+ return (int)recv; }
+
+struct tm * new_Tm_gmtime___impl(  )
+{
+#line 52 "../lib/standard/time.nit"
+
+
+               struct tm *tm;
+               time_t t = time(NULL);
+               tm = gmtime(&t);
+               return tm;
+       }
+
+struct tm * new_Tm_gmtime_from_timet___impl( time_t t )
+{
+#line 58 "../lib/standard/time.nit"
+
+
+               struct tm *tm;
+               tm = gmtime(&t);
+               return tm;
+       }
+
+struct tm * new_Tm_localtime___impl(  )
+{
+#line 64 "../lib/standard/time.nit"
+
+
+               struct tm *tm;
+               time_t t = time(NULL);
+               tm = localtime(&t);
+               return tm;
+       }
+
+struct tm * new_Tm_localtime_from_timet___impl( time_t t )
+{
+#line 70 "../lib/standard/time.nit"
+
+
+               struct tm *tm;
+               tm = localtime(&t);
+               return tm;
+       }
+
+time_t Tm_to_timet___impl( struct tm * recv )
+{
+#line 76 "../lib/standard/time.nit"
+
+ return mktime(recv); }
+
+bigint Tm_sec___impl( struct tm * recv )
+{
+#line 78 "../lib/standard/time.nit"
+
+ return recv->tm_sec; }
+
+bigint Tm_min___impl( struct tm * recv )
+{
+#line 79 "../lib/standard/time.nit"
+
+ return recv->tm_min; }
+
+bigint Tm_hour___impl( struct tm * recv )
+{
+#line 80 "../lib/standard/time.nit"
+
+ return recv->tm_hour; }
+
+bigint Tm_mday___impl( struct tm * recv )
+{
+#line 81 "../lib/standard/time.nit"
+
+ return recv->tm_mday; }
+
+bigint Tm_mon___impl( struct tm * recv )
+{
+#line 82 "../lib/standard/time.nit"
+
+ return recv->tm_mon; }
+
+bigint Tm_year___impl( struct tm * recv )
+{
+#line 83 "../lib/standard/time.nit"
+
+ return recv->tm_year; }
+
+bigint Tm_wday___impl( struct tm * recv )
+{
+#line 84 "../lib/standard/time.nit"
+
+ return recv->tm_wday; }
+
+bigint Tm_yday___impl( struct tm * recv )
+{
+#line 85 "../lib/standard/time.nit"
+
+ return recv->tm_yday; }
+
+int Tm_is_dst___impl( struct tm * recv )
+{
+#line 86 "../lib/standard/time.nit"
+
+ return recv->tm_isdst; }
+
+String Tm_asctime___impl( struct tm * recv )
+{
+#line 88 "../lib/standard/time.nit"
+
+
+               return NativeString_to_s_with_copy( asctime(recv) );
+       }
+
+String Tm_strftime___impl( struct tm * recv, String format )
+{
+#line 91 "../lib/standard/time.nit"
+
+
+               char* buf, *c_format;
+               size_t res;
+
+               buf = (char*)malloc(100);
+               c_format = String_to_cstring(format);
+
+               res = strftime(buf, 100, c_format, recv);
+               return NativeString_to_s(buf);
+       }
diff --git a/c_src/standard___time._ffi.h b/c_src/standard___time._ffi.h
new file mode 100644 (file)
index 0000000..f6ee4bf
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+       Extern implementation of Nit module time
+*/
+#include <time._nitni.h>
+
+#ifndef STANDARD___TIME_NIT_H
+#define STANDARD___TIME_NIT_H
+
+
+       #include <time.h>
+time_t new_TimeT___impl(  );
+time_t new_TimeT_from_i___impl( bigint i );
+void TimeT_update___impl( time_t recv );
+String TimeT_ctime___impl( time_t recv );
+float TimeT_difftime___impl( time_t recv, time_t start );
+bigint TimeT_to_i___impl( time_t recv );
+struct tm * new_Tm_gmtime___impl(  );
+struct tm * new_Tm_gmtime_from_timet___impl( time_t t );
+struct tm * new_Tm_localtime___impl(  );
+struct tm * new_Tm_localtime_from_timet___impl( time_t t );
+time_t Tm_to_timet___impl( struct tm * recv );
+bigint Tm_sec___impl( struct tm * recv );
+bigint Tm_min___impl( struct tm * recv );
+bigint Tm_hour___impl( struct tm * recv );
+bigint Tm_mday___impl( struct tm * recv );
+bigint Tm_mon___impl( struct tm * recv );
+bigint Tm_year___impl( struct tm * recv );
+bigint Tm_wday___impl( struct tm * recv );
+bigint Tm_yday___impl( struct tm * recv );
+int Tm_is_dst___impl( struct tm * recv );
+String Tm_asctime___impl( struct tm * recv );
+String Tm_strftime___impl( struct tm * recv, String format );
+#endif
index 5f37e9c..29f3d43 100644 (file)
@@ -7,14 +7,14 @@ val_t standard___time___Object___get_time(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___time;
-  fra.me.line = 19;
+  fra.me.line = 23;
   fra.me.meth = LOCATE_standard___time___Object___get_time;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ../lib/standard/time.nit:19 */
+  /* ../lib/standard/time.nit:23 */
   REGB0 = Object_get_time___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -27,7 +27,7 @@ void standard___time___Sys___nanosleep(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_standard___time;
-  fra.me.line = 24;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_standard___time___Sys___nanosleep;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -36,8 +36,524 @@ void standard___time___Sys___nanosleep(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
-  /* ../lib/standard/time.nit:24 */
+  /* ../lib/standard/time.nit:28 */
   Sys_nanosleep___out(fra.me.REG[0], REGB0, REGB1);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_standard___time___TimeT___init[] = "time::TimeT::init";
+void standard___time___TimeT___init(val_t p0, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___time___TimeT].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 34;
+  fra.me.meth = LOCATE_standard___time___TimeT___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:34 */
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
+  return;
+}
+static const char LOCATE_standard___time___TimeT___from_i[] = "time::TimeT::from_i";
+void standard___time___TimeT___from_i(val_t p0, val_t p1, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___time___TimeT].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos1]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 35;
+  fra.me.meth = LOCATE_standard___time___TimeT___from_i;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ../lib/standard/time.nit:35 */
+  stack_frame_head = fra.me.prev;
+  init_table[itpos1] = 1;
+  return;
+}
+static const char LOCATE_standard___time___TimeT___update[] = "time::TimeT::update";
+void standard___time___TimeT___update(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_standard___time;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_standard___time___TimeT___update;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:37 */
+  TimeT_update___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_standard___time___TimeT___ctime[] = "time::TimeT::ctime";
+val_t standard___time___TimeT___ctime(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_standard___time;
+  fra.me.line = 39;
+  fra.me.meth = LOCATE_standard___time___TimeT___ctime;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:39 */
+  fra.me.REG[0] = TimeT_ctime___out(fra.me.REG[0]);
+  ;
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_standard___time___TimeT___difftime[] = "time::TimeT::difftime";
+val_t standard___time___TimeT___difftime(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 43;
+  fra.me.meth = LOCATE_standard___time___TimeT___difftime;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ../lib/standard/time.nit:43 */
+  fra.me.REG[1] = TimeT_difftime___out(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_standard___time___TimeT___to_s[] = "time::TimeT::(string::Object::to_s)";
+val_t standard___time___TimeT___to_s(val_t p0){
+  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 */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 46;
+  fra.me.meth = LOCATE_standard___time___TimeT___to_s;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:46 */
+  fra.me.REG[0] = CALL_standard___time___TimeT___ctime(fra.me.REG[0])(fra.me.REG[0]);
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("\n");
+    REGB0 = TAG_Int(1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    once_value_1 = fra.me.REG[1];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
+  if (!once_value_2) {
+    fra.me.REG[2] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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];
+  fra.me.REG[2] = CALL_standard___string_search___String___replace(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  goto label3;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_standard___time___TimeT___to_i[] = "time::TimeT::to_i";
+val_t standard___time___TimeT___to_i(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_standard___time;
+  fra.me.line = 47;
+  fra.me.meth = LOCATE_standard___time___TimeT___to_i;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:47 */
+  REGB0 = TimeT_to_i___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___gmtime[] = "time::Tm::gmtime";
+void standard___time___Tm___gmtime(val_t p0, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___time___Tm].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos2]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 52;
+  fra.me.meth = LOCATE_standard___time___Tm___gmtime;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:52 */
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+static const char LOCATE_standard___time___Tm___gmtime_from_timet[] = "time::Tm::gmtime_from_timet";
+void standard___time___Tm___gmtime_from_timet(val_t p0, val_t p1, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___time___Tm].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos3]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 58;
+  fra.me.meth = LOCATE_standard___time___Tm___gmtime_from_timet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ../lib/standard/time.nit:58 */
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
+static const char LOCATE_standard___time___Tm___localtime[] = "time::Tm::localtime";
+void standard___time___Tm___localtime(val_t p0, int* init_table){
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___time___Tm].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos4]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 64;
+  fra.me.meth = LOCATE_standard___time___Tm___localtime;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:64 */
+  stack_frame_head = fra.me.prev;
+  init_table[itpos4] = 1;
+  return;
+}
+static const char LOCATE_standard___time___Tm___localtime_from_timet[] = "time::Tm::localtime_from_timet";
+void standard___time___Tm___localtime_from_timet(val_t p0, val_t p1, int* init_table){
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___time___Tm].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  if (init_table[itpos5]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 70;
+  fra.me.meth = LOCATE_standard___time___Tm___localtime_from_timet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ../lib/standard/time.nit:70 */
+  stack_frame_head = fra.me.prev;
+  init_table[itpos5] = 1;
+  return;
+}
+static const char LOCATE_standard___time___Tm___to_timet[] = "time::Tm::to_timet";
+val_t standard___time___Tm___to_timet(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_standard___time;
+  fra.me.line = 76;
+  fra.me.meth = LOCATE_standard___time___Tm___to_timet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:76 */
+  fra.me.REG[0] = Tm_to_timet___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_standard___time___Tm___sec[] = "time::Tm::sec";
+val_t standard___time___Tm___sec(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_standard___time;
+  fra.me.line = 78;
+  fra.me.meth = LOCATE_standard___time___Tm___sec;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:78 */
+  REGB0 = Tm_sec___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___min[] = "time::Tm::min";
+val_t standard___time___Tm___min(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_standard___time;
+  fra.me.line = 79;
+  fra.me.meth = LOCATE_standard___time___Tm___min;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:79 */
+  REGB0 = Tm_min___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___hour[] = "time::Tm::hour";
+val_t standard___time___Tm___hour(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_standard___time;
+  fra.me.line = 80;
+  fra.me.meth = LOCATE_standard___time___Tm___hour;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:80 */
+  REGB0 = Tm_hour___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___mday[] = "time::Tm::mday";
+val_t standard___time___Tm___mday(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_standard___time;
+  fra.me.line = 81;
+  fra.me.meth = LOCATE_standard___time___Tm___mday;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:81 */
+  REGB0 = Tm_mday___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___mon[] = "time::Tm::mon";
+val_t standard___time___Tm___mon(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_standard___time;
+  fra.me.line = 82;
+  fra.me.meth = LOCATE_standard___time___Tm___mon;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:82 */
+  REGB0 = Tm_mon___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___year[] = "time::Tm::year";
+val_t standard___time___Tm___year(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_standard___time;
+  fra.me.line = 83;
+  fra.me.meth = LOCATE_standard___time___Tm___year;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:83 */
+  REGB0 = Tm_year___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___wday[] = "time::Tm::wday";
+val_t standard___time___Tm___wday(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_standard___time;
+  fra.me.line = 84;
+  fra.me.meth = LOCATE_standard___time___Tm___wday;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:84 */
+  REGB0 = Tm_wday___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___yday[] = "time::Tm::yday";
+val_t standard___time___Tm___yday(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_standard___time;
+  fra.me.line = 85;
+  fra.me.meth = LOCATE_standard___time___Tm___yday;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:85 */
+  REGB0 = Tm_yday___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___is_dst[] = "time::Tm::is_dst";
+val_t standard___time___Tm___is_dst(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_standard___time;
+  fra.me.line = 86;
+  fra.me.meth = LOCATE_standard___time___Tm___is_dst;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:86 */
+  REGB0 = Tm_is_dst___out(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_standard___time___Tm___asctime[] = "time::Tm::asctime";
+val_t standard___time___Tm___asctime(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_standard___time;
+  fra.me.line = 88;
+  fra.me.meth = LOCATE_standard___time___Tm___asctime;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:88 */
+  fra.me.REG[0] = Tm_asctime___out(fra.me.REG[0]);
+  ;
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_standard___time___Tm___strftime[] = "time::Tm::strftime";
+val_t standard___time___Tm___strftime(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 91;
+  fra.me.meth = LOCATE_standard___time___Tm___strftime;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ../lib/standard/time.nit:91 */
+  fra.me.REG[1] = Tm_strftime___out(fra.me.REG[0], fra.me.REG[1]);
+  ;
+  ;
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_standard___time___Tm___to_s[] = "time::Tm::(string::Object::to_s)";
+val_t standard___time___Tm___to_s(val_t p0){
+  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 */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___time;
+  fra.me.line = 102;
+  fra.me.meth = LOCATE_standard___time___Tm___to_s;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/time.nit:102 */
+  fra.me.REG[0] = CALL_standard___time___Tm___asctime(fra.me.REG[0])(fra.me.REG[0]);
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("\n");
+    REGB0 = TAG_Int(1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    once_value_1 = fra.me.REG[1];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
+  if (!once_value_2) {
+    fra.me.REG[2] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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];
+  fra.me.REG[2] = CALL_standard___string_search___String___replace(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  goto label3;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
index 8f08a4b..788ae0f 100644 (file)
 /* This C header file is generated by NIT to compile modules and programs that requires ../lib/standard/time. */
 #ifndef standard___time_sep
 #define standard___time_sep
-#include "standard___kernel._sep.h"
+#include "standard___string_search._sep.h"
 #include <nit_common.h>
 #include "time._nitni.h"
+#include "standard___time._ffi.h"
+
+extern const classtable_elt_t VFT_standard___time___TimeT[];
+struct TBOX_TimeT { const classtable_elt_t * vft; bigint object_id; time_t val;};
+val_t BOX_TimeT(time_t val);
+#define UNBOX_TimeT(x) (((struct TBOX_TimeT *)(VAL2OBJ(x)))->val)
+
+extern const classtable_elt_t VFT_standard___time___Tm[];
+struct TBOX_Tm { const classtable_elt_t * vft; bigint object_id; struct tm * val;};
+val_t BOX_Tm(struct tm * val);
+#define UNBOX_Tm(x) (((struct TBOX_Tm *)(VAL2OBJ(x)))->val)
 extern const char LOCATE_standard___time[];
 extern const int SFT_standard___time[];
 #define CALL_standard___time___Object___get_time(recv) ((standard___time___Object___get_time_t)CALL((recv), (SFT_standard___time[0] + 0)))
 #define CALL_standard___time___Sys___nanosleep(recv) ((standard___time___Sys___nanosleep_t)CALL((recv), (SFT_standard___time[1] + 0)))
+#define ID_standard___time___TimeT (SFT_standard___time[2])
+#define COLOR_standard___time___TimeT (SFT_standard___time[3])
+#define INIT_TABLE_POS_standard___time___TimeT (SFT_standard___time[4] + 0)
+#define CALL_standard___time___TimeT___init(recv) ((standard___time___TimeT___init_t)CALL((recv), (SFT_standard___time[4] + 1)))
+#define CALL_standard___time___TimeT___from_i(recv) ((standard___time___TimeT___from_i_t)CALL((recv), (SFT_standard___time[4] + 2)))
+#define CALL_standard___time___TimeT___update(recv) ((standard___time___TimeT___update_t)CALL((recv), (SFT_standard___time[4] + 3)))
+#define CALL_standard___time___TimeT___ctime(recv) ((standard___time___TimeT___ctime_t)CALL((recv), (SFT_standard___time[4] + 4)))
+#define CALL_standard___time___TimeT___difftime(recv) ((standard___time___TimeT___difftime_t)CALL((recv), (SFT_standard___time[4] + 5)))
+#define CALL_standard___time___TimeT___to_i(recv) ((standard___time___TimeT___to_i_t)CALL((recv), (SFT_standard___time[4] + 6)))
+#define ID_standard___time___Tm (SFT_standard___time[5])
+#define COLOR_standard___time___Tm (SFT_standard___time[6])
+#define INIT_TABLE_POS_standard___time___Tm (SFT_standard___time[7] + 0)
+#define CALL_standard___time___Tm___gmtime(recv) ((standard___time___Tm___gmtime_t)CALL((recv), (SFT_standard___time[7] + 1)))
+#define CALL_standard___time___Tm___gmtime_from_timet(recv) ((standard___time___Tm___gmtime_from_timet_t)CALL((recv), (SFT_standard___time[7] + 2)))
+#define CALL_standard___time___Tm___localtime(recv) ((standard___time___Tm___localtime_t)CALL((recv), (SFT_standard___time[7] + 3)))
+#define CALL_standard___time___Tm___localtime_from_timet(recv) ((standard___time___Tm___localtime_from_timet_t)CALL((recv), (SFT_standard___time[7] + 4)))
+#define CALL_standard___time___Tm___to_timet(recv) ((standard___time___Tm___to_timet_t)CALL((recv), (SFT_standard___time[7] + 5)))
+#define CALL_standard___time___Tm___sec(recv) ((standard___time___Tm___sec_t)CALL((recv), (SFT_standard___time[7] + 6)))
+#define CALL_standard___time___Tm___min(recv) ((standard___time___Tm___min_t)CALL((recv), (SFT_standard___time[7] + 7)))
+#define CALL_standard___time___Tm___hour(recv) ((standard___time___Tm___hour_t)CALL((recv), (SFT_standard___time[7] + 8)))
+#define CALL_standard___time___Tm___mday(recv) ((standard___time___Tm___mday_t)CALL((recv), (SFT_standard___time[7] + 9)))
+#define CALL_standard___time___Tm___mon(recv) ((standard___time___Tm___mon_t)CALL((recv), (SFT_standard___time[7] + 10)))
+#define CALL_standard___time___Tm___year(recv) ((standard___time___Tm___year_t)CALL((recv), (SFT_standard___time[7] + 11)))
+#define CALL_standard___time___Tm___wday(recv) ((standard___time___Tm___wday_t)CALL((recv), (SFT_standard___time[7] + 12)))
+#define CALL_standard___time___Tm___yday(recv) ((standard___time___Tm___yday_t)CALL((recv), (SFT_standard___time[7] + 13)))
+#define CALL_standard___time___Tm___is_dst(recv) ((standard___time___Tm___is_dst_t)CALL((recv), (SFT_standard___time[7] + 14)))
+#define CALL_standard___time___Tm___asctime(recv) ((standard___time___Tm___asctime_t)CALL((recv), (SFT_standard___time[7] + 15)))
+#define CALL_standard___time___Tm___strftime(recv) ((standard___time___Tm___strftime_t)CALL((recv), (SFT_standard___time[7] + 16)))
 val_t standard___time___Object___get_time(val_t p0);
 typedef val_t (*standard___time___Object___get_time_t)(val_t p0);
 void standard___time___Sys___nanosleep(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___time___Sys___nanosleep_t)(val_t p0, val_t p1, val_t p2);
 val_t NEW_Sys_standard___kernel___Sys___init();
+void standard___time___TimeT___init(val_t p0, int* init_table);
+typedef void (*standard___time___TimeT___init_t)(val_t p0, int* init_table);
+val_t NEW_TimeT_standard___time___TimeT___init();
+void standard___time___TimeT___from_i(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___time___TimeT___from_i_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_TimeT_standard___time___TimeT___from_i(val_t p0);
+void standard___time___TimeT___update(val_t p0);
+typedef void (*standard___time___TimeT___update_t)(val_t p0);
+val_t standard___time___TimeT___ctime(val_t p0);
+typedef val_t (*standard___time___TimeT___ctime_t)(val_t p0);
+val_t standard___time___TimeT___difftime(val_t p0, val_t p1);
+typedef val_t (*standard___time___TimeT___difftime_t)(val_t p0, val_t p1);
+val_t standard___time___TimeT___to_s(val_t p0);
+typedef val_t (*standard___time___TimeT___to_s_t)(val_t p0);
+val_t standard___time___TimeT___to_i(val_t p0);
+typedef val_t (*standard___time___TimeT___to_i_t)(val_t p0);
+void standard___time___Tm___gmtime(val_t p0, int* init_table);
+typedef void (*standard___time___Tm___gmtime_t)(val_t p0, int* init_table);
+val_t NEW_Tm_standard___time___Tm___gmtime();
+void standard___time___Tm___gmtime_from_timet(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___time___Tm___gmtime_from_timet_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_Tm_standard___time___Tm___gmtime_from_timet(val_t p0);
+void standard___time___Tm___localtime(val_t p0, int* init_table);
+typedef void (*standard___time___Tm___localtime_t)(val_t p0, int* init_table);
+val_t NEW_Tm_standard___time___Tm___localtime();
+void standard___time___Tm___localtime_from_timet(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___time___Tm___localtime_from_timet_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_Tm_standard___time___Tm___localtime_from_timet(val_t p0);
+val_t standard___time___Tm___to_timet(val_t p0);
+typedef val_t (*standard___time___Tm___to_timet_t)(val_t p0);
+val_t standard___time___Tm___sec(val_t p0);
+typedef val_t (*standard___time___Tm___sec_t)(val_t p0);
+val_t standard___time___Tm___min(val_t p0);
+typedef val_t (*standard___time___Tm___min_t)(val_t p0);
+val_t standard___time___Tm___hour(val_t p0);
+typedef val_t (*standard___time___Tm___hour_t)(val_t p0);
+val_t standard___time___Tm___mday(val_t p0);
+typedef val_t (*standard___time___Tm___mday_t)(val_t p0);
+val_t standard___time___Tm___mon(val_t p0);
+typedef val_t (*standard___time___Tm___mon_t)(val_t p0);
+val_t standard___time___Tm___year(val_t p0);
+typedef val_t (*standard___time___Tm___year_t)(val_t p0);
+val_t standard___time___Tm___wday(val_t p0);
+typedef val_t (*standard___time___Tm___wday_t)(val_t p0);
+val_t standard___time___Tm___yday(val_t p0);
+typedef val_t (*standard___time___Tm___yday_t)(val_t p0);
+val_t standard___time___Tm___is_dst(val_t p0);
+typedef val_t (*standard___time___Tm___is_dst_t)(val_t p0);
+val_t standard___time___Tm___asctime(val_t p0);
+typedef val_t (*standard___time___Tm___asctime_t)(val_t p0);
+val_t standard___time___Tm___strftime(val_t p0, val_t p1);
+typedef val_t (*standard___time___Tm___strftime_t)(val_t p0, val_t p1);
+val_t standard___time___Tm___to_s(val_t p0);
+typedef val_t (*standard___time___Tm___to_s_t)(val_t p0);
 #endif
index 7aef628..6c9f8b7 100644 (file)
@@ -1,5 +1,15 @@
 #include "string._nitni.h"
 #include "string_nit.h"
+/* out/indirect function for string::Int::native_int_to_s */
+val_t Int_native_int_to_s___out( val_t recv, val_t len )
+{
+char * orig_return;
+val_t trans_return;
+orig_return = native_int_to_s( UNTAG_Int(recv), UNTAG_Int(len) );
+trans_return = BOX_NativeString(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
 /* out/indirect function for string::Float::to_precision_native */
 val_t Float_to_precision_native___out( val_t recv, val_t nb )
 {
@@ -27,38 +37,18 @@ trans_return = BOX_Float(orig_return);
 nitni_local_ref_clean(  );
 return trans_return;
 }
-/* out/indirect function for string::Sys::native_argc */
-val_t Sys_native_argc___out( val_t recv )
-{
-bigint orig_return;
-val_t trans_return;
-orig_return = kernel_Sys_Sys_native_argc_0( NULL );
-trans_return = TAG_Int(orig_return);
-nitni_local_ref_clean(  );
-return trans_return;
-}
-/* out/indirect function for string::Sys::native_argv */
-val_t Sys_native_argv___out( val_t recv, val_t i )
-{
-char * orig_return;
-val_t trans_return;
-orig_return = kernel_Sys_Sys_native_argv_1( NULL, UNTAG_Int(i) );
-trans_return = BOX_NativeString(orig_return);
-nitni_local_ref_clean(  );
-return trans_return;
-}
-/* friendly for string::String::from_cstring */
-String string_new_String_from_cstring( char * str )
+/* friendly for string::NativeString::(string::Object::to_s) */
+String string_NativeString_to_s( char * recv )
 {
-val_t trans___str;
+val_t trans_recv;
 val_t orig_return;
 String trans_return;
-trans___str = BOX_NativeString(str);
+trans_recv = BOX_NativeString(recv);
 trans_return = malloc( sizeof( struct s_String ) );
 trans_return->ref.val = NIT_NULL;
 trans_return->ref.count = 0;
 nitni_local_ref_add( (struct nitni_ref *)trans_return );
-orig_return = NEW_String_standard___string___String___from_cstring( trans___str );
+orig_return = CALL_standard___string___Object___to_s( trans_recv )( trans_recv );
 trans_return->ref.val = orig_return;
 return trans_return;
 }
index 6ae8fc8..e3fbb14 100644 (file)
@@ -12,32 +12,20 @@ typedef struct s_String *String;
 #define String_incr_ref( x ) nitni_global_ref_incr( (struct nitni_ref*)(x) )
 #define String_decr_ref( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )
 #endif
-#ifndef SYS_TYPE
-#define SYS_TYPE
-struct s_Sys{
-               struct nitni_ref ref; /* real ref struct, must be first */
-};
-typedef struct s_Sys *Sys;
-#define Sys_incr_ref( x ) nitni_global_ref_incr( (struct nitni_ref*)(x) )
-#define Sys_decr_ref( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )
-#endif
 #include "string_nit.h"
 #include <standard___string._ffi.h>
 
+/* out/indirect function for string::Int::native_int_to_s */
+val_t Int_native_int_to_s___out( val_t recv, val_t len );
+
 /* out/indirect function for string::Float::to_precision_native */
 val_t Float_to_precision_native___out( val_t recv, val_t nb );
 
 /* out/indirect function for string::NativeString::atof */
 val_t NativeString_atof___out( val_t recv );
-
-/* out/indirect function for string::Sys::native_argc */
-val_t Sys_native_argc___out( val_t recv );
-
-/* out/indirect function for string::Sys::native_argv */
-val_t Sys_native_argv___out( val_t recv, val_t i );
-/* friendly for string::String::from_cstring */
-String string_new_String_from_cstring( char * str );
-#ifndef new_String_from_cstring
-#define new_String_from_cstring string_new_String_from_cstring
+/* friendly for string::NativeString::(string::Object::to_s) */
+String string_NativeString_to_s( char * recv );
+#ifndef NativeString_to_s
+#define NativeString_to_s string_NativeString_to_s
 #endif
 #endif
index 747df8c..15979dc 100644 (file)
@@ -1,7 +1,5 @@
 /* This file is part of NIT ( http://www.nitlanguage.org ).
  *
- * Copyright 2012 Alexis Laferrière <alexis.laf@xymus.net>
- *
  * This file is free software, which comes along with NIT.  This software is
  * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  * without  even  the implied warranty of  MERCHANTABILITY or  FITNESS FOR A
  */
 
 #include "string_nit.h"
+
+// Integer to NativeString method
+char* native_int_to_s(int recv, int len){
+       char* str = malloc(len + 1);
+       sprintf(str, "%d", recv);
+       return str;
+}
index 5653f27..a6cf69a 100644 (file)
@@ -1,19 +1,18 @@
 #ifndef __STRING_NIT_H
 #define __STRING_NIT_H
+#include <stdio.h>
+#include <stdlib.h>
 /* This file is part of NIT ( http://www.nitlanguage.org ).
  *
- * Copyright 2004-2008 Jean Privat <jean@pryen.org>
- *
  * This file is free software, which comes along with NIT.  This software is
  * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without  even  the implied warranty of  MERCHANTABILITY or  FITNESS FOR A 
+ * without  even  the implied warranty of  MERCHANTABILITY or  FITNESS FOR A
  * PARTICULAR PURPOSE.  You can modify it is you want,  provided this header
  * is kept unaltered, and a notification of the changes is added.
  * You  are  allowed  to  redistribute it and sell it, alone or is a part of
  * another product.
  */
 
-#define kernel_Sys_Sys_native_argc_0(self) (glob_argc)
-#define kernel_Sys_Sys_native_argv_1(self, p0) (glob_argv[(p0)])
+char* native_int_to_s(int recv, int len);
 
 #endif
index a51d6e4..edef6da 100644 (file)
@@ -15,10 +15,8 @@ extern const int SFT_symbol[];
 #define CALL_symbol___Symbol___init(recv) ((symbol___Symbol___init_t)CALL((recv), (SFT_symbol[4] + 1)))
 val_t symbol___String___to_symbol(val_t p0);
 typedef val_t (*symbol___String___to_symbol_t)(val_t p0);
-val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
-val_t NEW_String_standard___string___String___from_cstring(val_t p0);
 val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
-val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
+val_t NEW_String_standard___string___String___with_infos(val_t p0, val_t p1, val_t p2, val_t p3);
 val_t symbol___Symbol___to_s(val_t p0);
 typedef val_t (*symbol___Symbol___to_s_t)(val_t p0);
 void symbol___Symbol___init(val_t p0, val_t p1, int* init_table);
index 42c6ba0..07e6c6c 100644 (file)
@@ -19,7 +19,7 @@ val_t syntax___SrcModuleLoader___file_type(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("nit");
     REGB0 = TAG_Int(3);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -76,7 +76,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* syntax/syntax.nit:37 */
   if (UNTAG_Bool(REGB1)) {
@@ -106,7 +106,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
     if (!once_value_4) {
       fra.me.REG[7] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
       once_value_4 = fra.me.REG[7];
       register_static_object(&once_value_4);
     } else fra.me.REG[7] = once_value_4;
@@ -116,7 +116,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
     if (!once_value_5) {
       fra.me.REG[7] = BOX_NativeString(": Error module name \"");
       REGB1 = TAG_Int(21);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
       once_value_5 = fra.me.REG[7];
       register_static_object(&once_value_5);
     } else fra.me.REG[7] = once_value_5;
@@ -127,7 +127,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString("\", must start with a lower case letter and contain only letters, digits and '_'.");
       REGB1 = TAG_Int(80);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
@@ -236,7 +236,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* syntax/syntax.nit:38 */
         REGB2 = REGB1;
@@ -292,7 +292,7 @@ void syntax___SrcModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("Syntax analysis for module: ");
     REGB0 = TAG_Int(28);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
   } else fra.me.REG[3] = once_value_1;
@@ -304,7 +304,7 @@ void syntax___SrcModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_2 = fra.me.REG[3];
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
index 18ccda0..f616b79 100644 (file)
@@ -342,7 +342,7 @@ val_t syntax___extern_inline___TExternCodeSegment___code(val_t p0){
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   /* syntax/extern_inline.nit:50 */
   REGB2 = TAG_Int(4);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
   /* syntax/extern_inline.nit:50 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
@@ -406,7 +406,7 @@ val_t syntax___extern_inline___AExternCodeBlock___to_extern_code(val_t p0){
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     /* syntax/extern_inline.nit:62 */
     REGB2 = TAG_Int(2);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
     /* syntax/extern_inline.nit:62 */
     fra.me.REG[2] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB0, REGB2);
@@ -478,7 +478,7 @@ void syntax___extern_inline___AExternPropdef___accept_property_verifier(val_t p0
       if (!once_value_1) {
         fra.me.REG[4] = BOX_NativeString("Cannot implement the non extern method ");
         REGB0 = TAG_Int(39);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_1 = fra.me.REG[4];
         register_static_object(&once_value_1);
       } else fra.me.REG[4] = once_value_1;
@@ -490,7 +490,7 @@ void syntax___extern_inline___AExternPropdef___accept_property_verifier(val_t p0
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString(" with extern code");
         REGB0 = TAG_Int(17);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -574,7 +574,7 @@ void syntax___extern_inline___AStdClassdef___accept_property_verifier(val_t p0,
       if (!once_value_1) {
         fra.me.REG[4] = BOX_NativeString("Cannot define an extern equivalent in the non extern class ");
         REGB0 = TAG_Int(59);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_1 = fra.me.REG[4];
         register_static_object(&once_value_1);
       } else fra.me.REG[4] = once_value_1;
@@ -587,7 +587,7 @@ void syntax___extern_inline___AStdClassdef___accept_property_verifier(val_t p0,
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
index 5be0a25..1734cfe 100644 (file)
@@ -236,7 +236,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("Pointer");
       REGB0 = TAG_Int(7);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -257,7 +257,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString("C");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -265,7 +265,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("void*");
       REGB0 = TAG_Int(5);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_5 = fra.me.REG[2];
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
@@ -286,18 +286,18 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
   /* syntax/extern_type_inheritance.nit:64 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -311,16 +311,16 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* syntax/extern_type_inheritance.nit:65 */
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
@@ -330,14 +330,14 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
         fra.me.REG[5] = CALL_syntax___extern_type_inheritance___MMLocalClass___extern_type_origin(fra.me.REG[5])(fra.me.REG[5]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -350,7 +350,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* syntax/extern_type_inheritance.nit:71 */
   if (UNTAG_Bool(REGB1)) {
@@ -361,7 +361,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     if (!once_value_7) {
       fra.me.REG[5] = BOX_NativeString("Error: Extern class ");
       REGB1 = TAG_Int(20);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
       once_value_7 = fra.me.REG[5];
       register_static_object(&once_value_7);
     } else fra.me.REG[5] = once_value_7;
@@ -373,7 +373,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     if (!once_value_8) {
       fra.me.REG[5] = BOX_NativeString("::");
       REGB1 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
       once_value_8 = fra.me.REG[5];
       register_static_object(&once_value_8);
     } else fra.me.REG[5] = once_value_8;
@@ -385,7 +385,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     if (!once_value_9) {
       fra.me.REG[5] = BOX_NativeString(" has ambiguous extern type, found in super classes: \n");
       REGB1 = TAG_Int(53);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
       once_value_9 = fra.me.REG[5];
       register_static_object(&once_value_9);
     } else fra.me.REG[5] = once_value_9;
@@ -404,7 +404,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB0 = TAG_Bool((REGB1)==(REGB0));
       /* syntax/extern_type_inheritance.nit:75 */
       REGB2 = REGB0;
@@ -460,7 +460,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
       if (!once_value_11) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_11 = fra.me.REG[3];
         register_static_object(&once_value_11);
       } else fra.me.REG[3] = once_value_11;
@@ -476,7 +476,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
       if (!once_value_12) {
         fra.me.REG[3] = BOX_NativeString(" from ");
         REGB0 = TAG_Int(7);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_12 = fra.me.REG[3];
         register_static_object(&once_value_12);
       } else fra.me.REG[3] = once_value_12;
@@ -487,7 +487,7 @@ val_t syntax___extern_type_inheritance___MMLocalClass___extern_type(val_t p0){
       if (!once_value_13) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_13 = fra.me.REG[0];
         register_static_object(&once_value_13);
       } else fra.me.REG[0] = once_value_13;
index 99e23bb..a3244ee 100644 (file)
@@ -45,7 +45,7 @@ void syntax___flow___FlowContext___check_is_set(val_t p0, val_t p1, val_t p2){
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Error: variable '");
       REGB0 = TAG_Int(17);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -56,7 +56,7 @@ void syntax___flow___FlowContext___check_is_set(val_t p0, val_t p1, val_t p2){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("' is possibly unset.");
       REGB0 = TAG_Int(20);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -200,20 +200,20 @@ val_t syntax___flow___FlowContext___merge(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[3] = fra.me.REG[2];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -227,16 +227,16 @@ val_t syntax___flow___FlowContext___merge(val_t p0, val_t p1, val_t p2){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* syntax/flow.nit:76 */
       REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
@@ -245,14 +245,14 @@ val_t syntax___flow___FlowContext___merge(val_t p0, val_t p1, val_t p2){
       } else {
         nit_abort("Assert failed", NULL, LOCATE_syntax___flow, 76);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -269,7 +269,7 @@ val_t syntax___flow___FlowContext___merge(val_t p0, val_t p1, val_t p2){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/flow.nit:77 */
     REGB2 = REGB1;
@@ -907,18 +907,18 @@ val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 227);
   }
   fra.me.REG[4] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -932,16 +932,16 @@ val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
       /* syntax/flow.nit:228 */
       fra.me.REG[6] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
@@ -1032,14 +1032,14 @@ val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
         fra.me.REG[2] = fra.me.REG[6];
       }
       label2: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -1131,18 +1131,18 @@ val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 260);
     }
     fra.me.REG[3] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1156,16 +1156,16 @@ val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* syntax/flow.nit:261 */
         fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
@@ -1188,14 +1188,14 @@ val_t syntax___flow___MergeFlowContext___merge_stype(val_t p0, val_t p1){
           fra.me.REG[7] = fra.me.REG[4];
           goto label1;
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label4;
       }
     }
@@ -1250,18 +1250,18 @@ val_t syntax___flow___MergeFlowContext___is_set(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_alts", LOCATE_syntax___flow, 275);
     }
     fra.me.REG[2] = ATTR_syntax___flow___MergeFlowContext____alts(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB1 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB1 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -1275,16 +1275,16 @@ val_t syntax___flow___MergeFlowContext___is_set(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
         /* syntax/flow.nit:276 */
         REGB2 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
@@ -1295,14 +1295,14 @@ val_t syntax___flow___MergeFlowContext___is_set(val_t p0, val_t p1){
           REGB0 = REGB2;
           goto label1;
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = REGB2;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label2;
       }
     }
index 4410876..55dc342 100644 (file)
@@ -48,7 +48,7 @@ void syntax___icode_generation___A2IContext___stmt(val_t p0, val_t p1){
   } else {
     /* syntax/icode_generation.nit:32 */
     fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[3] = CALL_parser___parser_prod___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[3] = CALL_parser___parser_nodes___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -65,7 +65,7 @@ void syntax___icode_generation___A2IContext___stmt(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB0)) {
       /* syntax/icode_generation.nit:33 */
       fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[2])(fra.me.REG[2]);
-      fra.me.REG[3] = CALL_parser___parser_prod___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
+      fra.me.REG[3] = CALL_parser___parser_nodes___Visitor___current_node(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_syntax___icode_generation, 33);
@@ -108,7 +108,7 @@ val_t syntax___icode_generation___A2IContext___add_new_array(val_t p0, val_t p1,
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("with_capacity");
       REGB1 = TAG_Int(13);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -167,7 +167,7 @@ void syntax___icode_generation___A2IContext___add_call_array_add(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("add");
       REGB0 = TAG_Int(3);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -554,23 +554,23 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
         nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 109);
       }
       fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -578,26 +578,26 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label2;
       label2: while(0);
       /* syntax/icode_generation.nit:109 */
@@ -617,7 +617,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       if (UNTAG_Bool(REGB2)) {
         /* syntax/icode_generation.nit:110 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
         /* syntax/icode_generation.nit:110 */
         REGB0 = REGB2;
@@ -629,7 +629,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
     label3: while(0);
     /* syntax/icode_generation.nit:112 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
     /* syntax/icode_generation.nit:112 */
     REGB0 = REGB2;
@@ -640,23 +640,23 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
         nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 114);
       }
       fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB2 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -664,26 +664,26 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label4;
       label4: while(0);
       /* syntax/icode_generation.nit:114 */
@@ -703,7 +703,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       if (UNTAG_Bool(REGB2)) {
         /* syntax/icode_generation.nit:115 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
         /* syntax/icode_generation.nit:115 */
         REGB1 = REGB2;
@@ -715,7 +715,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
     label5: while(0);
     /* syntax/icode_generation.nit:117 */
     REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:238 */
+    /* ../lib/standard/kernel.nit:245 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
     /* syntax/icode_generation.nit:117 */
     REGB1 = REGB2;
@@ -740,7 +740,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   /* syntax/icode_generation.nit:120 */
   if (UNTAG_Bool(REGB2)) {
@@ -750,21 +750,21 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 121);
     }
     fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Int(0);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -772,26 +772,26 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     } else {
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Bool(0);
       REGB2 = REGB3;
     }
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
     }
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
     }
-    /* ../lib/standard/collection/array.nit:724 */
+    /* ../lib/standard/collection/array.nit:725 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
-    /* ../lib/standard/collection/array.nit:281 */
+    /* ../lib/standard/collection/array.nit:282 */
     goto label6;
     label6: while(0);
     /* syntax/icode_generation.nit:121 */
@@ -817,7 +817,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* syntax/icode_generation.nit:124 */
     if (UNTAG_Bool(REGB2)) {
@@ -827,23 +827,23 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
         nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 125);
       }
       fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -851,26 +851,26 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label7;
       label7: while(0);
       /* syntax/icode_generation.nit:126 */
@@ -896,7 +896,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB3 = TAG_Bool((REGB2)==(REGB3));
         /* syntax/icode_generation.nit:128 */
         REGB4 = REGB3;
@@ -918,7 +918,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
       /* syntax/icode_generation.nit:136 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
       /* syntax/icode_generation.nit:136 */
       REGB0 = REGB4;
@@ -1374,7 +1374,7 @@ void syntax___icode_generation___MMSrcAttribute___generate_iroutine(val_t p0, va
     CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
     /* syntax/icode_generation.nit:206 */
     fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
     /* syntax/icode_generation.nit:207 */
     CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
     /* syntax/icode_generation.nit:208 */
@@ -1589,7 +1589,7 @@ void syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine(val_t
   /* syntax/icode_generation.nit:253 */
   fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1636,24 +1636,24 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* syntax/icode_generation.nit:262 */
   fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
   /* syntax/icode_generation.nit:263 */
   fra.me.REG[4] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1667,16 +1667,16 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* syntax/icode_generation.nit:264 */
       REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
@@ -1703,32 +1703,32 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
         /* syntax/icode_generation.nit:269 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:350 */
+        /* ../lib/standard/kernel.nit:399 */
         REGB3 = REGB1;
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB4)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB4)) {
             /* syntax/icode_generation.nit:269 */
             REGB4 = REGB2;
             /* syntax/icode_generation.nit:270 */
             fra.me.REG[9] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB2 = REGB4;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label1;
           }
         }
@@ -1741,54 +1741,54 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
         fra.me.REG[7] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[6], fra.me.REG[7]);
         CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label2;
     }
   }
   label2: while(0);
   /* syntax/icode_generation.nit:277 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/kernel.nit:350 */
+  /* ../lib/standard/kernel.nit:399 */
   REGB2 = REGB1;
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB3)) {
       /* syntax/icode_generation.nit:277 */
       REGB3 = REGB2;
       /* syntax/icode_generation.nit:278 */
       fra.me.REG[5] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB5 = TAG_Int(0);
       REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB6)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
@@ -1796,40 +1796,40 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB6 = TAG_Bool(0);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
       REGB5 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB4)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label3;
       label3: while(0);
       /* syntax/icode_generation.nit:279 */
       fra.me.REG[4] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB3);
       fra.me.REG[4] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = REGB3;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
@@ -1885,10 +1885,9 @@ val_t syntax___icode_generation___A2IVisitor___icode_ctx(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-static const char LOCATE_syntax___icode_generation___A2IVisitor___visit[] = "icode_generation::A2IVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___icode_generation___A2IVisitor___visit[] = "icode_generation::A2IVisitor::(parser_nodes::Visitor::visit)";
 void syntax___icode_generation___A2IVisitor___visit(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_syntax___icode_generation;
@@ -1902,10 +1901,6 @@ void syntax___icode_generation___A2IVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/icode_generation.nit:288 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 288);
-  }
   CALL_syntax___icode_generation___ANode___accept_icode_generation(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2104,16 +2099,16 @@ void syntax___icode_generation___ASignature___fill_iroutine_parameters(val_t p0,
   REGB0 = TAG_Int(0);
   fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_closure_decls(fra.me.REG[5])(fra.me.REG[5]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* syntax/icode_generation.nit:335 */
       REGB2 = REGB0;
@@ -2129,14 +2124,14 @@ void syntax___icode_generation___ASignature___fill_iroutine_parameters(val_t p0,
       }
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label2;
     }
   }
@@ -2374,23 +2369,23 @@ void syntax___icode_generation___AConcreteMethPropdef___fill_iroutine(val_t p0,
   fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/icode_generation.nit:373 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:278 */
+  /* ../lib/standard/collection/array.nit:279 */
   fra.me.REG[5] = fra.me.REG[3];
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:280 */
+  /* ../lib/standard/collection/array.nit:281 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -2398,26 +2393,26 @@ void syntax___icode_generation___AConcreteMethPropdef___fill_iroutine(val_t p0,
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ../lib/standard/collection/array.nit:280 */
+    /* ../lib/standard/collection/array.nit:281 */
     REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
   }
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
   }
-  /* ../lib/standard/collection/array.nit:724 */
+  /* ../lib/standard/collection/array.nit:725 */
   fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:281 */
+  /* ../lib/standard/collection/array.nit:282 */
   goto label1;
   label1: while(0);
   /* syntax/icode_generation.nit:373 */
@@ -2612,13 +2607,13 @@ void syntax___icode_generation___AExternInitPropdef___fill_iroutine(val_t p0, va
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
   REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* syntax/icode_generation.nit:418 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
     /* syntax/icode_generation.nit:418 */
     REGB1 = REGB2;
@@ -2668,7 +2663,7 @@ void syntax___icode_generation___ADeferredMethPropdef___fill_iroutine(val_t p0,
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("Deferred method called");
     REGB0 = TAG_Int(22);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -3211,7 +3206,7 @@ val_t syntax___icode_generation___AAbortExpr___generate_icode(val_t p0, val_t p1
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Aborted");
     REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -3548,7 +3543,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
         if (!once_value_2) {
           fra.me.REG[7] = BOX_NativeString("enumerate_to");
           REGB0 = TAG_Int(12);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
           once_value_2 = fra.me.REG[7];
           register_static_object(&once_value_2);
         } else fra.me.REG[7] = once_value_2;
@@ -3572,7 +3567,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[6] = BOX_NativeString("enumerate_before");
           REGB0 = TAG_Int(16);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_4 = fra.me.REG[6];
           register_static_object(&once_value_4);
         } else fra.me.REG[6] = once_value_4;
@@ -3592,7 +3587,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
       if (!once_value_6) {
         fra.me.REG[4] = BOX_NativeString("iterate");
         REGB0 = TAG_Int(7);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_6 = fra.me.REG[4];
         register_static_object(&once_value_6);
       } else fra.me.REG[4] = once_value_6;
@@ -3680,38 +3675,38 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* syntax/icode_generation.nit:667 */
       REGB2 = REGB0;
       /* syntax/icode_generation.nit:668 */
       fra.me.REG[8] = CALL_syntax___syntax_base___AForExpr___variables(fra.me.REG[0])(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB3 = REGB2;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -3719,26 +3714,26 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
       REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label7;
       label7: while(0);
       /* syntax/icode_generation.nit:668 */
@@ -3747,14 +3742,14 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
       fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[8], fra.me.REG[2]);
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label8;
     }
   }
@@ -3837,7 +3832,7 @@ val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Assert failed");
       REGB0 = TAG_Int(13);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -3851,7 +3846,7 @@ val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("Assert '%s' failed");
       REGB0 = TAG_Int(18);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -4544,35 +4539,35 @@ val_t syntax___icode_generation___AStringFormExpr___generate_icode(val_t p0, val
   fra.me.REG[4] = CALL_icode___icode_base___IOnce___body(fra.me.REG[4])(fra.me.REG[4]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/icode_generation.nit:919 */
-  fra.me.REG[4] = ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_nativestring(fra.me.REG[4])(fra.me.REG[4]);
+  /* syntax/icode_generation.nit:920 */
+  fra.me.REG[6] = ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 919);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 920);
   }
-  fra.me.REG[4] = NEW_IStringValue_icode___icode_base___IStringValue___init(fra.me.REG[4]);
-  fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_nativestring(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
-  /* syntax/icode_generation.nit:920 */
-  fra.me.REG[4] = ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  fra.me.REG[6] = NEW_IStringValue_icode___icode_base___IStringValue___init(fra.me.REG[6]);
+  fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[4]);
+  /* syntax/icode_generation.nit:921 */
+  fra.me.REG[0] = ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 920);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 921);
   }
-  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[4]);
-  fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[6])(fra.me.REG[6]);
-  fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:921 */
-  fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[7] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[0]);
+  fra.me.REG[7] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[7])(fra.me.REG[7]);
+  fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
+  /* syntax/icode_generation.nit:922 */
+  fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_1) {
     if (!once_value_2) {
-      fra.me.REG[8] = BOX_NativeString("with_native");
-      REGB0 = TAG_Int(11);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      fra.me.REG[8] = BOX_NativeString("to_s_with_length");
+      REGB0 = TAG_Int(16);
+      fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
       once_value_2 = fra.me.REG[8];
       register_static_object(&once_value_2);
     } else fra.me.REG[8] = once_value_2;
@@ -4582,21 +4577,20 @@ val_t syntax___icode_generation___AStringFormExpr___generate_icode(val_t p0, val
     register_static_object(&once_value_1);
   } else fra.me.REG[8] = once_value_1;
   fra.me.REG[8] = fra.me.REG[8];
-  fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7], fra.me.REG[8]);
-  /* syntax/icode_generation.nit:922 */
-  fra.me.REG[7] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[8]);
+  /* syntax/icode_generation.nit:923 */
   REGB0 = TAG_Int(2);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  fra.me.REG[4] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[7], fra.me.REG[8], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+  fra.me.REG[4] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:923 */
-  CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[2]);
   /* syntax/icode_generation.nit:924 */
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[2]);
   /* syntax/icode_generation.nit:925 */
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* syntax/icode_generation.nit:926 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -4608,13 +4602,13 @@ val_t syntax___icode_generation___AStringFormExpr___string_text(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 928;
+  fra.me.line = 929;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   fra.me.nitni_local_ref_head = NULL;
-  /* syntax/icode_generation.nit:928 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 928);
+  /* syntax/icode_generation.nit:929 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 929);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4630,7 +4624,7 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 937;
+  fra.me.line = 938;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___compute_string_infos;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4639,7 +4633,7 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* syntax/icode_generation.nit:940 */
+  /* syntax/icode_generation.nit:941 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStringFormExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:24 */
@@ -4649,16 +4643,16 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* syntax/icode_generation.nit:941 */
+  /* syntax/icode_generation.nit:942 */
   REGB1 = TAG_Int(6);
   REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
   if (UNTAG_Bool(REGB2)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* syntax/icode_generation.nit:941 */
+  /* syntax/icode_generation.nit:942 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Int(0);
     REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
@@ -4667,9 +4661,9 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:381 */
+      /* ../lib/standard/kernel.nit:434 */
       REGB0 = TAG_Bool((REGB1)==(REGB0));
-      /* syntax/icode_generation.nit:941 */
+      /* syntax/icode_generation.nit:942 */
       REGB2 = REGB0;
     }
   } else {
@@ -4677,7 +4671,7 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
     REGB2 = REGB0;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:942 */
+    /* syntax/icode_generation.nit:943 */
     REGB2 = TAG_Int(3);
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -4686,15 +4680,15 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* syntax/icode_generation.nit:942 */
+    /* syntax/icode_generation.nit:943 */
     REGB1 = TAG_Int(6);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-    /* syntax/icode_generation.nit:942 */
+    /* syntax/icode_generation.nit:943 */
     fra.me.REG[2] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB2, REGB1);
     fra.me.REG[1] = fra.me.REG[2];
   } else {
-    /* syntax/icode_generation.nit:944 */
+    /* syntax/icode_generation.nit:945 */
     REGB1 = TAG_Int(1);
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -4703,21 +4697,21 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
       nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* syntax/icode_generation.nit:944 */
+    /* syntax/icode_generation.nit:945 */
     REGB0 = TAG_Int(2);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-    /* syntax/icode_generation.nit:944 */
+    /* syntax/icode_generation.nit:945 */
     fra.me.REG[2] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB1, REGB0);
     fra.me.REG[1] = fra.me.REG[2];
   }
-  /* syntax/icode_generation.nit:946 */
-  fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
   /* syntax/icode_generation.nit:947 */
-  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
   /* syntax/icode_generation.nit:948 */
-  REGB1 = TAG_Int(0);
+  REGB0 = TAG_Int(0);
   /* syntax/icode_generation.nit:949 */
+  REGB1 = TAG_Int(0);
+  /* syntax/icode_generation.nit:950 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -4731,39 +4725,39 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* syntax/icode_generation.nit:949 */
+    /* syntax/icode_generation.nit:950 */
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:950 */
-      REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
       /* syntax/icode_generation.nit:951 */
+      REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+      /* syntax/icode_generation.nit:952 */
       REGB3 = TAG_Char('\\');
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ../lib/standard/kernel.nit:381 */
+        /* ../lib/standard/kernel.nit:434 */
         REGB3 = TAG_Bool((REGB2)==(REGB3));
-        /* syntax/icode_generation.nit:951 */
+        /* syntax/icode_generation.nit:952 */
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
-        /* syntax/icode_generation.nit:952 */
+        /* syntax/icode_generation.nit:953 */
         REGB4 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-        /* syntax/icode_generation.nit:952 */
-        REGB1 = REGB4;
         /* syntax/icode_generation.nit:953 */
-        REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+        REGB1 = REGB4;
         /* syntax/icode_generation.nit:954 */
+        REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+        /* syntax/icode_generation.nit:955 */
         REGB3 = TAG_Char('{');
         REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
         if (UNTAG_Bool(REGB5)) {
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB3 = TAG_Bool((REGB4)==(REGB3));
-          /* syntax/icode_generation.nit:954 */
+          /* syntax/icode_generation.nit:955 */
           REGB5 = REGB3;
         }
         REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
@@ -4772,9 +4766,9 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB5 = TAG_Bool((REGB4)==(REGB5));
-            /* syntax/icode_generation.nit:954 */
+            /* syntax/icode_generation.nit:955 */
             REGB3 = REGB5;
           }
           REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -4783,71 +4777,71 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
           REGB3 = REGB5;
         }
         if (UNTAG_Bool(REGB3)) {
-          /* syntax/icode_generation.nit:955 */
+          /* syntax/icode_generation.nit:956 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
         }
-        /* syntax/icode_generation.nit:957 */
+        /* syntax/icode_generation.nit:958 */
         REGB2 = REGB4;
       } else {
-        /* syntax/icode_generation.nit:958 */
+        /* syntax/icode_generation.nit:959 */
         REGB4 = TAG_Char('"');
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB4 = TAG_Bool((REGB2)==(REGB4));
-          /* syntax/icode_generation.nit:958 */
+          /* syntax/icode_generation.nit:959 */
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
-          /* syntax/icode_generation.nit:959 */
+          /* syntax/icode_generation.nit:960 */
           REGB3 = TAG_Char('\\');
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB3);
         } else {
-          /* syntax/icode_generation.nit:960 */
+          /* syntax/icode_generation.nit:961 */
           REGB3 = TAG_Char('\n');
           REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
           if (UNTAG_Bool(REGB4)) {
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB3 = TAG_Bool((REGB2)==(REGB3));
-            /* syntax/icode_generation.nit:960 */
+            /* syntax/icode_generation.nit:961 */
             REGB4 = REGB3;
           }
           if (UNTAG_Bool(REGB4)) {
-            /* syntax/icode_generation.nit:961 */
+            /* syntax/icode_generation.nit:962 */
             REGB4 = TAG_Char('\\');
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB4);
-            /* syntax/icode_generation.nit:962 */
+            /* syntax/icode_generation.nit:963 */
             REGB4 = TAG_Char('n');
             REGB2 = REGB4;
           }
         }
       }
-      /* syntax/icode_generation.nit:964 */
+      /* syntax/icode_generation.nit:965 */
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-      /* syntax/icode_generation.nit:964 */
-      REGB0 = REGB4;
       /* syntax/icode_generation.nit:965 */
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
+      REGB0 = REGB4;
       /* syntax/icode_generation.nit:966 */
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
+      /* syntax/icode_generation.nit:967 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* syntax/icode_generation.nit:966 */
+      /* syntax/icode_generation.nit:967 */
       REGB1 = REGB2;
     } else {
-      /* syntax/icode_generation.nit:949 */
+      /* syntax/icode_generation.nit:950 */
       goto label1;
     }
   }
   label1: while(0);
-  /* syntax/icode_generation.nit:968 */
+  /* syntax/icode_generation.nit:969 */
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[0]) = fra.me.REG[2];
-  /* syntax/icode_generation.nit:969 */
+  /* syntax/icode_generation.nit:970 */
   ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -4861,7 +4855,7 @@ val_t syntax___icode_generation___AStringExpr___string_text(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 974;
+  fra.me.line = 975;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4869,7 +4863,7 @@ val_t syntax___icode_generation___AStringExpr___string_text(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* syntax/icode_generation.nit:974 */
+  /* syntax/icode_generation.nit:975 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStringFormExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
@@ -4882,11 +4876,11 @@ val_t syntax___icode_generation___AStringExpr___string_text(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* syntax/icode_generation.nit:974 */
+  /* syntax/icode_generation.nit:975 */
   REGB2 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* syntax/icode_generation.nit:974 */
+  /* syntax/icode_generation.nit:975 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -4902,7 +4896,7 @@ val_t syntax___icode_generation___AStartStringExpr___string_text(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 977;
+  fra.me.line = 978;
   fra.me.meth = LOCATE_syntax___icode_generation___AStartStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4910,7 +4904,7 @@ val_t syntax___icode_generation___AStartStringExpr___string_text(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* syntax/icode_generation.nit:977 */
+  /* syntax/icode_generation.nit:978 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStringFormExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
@@ -4923,11 +4917,11 @@ val_t syntax___icode_generation___AStartStringExpr___string_text(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* syntax/icode_generation.nit:977 */
+  /* syntax/icode_generation.nit:978 */
   REGB2 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* syntax/icode_generation.nit:977 */
+  /* syntax/icode_generation.nit:978 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -4943,7 +4937,7 @@ val_t syntax___icode_generation___AMidStringExpr___string_text(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 980;
+  fra.me.line = 981;
   fra.me.meth = LOCATE_syntax___icode_generation___AMidStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4951,7 +4945,7 @@ val_t syntax___icode_generation___AMidStringExpr___string_text(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* syntax/icode_generation.nit:980 */
+  /* syntax/icode_generation.nit:981 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStringFormExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
@@ -4964,11 +4958,11 @@ val_t syntax___icode_generation___AMidStringExpr___string_text(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* syntax/icode_generation.nit:980 */
+  /* syntax/icode_generation.nit:981 */
   REGB2 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* syntax/icode_generation.nit:980 */
+  /* syntax/icode_generation.nit:981 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -4984,7 +4978,7 @@ val_t syntax___icode_generation___AEndStringExpr___string_text(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 983;
+  fra.me.line = 984;
   fra.me.meth = LOCATE_syntax___icode_generation___AEndStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4992,7 +4986,7 @@ val_t syntax___icode_generation___AEndStringExpr___string_text(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* syntax/icode_generation.nit:983 */
+  /* syntax/icode_generation.nit:984 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStringFormExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
@@ -5005,11 +4999,11 @@ val_t syntax___icode_generation___AEndStringExpr___string_text(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* syntax/icode_generation.nit:983 */
+  /* syntax/icode_generation.nit:984 */
   REGB2 = TAG_Int(2);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* syntax/icode_generation.nit:983 */
+  /* syntax/icode_generation.nit:984 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -5025,7 +5019,7 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 987;
+  fra.me.line = 988;
   fra.me.meth = LOCATE_syntax___icode_generation___ASuperstringExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -5038,12 +5032,12 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:989 */
+  /* syntax/icode_generation.nit:990 */
   fra.me.REG[2] = CALL_syntax___syntax_base___ASuperstringExpr___atype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
-  /* syntax/icode_generation.nit:990 */
+  /* syntax/icode_generation.nit:991 */
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[4])(fra.me.REG[4]);
@@ -5051,7 +5045,7 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("to_s");
       REGB0 = TAG_Int(4);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -5062,10 +5056,10 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
   } else fra.me.REG[5] = once_value_1;
   fra.me.REG[5] = fra.me.REG[5];
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
-  /* syntax/icode_generation.nit:991 */
+  /* syntax/icode_generation.nit:992 */
   fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASuperstringExpr___generate_icode_3));
-  /* syntax/icode_generation.nit:998 */
+  /* syntax/icode_generation.nit:999 */
   REGB0 = TAG_Int(1);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
@@ -5097,9 +5091,9 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* syntax/icode_generation.nit:992 */
-    fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     /* syntax/icode_generation.nit:993 */
+    fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* syntax/icode_generation.nit:994 */
     fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(closctx->REG[0])(closctx->REG[0]);
     REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[2]));
@@ -5110,7 +5104,7 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* syntax/icode_generation.nit:994 */
+      /* syntax/icode_generation.nit:995 */
       REGB0 = TAG_Int(1);
       fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
@@ -5119,7 +5113,7 @@ val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, va
       fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[2], fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     }
-    /* syntax/icode_generation.nit:996 */
+    /* syntax/icode_generation.nit:997 */
     CALL_syntax___icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[2], fra.me.REG[1]);
     stack_frame_head = fra.me.prev;
     return;
@@ -5130,7 +5124,7 @@ val_t syntax___icode_generation___ANullExpr___generate_icode(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1003;
+  fra.me.line = 1004;
   fra.me.meth = LOCATE_syntax___icode_generation___ANullExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5139,7 +5133,7 @@ val_t syntax___icode_generation___ANullExpr___generate_icode(val_t p0, val_t p1)
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1005 */
+  /* syntax/icode_generation.nit:1006 */
   fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[1])(fra.me.REG[1]);
   goto label1;
   label1: while(0);
@@ -5153,7 +5147,7 @@ val_t syntax___icode_generation___AArrayExpr___generate_icode(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1010;
+  fra.me.line = 1011;
   fra.me.meth = LOCATE_syntax___icode_generation___AArrayExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -5163,15 +5157,15 @@ val_t syntax___icode_generation___AArrayExpr___generate_icode(val_t p0, val_t p1
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1012 */
+  /* syntax/icode_generation.nit:1013 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[2])(fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1013 */
+  /* syntax/icode_generation.nit:1014 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___AArrayExpr___generate_icode_1));
-  /* syntax/icode_generation.nit:1018 */
+  /* syntax/icode_generation.nit:1019 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -5181,7 +5175,7 @@ val_t syntax___icode_generation___AArrayExpr___generate_icode(val_t p0, val_t p1
     struct {struct stack_frame_t me;} fra;
     fun_t CREG[1];
     val_t tmp;
-    /* syntax/icode_generation.nit:1014 */
+    /* syntax/icode_generation.nit:1015 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_syntax___icode_generation;
     fra.me.line = 0;
@@ -5194,9 +5188,9 @@ val_t syntax___icode_generation___AArrayExpr___generate_icode(val_t p0, val_t p1
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* syntax/icode_generation.nit:1015 */
-    fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     /* syntax/icode_generation.nit:1016 */
+    fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+    /* syntax/icode_generation.nit:1017 */
     CALL_syntax___icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[0], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
@@ -5210,7 +5204,7 @@ val_t syntax___icode_generation___ACrangeExpr___generate_icode(val_t p0, val_t p
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1023;
+  fra.me.line = 1024;
   fra.me.meth = LOCATE_syntax___icode_generation___ACrangeExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5224,20 +5218,20 @@ val_t syntax___icode_generation___ACrangeExpr___generate_icode(val_t p0, val_t p
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1025 */
+  /* syntax/icode_generation.nit:1026 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1026 */
+  /* syntax/icode_generation.nit:1027 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1027 */
+  /* syntax/icode_generation.nit:1028 */
   fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("init");
       REGB0 = TAG_Int(4);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -5248,7 +5242,7 @@ val_t syntax___icode_generation___ACrangeExpr___generate_icode(val_t p0, val_t p
   } else fra.me.REG[6] = once_value_1;
   fra.me.REG[6] = fra.me.REG[6];
   fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:1028 */
+  /* syntax/icode_generation.nit:1029 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(2);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -5271,7 +5265,7 @@ val_t syntax___icode_generation___AOrangeExpr___generate_icode(val_t p0, val_t p
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1033;
+  fra.me.line = 1034;
   fra.me.meth = LOCATE_syntax___icode_generation___AOrangeExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5285,20 +5279,20 @@ val_t syntax___icode_generation___AOrangeExpr___generate_icode(val_t p0, val_t p
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1035 */
+  /* syntax/icode_generation.nit:1036 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1036 */
+  /* syntax/icode_generation.nit:1037 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1037 */
+  /* syntax/icode_generation.nit:1038 */
   fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("without_last");
       REGB0 = TAG_Int(12);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -5309,7 +5303,7 @@ val_t syntax___icode_generation___AOrangeExpr___generate_icode(val_t p0, val_t p
   } else fra.me.REG[6] = once_value_1;
   fra.me.REG[6] = fra.me.REG[6];
   fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:1038 */
+  /* syntax/icode_generation.nit:1039 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(2);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -5333,7 +5327,7 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1043;
+  fra.me.line = 1044;
   fra.me.meth = LOCATE_syntax___icode_generation___ASuperExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -5346,14 +5340,14 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1045 */
+  /* syntax/icode_generation.nit:1046 */
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* syntax/icode_generation.nit:1046 */
+  /* syntax/icode_generation.nit:1047 */
   fra.me.REG[2] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5369,79 +5363,79 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* syntax/icode_generation.nit:1047 */
+    /* syntax/icode_generation.nit:1048 */
     fra.me.REG[2] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1047);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1048);
     }
     fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(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_syntax___icode_generation, 1047);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1048);
     }
     REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = REGB0;
   }
-  /* syntax/icode_generation.nit:1049 */
+  /* syntax/icode_generation.nit:1050 */
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-  /* syntax/icode_generation.nit:1049 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   /* syntax/icode_generation.nit:1050 */
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  /* syntax/icode_generation.nit:1051 */
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[3] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Int(0);
   fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1051 */
+  /* syntax/icode_generation.nit:1052 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[3])(fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1052 */
+  /* syntax/icode_generation.nit:1053 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB0 = TAG_Bool((REGB0)==(REGB1));
-    /* syntax/icode_generation.nit:1052 */
+    /* syntax/icode_generation.nit:1053 */
     REGB2 = REGB0;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:1053 */
+    /* syntax/icode_generation.nit:1054 */
     REGB2 = TAG_Int(0);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB0)) {
-        /* syntax/icode_generation.nit:1053 */
-        REGB0 = REGB2;
         /* syntax/icode_generation.nit:1054 */
+        REGB0 = REGB2;
+        /* syntax/icode_generation.nit:1055 */
         fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* syntax/icode_generation.nit:1054 */
+        /* syntax/icode_generation.nit:1055 */
         fra.me.REG[4] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB3);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = REGB3;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label1;
       }
     }
@@ -5449,9 +5443,9 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
   } else {
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASuperExpr___generate_icode_2));
   }
-  /* syntax/icode_generation.nit:1061 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
   /* syntax/icode_generation.nit:1062 */
+  fra.me.REG[3] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
+  /* syntax/icode_generation.nit:1063 */
   REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -5466,18 +5460,18 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:1063 */
+    /* syntax/icode_generation.nit:1064 */
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1063);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1064);
     }
     fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1063);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1064);
     }
     fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-    /* syntax/icode_generation.nit:1064 */
+    /* syntax/icode_generation.nit:1065 */
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -5492,34 +5486,34 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:1065 */
+      /* syntax/icode_generation.nit:1066 */
       fra.me.REG[5] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[2]);
       fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[4]);
       goto label3;
     } else {
-      /* syntax/icode_generation.nit:1067 */
+      /* syntax/icode_generation.nit:1068 */
       fra.me.REG[5] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[2]);
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* syntax/icode_generation.nit:1068 */
+      /* syntax/icode_generation.nit:1069 */
       fra.me.REG[4] = NIT_NULL;
       goto label3;
     }
   } else {
-    /* syntax/icode_generation.nit:1071 */
+    /* syntax/icode_generation.nit:1072 */
     fra.me.REG[0] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = fra.me.REG[0];
-    /* syntax/icode_generation.nit:1072 */
+    /* syntax/icode_generation.nit:1073 */
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1072);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1073);
     }
     fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
     REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1072);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1073);
     }
     fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
-    /* syntax/icode_generation.nit:1073 */
+    /* syntax/icode_generation.nit:1074 */
     REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -5533,14 +5527,14 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
       }
     }
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:1074 */
+      /* syntax/icode_generation.nit:1075 */
       fra.me.REG[5] = NEW_ISuper_icode___icode_base___ISuper___init(fra.me.REG[3], fra.me.REG[2]);
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* syntax/icode_generation.nit:1075 */
+      /* syntax/icode_generation.nit:1076 */
       fra.me.REG[4] = NIT_NULL;
       goto label3;
     } else {
-      /* syntax/icode_generation.nit:1077 */
+      /* syntax/icode_generation.nit:1078 */
       fra.me.REG[2] = NEW_ISuper_icode___icode_base___ISuper___init(fra.me.REG[3], fra.me.REG[2]);
       fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
       fra.me.REG[4] = fra.me.REG[0];
@@ -5555,7 +5549,7 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
       struct {struct stack_frame_t me;} fra;
       fun_t CREG[1];
       val_t tmp;
-      /* syntax/icode_generation.nit:1057 */
+      /* syntax/icode_generation.nit:1058 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___icode_generation;
       fra.me.line = 0;
@@ -5568,7 +5562,7 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* syntax/icode_generation.nit:1058 */
+      /* syntax/icode_generation.nit:1059 */
       fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       stack_frame_head = fra.me.prev;
@@ -5581,7 +5575,7 @@ val_t syntax___icode_generation___AAttrExpr___generate_icode(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1084;
+  fra.me.line = 1085;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5592,17 +5586,17 @@ val_t syntax___icode_generation___AAttrExpr___generate_icode(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1086 */
+  /* syntax/icode_generation.nit:1087 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1087 */
+  /* syntax/icode_generation.nit:1088 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* syntax/icode_generation.nit:1088 */
+  /* syntax/icode_generation.nit:1089 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___add_attr_read(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
   goto label1;
@@ -5617,7 +5611,7 @@ val_t syntax___icode_generation___AAttrAssignExpr___generate_icode(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1093;
+  fra.me.line = 1094;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrAssignExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5628,24 +5622,24 @@ val_t syntax___icode_generation___AAttrAssignExpr___generate_icode(val_t p0, val
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1095 */
+  /* syntax/icode_generation.nit:1096 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1096 */
+  /* syntax/icode_generation.nit:1097 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* syntax/icode_generation.nit:1097 */
+  /* syntax/icode_generation.nit:1098 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1098 */
+  /* syntax/icode_generation.nit:1099 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1099 */
+  /* syntax/icode_generation.nit:1100 */
   fra.me.REG[3] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -5659,7 +5653,7 @@ val_t syntax___icode_generation___AAttrReassignExpr___generate_icode(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1103;
+  fra.me.line = 1104;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrReassignExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5673,25 +5667,25 @@ val_t syntax___icode_generation___AAttrReassignExpr___generate_icode(val_t p0, v
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1105 */
+  /* syntax/icode_generation.nit:1106 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1106 */
+  /* syntax/icode_generation.nit:1107 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* syntax/icode_generation.nit:1107 */
+  /* syntax/icode_generation.nit:1108 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = NEW_IAttrRead_icode___icode_base___IAttrRead___init(fra.me.REG[3], fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1108 */
+  /* syntax/icode_generation.nit:1109 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1109 */
+  /* syntax/icode_generation.nit:1110 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(2);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -5700,11 +5694,11 @@ val_t syntax___icode_generation___AAttrReassignExpr___generate_icode(val_t p0, v
   fra.me.REG[6] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[5], fra.me.REG[6]);
   fra.me.REG[5] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[5]);
-  /* syntax/icode_generation.nit:1110 */
+  /* syntax/icode_generation.nit:1111 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[5] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[2], fra.me.REG[5]);
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* syntax/icode_generation.nit:1111 */
+  /* syntax/icode_generation.nit:1112 */
   fra.me.REG[5] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -5718,7 +5712,7 @@ val_t syntax___icode_generation___AIssetAttrExpr___generate_icode(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1116;
+  fra.me.line = 1117;
   fra.me.meth = LOCATE_syntax___icode_generation___AIssetAttrExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5729,17 +5723,17 @@ val_t syntax___icode_generation___AIssetAttrExpr___generate_icode(val_t p0, val_
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1118 */
+  /* syntax/icode_generation.nit:1119 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1119 */
+  /* syntax/icode_generation.nit:1120 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* syntax/icode_generation.nit:1120 */
+  /* syntax/icode_generation.nit:1121 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(fra.me.REG[3], fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
@@ -5766,7 +5760,7 @@ void syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1125;
+  fra.me.line = 1126;
   fra.me.meth = LOCATE_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5782,11 +5776,11 @@ void syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* syntax/icode_generation.nit:1128 */
-  REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
   /* syntax/icode_generation.nit:1129 */
-  REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[3])(fra.me.REG[3]);
+  REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
   /* syntax/icode_generation.nit:1130 */
+  REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[3])(fra.me.REG[3]);
+  /* syntax/icode_generation.nit:1131 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:24 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -5795,77 +5789,77 @@ void syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* syntax/icode_generation.nit:1132 */
-  REGB3 = TAG_Int(0);
   /* syntax/icode_generation.nit:1133 */
+  REGB3 = TAG_Int(0);
+  /* syntax/icode_generation.nit:1134 */
   REGB4 = TAG_Int(0);
-  /* ../lib/standard/kernel.nit:350 */
+  /* ../lib/standard/kernel.nit:399 */
   REGB5 = REGB0;
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB6)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB6)) {
-      /* syntax/icode_generation.nit:1133 */
+      /* syntax/icode_generation.nit:1134 */
       REGB6 = REGB4;
-      /* syntax/icode_generation.nit:1135 */
-      fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB6);
       /* syntax/icode_generation.nit:1136 */
+      fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB6);
+      /* syntax/icode_generation.nit:1137 */
       REGB7 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB1));
       if (UNTAG_Bool(REGB7)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB6 = TAG_Bool((REGB6)==(REGB1));
-        /* syntax/icode_generation.nit:1136 */
+        /* syntax/icode_generation.nit:1137 */
         REGB7 = REGB6;
       }
       if (UNTAG_Bool(REGB7)) {
-        /* syntax/icode_generation.nit:1137 */
+        /* syntax/icode_generation.nit:1138 */
         fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-        /* syntax/icode_generation.nit:1137 */
-        fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], REGB7);
         /* syntax/icode_generation.nit:1138 */
+        fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], REGB7);
+        /* syntax/icode_generation.nit:1139 */
         REGB7 = TAG_Int(0);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB6 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-        /* ../lib/standard/kernel.nit:344 */
+        /* ../lib/standard/kernel.nit:393 */
         while(1) {
           REGB8 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB7), VTID_standard___kernel___Comparable___OTHER(REGB7))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB8)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:234 */
+          /* ../lib/standard/kernel.nit:241 */
           REGB8 = TAG_Bool(UNTAG_Int(REGB7)<=UNTAG_Int(REGB6));
-          /* ../lib/standard/kernel.nit:344 */
+          /* ../lib/standard/kernel.nit:393 */
           if (UNTAG_Bool(REGB8)) {
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[5] = fra.me.REG[0];
             REGB8 = REGB3;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB9 = TAG_Int(0);
             REGB10 = TAG_Bool(VAL_ISA(REGB9, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB10)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB9 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB9));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB9)) {
               REGB9 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
               if (UNTAG_Bool(REGB9)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB9 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
               REGB10 = TAG_Bool(VAL_ISA(REGB9, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
@@ -5873,70 +5867,70 @@ void syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB9 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB9));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB10 = TAG_Bool(0);
               REGB9 = REGB10;
             }
             if (UNTAG_Bool(REGB9)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
             REGB9 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
             if (UNTAG_Bool(REGB9)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB8)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label1;
             label1: while(0);
-            /* syntax/icode_generation.nit:1140 */
+            /* syntax/icode_generation.nit:1141 */
             fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
             CALL_syntax___icode_generation___A2IContext___add_call_array_add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
-            /* syntax/icode_generation.nit:1141 */
+            /* syntax/icode_generation.nit:1142 */
             REGB8 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB8 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB8));
-            /* syntax/icode_generation.nit:1141 */
+            /* syntax/icode_generation.nit:1142 */
             REGB3 = REGB8;
-            /* ../lib/standard/kernel.nit:346 */
+            /* ../lib/standard/kernel.nit:395 */
             REGB8 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB8 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB8));
-            /* ../lib/standard/kernel.nit:346 */
+            /* ../lib/standard/kernel.nit:395 */
             REGB7 = REGB8;
           } else {
-            /* ../lib/standard/kernel.nit:344 */
+            /* ../lib/standard/kernel.nit:393 */
             goto label2;
           }
         }
         label2: while(0);
-        /* syntax/icode_generation.nit:1143 */
+        /* syntax/icode_generation.nit:1144 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
       } else {
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[4] = fra.me.REG[0];
         REGB7 = REGB3;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB6 = TAG_Int(0);
         REGB8 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB7), VTID_standard___kernel___Comparable___OTHER(REGB7))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB8)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB6 = TAG_Bool(UNTAG_Int(REGB7)>=UNTAG_Int(REGB6));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB6)) {
           REGB6 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB6)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB6 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
           REGB8 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB7), VTID_standard___kernel___Comparable___OTHER(REGB7))) /*cast OTHER*/;
@@ -5944,48 +5938,48 @@ void syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB6 = TAG_Bool(UNTAG_Int(REGB7)<UNTAG_Int(REGB6));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB8 = TAG_Bool(0);
           REGB6 = REGB8;
         }
         if (UNTAG_Bool(REGB6)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
         REGB6 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB6)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB7)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label3;
         label3: while(0);
-        /* syntax/icode_generation.nit:1145 */
-        fra.me.REG[5] = fra.me.REG[4];
         /* syntax/icode_generation.nit:1146 */
+        fra.me.REG[5] = fra.me.REG[4];
+        /* syntax/icode_generation.nit:1147 */
         fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* syntax/icode_generation.nit:1147 */
+        /* syntax/icode_generation.nit:1148 */
         REGB7 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
-        /* syntax/icode_generation.nit:1147 */
+        /* syntax/icode_generation.nit:1148 */
         REGB3 = REGB7;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB7 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB7));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB4 = REGB7;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label4;
     }
   }
@@ -6004,7 +5998,7 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1154;
+  fra.me.line = 1155;
   fra.me.meth = LOCATE_syntax___icode_generation___ASendExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -6027,41 +6021,41 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
   fra.me.REG[15] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1154 */
+  /* syntax/icode_generation.nit:1155 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* syntax/icode_generation.nit:1156 */
+  /* syntax/icode_generation.nit:1157 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1157 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1158 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1159 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   /* syntax/icode_generation.nit:1160 */
+  fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
+  /* syntax/icode_generation.nit:1161 */
   fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1160);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1161);
   }
   CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
-  /* syntax/icode_generation.nit:1161 */
+  /* syntax/icode_generation.nit:1162 */
   fra.me.REG[5] = NIT_NULL;
-  /* syntax/icode_generation.nit:1165 */
-  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/icode_generation.nit:1166 */
-  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/icode_generation.nit:1167 */
+  fra.me.REG[6] = NIT_NULL;
+  /* syntax/icode_generation.nit:1168 */
   fra.me.REG[7] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[7])(fra.me.REG[7]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* syntax/icode_generation.nit:1168 */
+    /* syntax/icode_generation.nit:1169 */
     fra.me.REG[7] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
-    /* syntax/icode_generation.nit:1169 */
+    /* syntax/icode_generation.nit:1170 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6076,22 +6070,22 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* syntax/icode_generation.nit:1170 */
+      /* syntax/icode_generation.nit:1171 */
       fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
       fra.me.REG[5] = fra.me.REG[7];
     }
-    /* syntax/icode_generation.nit:1172 */
-    fra.me.REG[7] = NEW_ISeq_icode___icode_base___ISeq___init();
     /* syntax/icode_generation.nit:1173 */
-    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+    fra.me.REG[7] = NEW_ISeq_icode___icode_base___ISeq___init();
     /* syntax/icode_generation.nit:1174 */
-    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
     /* syntax/icode_generation.nit:1175 */
+    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+    /* syntax/icode_generation.nit:1176 */
     fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[6] = fra.me.REG[8];
-    /* syntax/icode_generation.nit:1176 */
-    REGB0 = TAG_Int(0);
     /* syntax/icode_generation.nit:1177 */
+    REGB0 = TAG_Int(0);
+    /* syntax/icode_generation.nit:1178 */
     fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -6110,7 +6104,7 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
       fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1177);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1178);
       }
       /* ../lib/standard/collection/array.nit:24 */
       REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
@@ -6120,23 +6114,23 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
     }
-    /* syntax/icode_generation.nit:1178 */
-    fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
     /* syntax/icode_generation.nit:1179 */
+    fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
+    /* syntax/icode_generation.nit:1180 */
     fra.me.REG[9] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[9] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[9])(fra.me.REG[9]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
@@ -6150,22 +6144,22 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-        /* syntax/icode_generation.nit:1180 */
-        REGB1 = TAG_Bool(0);
         /* syntax/icode_generation.nit:1181 */
-        fra.me.REG[11] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[11])(fra.me.REG[11]);
+        REGB1 = TAG_Bool(0);
         /* syntax/icode_generation.nit:1182 */
+        fra.me.REG[11] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[11])(fra.me.REG[11]);
+        /* syntax/icode_generation.nit:1183 */
         REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
@@ -6180,25 +6174,25 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
         }
         REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
         if (UNTAG_Bool(REGB2)) {
-          /* syntax/icode_generation.nit:1183 */
+          /* syntax/icode_generation.nit:1184 */
           REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1183);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1184);
           }
-          /* ../lib/standard/collection/array.nit:266 */
+          /* ../lib/standard/collection/array.nit:267 */
           fra.me.REG[12] = fra.me.REG[8];
-          /* ../lib/standard/collection/array.nit:269 */
-          REGB2 = TAG_Int(0);
           /* ../lib/standard/collection/array.nit:270 */
+          REGB2 = TAG_Int(0);
+          /* ../lib/standard/collection/array.nit:271 */
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
-          /* ../lib/standard/collection/array.nit:271 */
-          fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[12]);
           /* ../lib/standard/collection/array.nit:272 */
+          fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[12]);
+          /* ../lib/standard/collection/array.nit:273 */
           while(1) {
             /* ../lib/standard/collection/array.nit:24 */
             REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
@@ -6212,18 +6206,18 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             if (UNTAG_Bool(REGB3)) {
-              /* ../lib/standard/collection/array.nit:273 */
+              /* ../lib/standard/collection/array.nit:274 */
               REGB3 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB2)];
-              /* syntax/icode_generation.nit:1184 */
+              /* syntax/icode_generation.nit:1185 */
               fra.me.REG[15] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[14])(fra.me.REG[14]);
               fra.me.REG[15] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[15])(fra.me.REG[15]);
               REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[15],fra.me.REG[11]));
@@ -6236,91 +6230,91 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
               if (UNTAG_Bool(REGB3)) {
                goto label1;
               }
-              /* syntax/icode_generation.nit:1185 */
+              /* syntax/icode_generation.nit:1186 */
               REGB3 = TAG_Bool(0);
               REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
               if (UNTAG_Bool(REGB4)) {
               } else {
-               /* ../lib/standard/kernel.nit:198 */
+               /* ../lib/standard/kernel.nit:199 */
                REGB3 = TAG_Bool((REGB1)==(REGB3));
-               /* syntax/icode_generation.nit:1185 */
+               /* syntax/icode_generation.nit:1186 */
                REGB4 = REGB3;
               }
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1185);
+               nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1186);
               }
-              /* syntax/icode_generation.nit:1186 */
+              /* syntax/icode_generation.nit:1187 */
               REGB4 = TAG_Bool(1);
               REGB1 = REGB4;
-              /* syntax/icode_generation.nit:1187 */
+              /* syntax/icode_generation.nit:1188 */
               fra.me.REG[15] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[14])(fra.me.REG[14]);
               REGB4 = TAG_Bool(fra.me.REG[15]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1187);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1188);
               }
               CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[7]);
-              /* syntax/icode_generation.nit:1188 */
+              /* syntax/icode_generation.nit:1189 */
               fra.me.REG[15] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[14])(fra.me.REG[14]);
               REGB4 = TAG_Bool(fra.me.REG[15]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1188);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1189);
               }
               CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[5]);
-              /* syntax/icode_generation.nit:1189 */
-              fra.me.REG[14] = CALL_syntax___icode_generation___AClosureDef___generate_iclosuredef(fra.me.REG[14])(fra.me.REG[14], fra.me.REG[1]);
               /* syntax/icode_generation.nit:1190 */
+              fra.me.REG[14] = CALL_syntax___icode_generation___AClosureDef___generate_iclosuredef(fra.me.REG[14])(fra.me.REG[14], fra.me.REG[1]);
+              /* syntax/icode_generation.nit:1191 */
               REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1190);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1191);
               }
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[14]);
               label1: while(0);
-              /* ../lib/standard/collection/array.nit:274 */
+              /* ../lib/standard/collection/array.nit:275 */
               REGB4 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:274 */
+              /* ../lib/standard/collection/array.nit:275 */
               REGB2 = REGB4;
             } else {
-              /* ../lib/standard/collection/array.nit:272 */
+              /* ../lib/standard/collection/array.nit:273 */
               goto label2;
             }
           }
           label2: while(0);
         }
-        /* syntax/icode_generation.nit:1193 */
+        /* syntax/icode_generation.nit:1194 */
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
         if (UNTAG_Bool(REGB1)) {
-          /* syntax/icode_generation.nit:1194 */
+          /* syntax/icode_generation.nit:1195 */
           REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1194);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1195);
           }
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label3;
       }
     }
     label3: while(0);
   }
-  /* syntax/icode_generation.nit:1199 */
+  /* syntax/icode_generation.nit:1200 */
   fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:1202 */
+  /* syntax/icode_generation.nit:1203 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* syntax/icode_generation.nit:1203 */
+    /* syntax/icode_generation.nit:1204 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -6355,20 +6349,20 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
     if (UNTAG_Bool(REGB0)) {
       CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[6]);
     }
-    /* syntax/icode_generation.nit:1204 */
+    /* syntax/icode_generation.nit:1205 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
-    /* syntax/icode_generation.nit:1206 */
+    /* syntax/icode_generation.nit:1207 */
     fra.me.REG[5] = fra.me.REG[6];
   }
-  /* syntax/icode_generation.nit:1209 */
+  /* syntax/icode_generation.nit:1210 */
   fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
   if (UNTAG_Bool(REGB0)) {
-    /* syntax/icode_generation.nit:1210 */
+    /* syntax/icode_generation.nit:1211 */
     CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* syntax/icode_generation.nit:1212 */
+  /* syntax/icode_generation.nit:1213 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -6381,7 +6375,7 @@ val_t syntax___icode_generation___ASendReassignExpr___generate_icode(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1217;
+  fra.me.line = 1218;
   fra.me.meth = LOCATE_syntax___icode_generation___ASendReassignExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -6396,51 +6390,51 @@ val_t syntax___icode_generation___ASendReassignExpr___generate_icode(val_t p0, v
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1217 */
+  /* syntax/icode_generation.nit:1218 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* syntax/icode_generation.nit:1219 */
+  /* syntax/icode_generation.nit:1220 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1220 */
+  /* syntax/icode_generation.nit:1221 */
   fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
   if (UNTAG_Bool(REGB0)) {
     CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* syntax/icode_generation.nit:1221 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1222 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1223 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  /* syntax/icode_generation.nit:1224 */
   fra.me.REG[3] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1223);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1224);
   }
   CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1225 */
+  /* syntax/icode_generation.nit:1226 */
   fra.me.REG[3] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[4]);
   fra.me.REG[5] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1225);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1226);
   }
   fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1225);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1226);
   }
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
-  /* syntax/icode_generation.nit:1226 */
+  /* syntax/icode_generation.nit:1227 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1227 */
+  /* syntax/icode_generation.nit:1228 */
   fra.me.REG[6] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Int(2);
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -6451,24 +6445,24 @@ val_t syntax___icode_generation___ASendReassignExpr___generate_icode(val_t p0, v
   fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[6])(fra.me.REG[6]);
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1227);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1228);
   }
   fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1227);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1228);
   }
   fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:1228 */
-  fra.me.REG[4] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[4])(fra.me.REG[4]);
   /* syntax/icode_generation.nit:1229 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  fra.me.REG[4] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[4])(fra.me.REG[4]);
   /* syntax/icode_generation.nit:1230 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* syntax/icode_generation.nit:1231 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[4]);
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1231 */
+  /* syntax/icode_generation.nit:1232 */
   fra.me.REG[4] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -6482,7 +6476,7 @@ val_t syntax___icode_generation___ANewExpr___generate_icode(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1236;
+  fra.me.line = 1237;
   fra.me.meth = LOCATE_syntax___icode_generation___ANewExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -6494,20 +6488,20 @@ val_t syntax___icode_generation___ANewExpr___generate_icode(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1236 */
+  /* syntax/icode_generation.nit:1237 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* syntax/icode_generation.nit:1238 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1239 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* syntax/icode_generation.nit:1240 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1239);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1240);
   }
   CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1240 */
+  /* syntax/icode_generation.nit:1241 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3]);
@@ -6524,7 +6518,7 @@ val_t syntax___icode_generation___AProxyExpr___generate_icode(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1245;
+  fra.me.line = 1246;
   fra.me.meth = LOCATE_syntax___icode_generation___AProxyExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6533,7 +6527,7 @@ val_t syntax___icode_generation___AProxyExpr___generate_icode(val_t p0, val_t p1
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1247 */
+  /* syntax/icode_generation.nit:1248 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
@@ -6547,7 +6541,7 @@ val_t syntax___icode_generation___AOnceExpr___generate_icode(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1252;
+  fra.me.line = 1253;
   fra.me.meth = LOCATE_syntax___icode_generation___AOnceExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -6559,24 +6553,24 @@ val_t syntax___icode_generation___AOnceExpr___generate_icode(val_t p0, val_t p1)
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1254 */
-  fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
   /* syntax/icode_generation.nit:1255 */
+  fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
+  /* syntax/icode_generation.nit:1256 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1256 */
-  fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/icode_generation.nit:1257 */
+  fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/icode_generation.nit:1258 */
   fra.me.REG[2] = CALL_icode___icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* syntax/icode_generation.nit:1259 */
+  /* syntax/icode_generation.nit:1260 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* syntax/icode_generation.nit:1260 */
+  /* syntax/icode_generation.nit:1261 */
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
-  /* syntax/icode_generation.nit:1262 */
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/icode_generation.nit:1263 */
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* syntax/icode_generation.nit:1264 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -6594,7 +6588,7 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1271;
+  fra.me.line = 1272;
   fra.me.meth = LOCATE_syntax___icode_generation___AClosureDef___generate_iclosuredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -6608,50 +6602,50 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1271 */
+  /* syntax/icode_generation.nit:1272 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* syntax/icode_generation.nit:1274 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1275 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* syntax/icode_generation.nit:1276 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[4])(fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1276 */
+  /* syntax/icode_generation.nit:1277 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:1276 */
-      REGB2 = REGB0;
       /* syntax/icode_generation.nit:1277 */
+      REGB2 = REGB0;
+      /* syntax/icode_generation.nit:1278 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
       fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label1;
     }
   }
   label1: while(0);
-  /* syntax/icode_generation.nit:1279 */
-  fra.me.REG[5] = NIT_NULL;
   /* syntax/icode_generation.nit:1280 */
-  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[5] = NIT_NULL;
   /* syntax/icode_generation.nit:1281 */
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
+  /* syntax/icode_generation.nit:1282 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6666,42 +6660,42 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* syntax/icode_generation.nit:1282 */
+    /* syntax/icode_generation.nit:1283 */
     fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
     fra.me.REG[5] = fra.me.REG[4];
   }
-  /* syntax/icode_generation.nit:1285 */
-  fra.me.REG[5] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[3], fra.me.REG[5]);
   /* syntax/icode_generation.nit:1286 */
+  fra.me.REG[5] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[3], fra.me.REG[5]);
+  /* syntax/icode_generation.nit:1287 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
   CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1289 */
-  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/icode_generation.nit:1290 */
+  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/icode_generation.nit:1291 */
   fra.me.REG[4] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[5])(fra.me.REG[5]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1291 */
+  /* syntax/icode_generation.nit:1292 */
   fra.me.REG[4] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[6] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[5])(fra.me.REG[5]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1291);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1292);
   }
   CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:1292 */
+  /* syntax/icode_generation.nit:1293 */
   fra.me.REG[6] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[5])(fra.me.REG[5]);
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1292);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1293);
   }
   CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1295 */
+  /* syntax/icode_generation.nit:1296 */
   REGB0 = TAG_Int(0);
   fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1295);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1296);
   }
   /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -6710,42 +6704,42 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:1295 */
-      REGB2 = REGB0;
       /* syntax/icode_generation.nit:1296 */
+      REGB2 = REGB0;
+      /* syntax/icode_generation.nit:1297 */
       fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[2])(fra.me.REG[2]);
       REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1296);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1297);
       }
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB3 = REGB2;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -6753,57 +6747,57 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label2;
       label2: while(0);
-      /* syntax/icode_generation.nit:1296 */
-      fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
       /* syntax/icode_generation.nit:1297 */
+      fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+      /* syntax/icode_generation.nit:1298 */
       fra.me.REG[6] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB2);
       CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label3;
     }
   }
   label3: while(0);
-  /* syntax/icode_generation.nit:1300 */
+  /* syntax/icode_generation.nit:1301 */
   fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* syntax/icode_generation.nit:1303 */
+  /* syntax/icode_generation.nit:1304 */
   fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[6])(fra.me.REG[6]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[6] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1303);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1304);
     }
     fra.me.REG[6] = CALL_syntax___icode_generation___EscapableBlock___break_value(fra.me.REG[6])(fra.me.REG[6]);
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
@@ -6823,25 +6817,25 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* syntax/icode_generation.nit:1304 */
+    /* syntax/icode_generation.nit:1305 */
     fra.me.REG[6] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1304);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1305);
     }
     fra.me.REG[6] = CALL_syntax___icode_generation___EscapableBlock___break_seq(fra.me.REG[6])(fra.me.REG[6]);
     REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1304);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1305);
     }
     CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
-  /* syntax/icode_generation.nit:1307 */
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* syntax/icode_generation.nit:1308 */
-  ATTR_syntax___icode_generation___AClosureDef____iclosure_def(fra.me.REG[2]) = fra.me.REG[5];
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* syntax/icode_generation.nit:1309 */
+  ATTR_syntax___icode_generation___AClosureDef____iclosure_def(fra.me.REG[2]) = fra.me.REG[5];
+  /* syntax/icode_generation.nit:1310 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -6856,7 +6850,7 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1314;
+  fra.me.line = 1315;
   fra.me.meth = LOCATE_syntax___icode_generation___AClosureCallExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -6872,57 +6866,57 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1317 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
   /* syntax/icode_generation.nit:1318 */
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+  /* syntax/icode_generation.nit:1319 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
-  /* syntax/icode_generation.nit:1321 */
+  /* syntax/icode_generation.nit:1322 */
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* syntax/icode_generation.nit:1322 */
-  fra.me.REG[3] = NEW_IClosCall_icode___icode_base___IClosCall___init(fra.me.REG[4], fra.me.REG[2]);
   /* syntax/icode_generation.nit:1323 */
+  fra.me.REG[3] = NEW_IClosCall_icode___icode_base___IClosCall___init(fra.me.REG[4], fra.me.REG[2]);
+  /* syntax/icode_generation.nit:1324 */
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* syntax/icode_generation.nit:1326 */
+  /* syntax/icode_generation.nit:1327 */
   fra.me.REG[6] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* syntax/icode_generation.nit:1326 */
+    /* syntax/icode_generation.nit:1327 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:1327 */
-    fra.me.REG[6] = NEW_ISeq_icode___icode_base___ISeq___init();
     /* syntax/icode_generation.nit:1328 */
-    CALL_icode___icode_base___IClosCall___break_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+    fra.me.REG[6] = NEW_ISeq_icode___icode_base___ISeq___init();
     /* syntax/icode_generation.nit:1329 */
-    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+    CALL_icode___icode_base___IClosCall___break_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
     /* syntax/icode_generation.nit:1330 */
+    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+    /* syntax/icode_generation.nit:1331 */
     fra.me.REG[6] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[6] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1330);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1331);
     }
     fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_expr(fra.me.REG[6])(fra.me.REG[6]);
     CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-    /* syntax/icode_generation.nit:1331 */
+    /* syntax/icode_generation.nit:1332 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   }
-  /* syntax/icode_generation.nit:1335 */
-  fra.me.REG[6] = NIT_NULL;
   /* syntax/icode_generation.nit:1336 */
-  fra.me.REG[7] = CALL_icode___icode_base___IClosureDecl___default(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[6] = NIT_NULL;
   /* syntax/icode_generation.nit:1337 */
+  fra.me.REG[7] = CALL_icode___icode_base___IClosureDecl___default(fra.me.REG[4])(fra.me.REG[4]);
+  /* syntax/icode_generation.nit:1338 */
   REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -6937,31 +6931,31 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:1338 */
+    /* syntax/icode_generation.nit:1339 */
     fra.me.REG[4] = NEW_IHasClos_icode___icode_base___IHasClos___init(fra.me.REG[4]);
     fra.me.REG[8] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[8])(fra.me.REG[8]);
     fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[8]);
     fra.me.REG[8] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[8]);
     fra.me.REG[6] = fra.me.REG[8];
-    /* syntax/icode_generation.nit:1339 */
-    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
     /* syntax/icode_generation.nit:1340 */
+    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+    /* syntax/icode_generation.nit:1341 */
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1340);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1341);
     }
     fra.me.REG[8] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[6])(fra.me.REG[6]);
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
-  /* syntax/icode_generation.nit:1344 */
-  fra.me.REG[8] = NIT_NULL;
   /* syntax/icode_generation.nit:1345 */
+  fra.me.REG[8] = NIT_NULL;
+  /* syntax/icode_generation.nit:1346 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
-  /* syntax/icode_generation.nit:1346 */
+  /* syntax/icode_generation.nit:1347 */
   REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -6975,16 +6969,16 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
     }
   }
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:1347 */
+    /* syntax/icode_generation.nit:1348 */
     CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   } else {
-    /* syntax/icode_generation.nit:1349 */
+    /* syntax/icode_generation.nit:1350 */
     fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
     fra.me.REG[8] = fra.me.REG[3];
   }
-  /* syntax/icode_generation.nit:1353 */
-  fra.me.REG[3] = NIT_NULL;
   /* syntax/icode_generation.nit:1354 */
+  fra.me.REG[3] = NIT_NULL;
+  /* syntax/icode_generation.nit:1355 */
   REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -6999,7 +6993,7 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* syntax/icode_generation.nit:1355 */
+    /* syntax/icode_generation.nit:1356 */
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -7015,9 +7009,9 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1355);
+      nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1356);
     }
-    /* syntax/icode_generation.nit:1356 */
+    /* syntax/icode_generation.nit:1357 */
     REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -7032,7 +7026,7 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:1357 */
+      /* syntax/icode_generation.nit:1358 */
       REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -7048,24 +7042,24 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1357);
+        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1358);
       }
-      /* syntax/icode_generation.nit:1358 */
+      /* syntax/icode_generation.nit:1359 */
       fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
       fra.me.REG[3] = fra.me.REG[0];
-      /* syntax/icode_generation.nit:1359 */
+      /* syntax/icode_generation.nit:1360 */
       CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[8]);
     }
-    /* syntax/icode_generation.nit:1361 */
+    /* syntax/icode_generation.nit:1362 */
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1361);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1362);
     }
     fra.me.REG[6] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[6])(fra.me.REG[6]);
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-    /* syntax/icode_generation.nit:1362 */
-    fra.me.REG[2] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[2], NIT_NULL);
     /* syntax/icode_generation.nit:1363 */
+    fra.me.REG[2] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[2], NIT_NULL);
+    /* syntax/icode_generation.nit:1364 */
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -7080,7 +7074,7 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
     if (UNTAG_Bool(REGB2)) {
-      /* syntax/icode_generation.nit:1364 */
+      /* syntax/icode_generation.nit:1365 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -7096,18 +7090,18 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1364);
+        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1365);
       }
-      /* syntax/icode_generation.nit:1365 */
+      /* syntax/icode_generation.nit:1366 */
       CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
     }
-    /* syntax/icode_generation.nit:1367 */
+    /* syntax/icode_generation.nit:1368 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   } else {
-    /* syntax/icode_generation.nit:1369 */
+    /* syntax/icode_generation.nit:1370 */
     fra.me.REG[3] = fra.me.REG[8];
   }
-  /* syntax/icode_generation.nit:1371 */
+  /* syntax/icode_generation.nit:1372 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -7119,7 +7113,7 @@ val_t syntax___icode_generation___ADebugTypeExpr___generate_icode(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1376;
+  fra.me.line = 1377;
   fra.me.meth = LOCATE_syntax___icode_generation___ADebugTypeExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7128,7 +7122,7 @@ val_t syntax___icode_generation___ADebugTypeExpr___generate_icode(val_t p0, val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* syntax/icode_generation.nit:1379 */
+  /* syntax/icode_generation.nit:1380 */
   fra.me.REG[1] = NIT_NULL;
   goto label1;
   label1: while(0);
index e6d44ad..9dbda0c 100644 (file)
@@ -61,20 +61,20 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   }
   /* syntax/mmbuilder.nit:34 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -88,28 +88,28 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:36 */
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -120,7 +120,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   if (!once_value_2) {
     fra.me.REG[5] = BOX_NativeString("Property inheritance conflict in class ");
     REGB0 = TAG_Int(39);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
     once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
   } else fra.me.REG[5] = once_value_2;
@@ -131,7 +131,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString(" for `");
     REGB0 = TAG_Int(6);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -148,7 +148,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("': conflicting properties are defined in ");
     REGB0 = TAG_Int(41);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -157,7 +157,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -167,7 +167,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -258,7 +258,7 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   fra.me.REG[2] = NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
   /* syntax/mmbuilder.nit:63 */
   fra.me.REG[3] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   /* syntax/mmbuilder.nit:64 */
   CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/mmbuilder.nit:66 */
@@ -279,7 +279,7 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   fra.me.REG[3] = NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
   /* syntax/mmbuilder.nit:75 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   /* syntax/mmbuilder.nit:76 */
   CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/mmbuilder.nit:79 */
@@ -301,20 +301,20 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   CALL_standard___collection___sorter___AbstractSorter___sort(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   /* syntax/mmbuilder.nit:97 */
   fra.me.REG[3] = NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -328,16 +328,16 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:99 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
@@ -345,34 +345,34 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
       CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
       /* syntax/mmbuilder.nit:101 */
       CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[6])(fra.me.REG[6]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label4;
     }
   }
   label4: while(0);
   /* syntax/mmbuilder.nit:105 */
   fra.me.REG[3] = NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -386,27 +386,27 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:107 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label5;
     }
   }
@@ -415,20 +415,20 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/mmbuilder.nit:112 */
   fra.me.REG[3] = NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -442,16 +442,16 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:115 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
@@ -498,14 +498,14 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
         /* syntax/mmbuilder.nit:119 */
         CALL_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -514,18 +514,18 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/mmbuilder.nit:127 */
   fra.me.REG[0] = NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -539,27 +539,27 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:129 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_properties_visitor(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label7;
     }
   }
@@ -601,7 +601,7 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* syntax/mmbuilder.nit:80 */
     if (UNTAG_Bool(REGB1)) {
@@ -641,7 +641,7 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
       REGB0 = TAG_Int(6);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -669,7 +669,7 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("Bool");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_4 = fra.me.REG[2];
       register_static_object(&once_value_4);
     } else fra.me.REG[2] = once_value_4;
@@ -769,7 +769,7 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t p0, val_t
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       /* syntax/mmbuilder.nit:170 */
-      CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
       /* syntax/mmbuilder.nit:171 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
@@ -824,7 +824,7 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       /* syntax/mmbuilder.nit:180 */
-      CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+      CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
       /* syntax/mmbuilder.nit:181 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
@@ -917,18 +917,18 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
   /* syntax/mmbuilder.nit:203 */
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -942,16 +942,16 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:204 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
@@ -982,7 +982,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString("init");
           REGB1 = TAG_Int(4);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
           once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
         } else fra.me.REG[8] = once_value_8;
@@ -1002,14 +1002,14 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
       }
       label4: while(0);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label9;
     }
   }
@@ -1048,7 +1048,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* syntax/mmbuilder.nit:241 */
     if (UNTAG_Bool(REGB1)) {
@@ -1059,7 +1059,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (!once_value_13) {
         fra.me.REG[10] = BOX_NativeString("Error: Explicit constructor required in ");
         REGB1 = TAG_Int(40);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
         once_value_13 = fra.me.REG[10];
         register_static_object(&once_value_13);
       } else fra.me.REG[10] = once_value_13;
@@ -1070,7 +1070,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (!once_value_14) {
         fra.me.REG[10] = BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are ");
         REGB1 = TAG_Int(80);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
         once_value_14 = fra.me.REG[10];
         register_static_object(&once_value_14);
       } else fra.me.REG[10] = once_value_14;
@@ -1079,7 +1079,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (!once_value_15) {
         fra.me.REG[10] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
         once_value_15 = fra.me.REG[10];
         register_static_object(&once_value_15);
       } else fra.me.REG[10] = once_value_15;
@@ -1089,7 +1089,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (!once_value_16) {
         fra.me.REG[10] = BOX_NativeString(". Costructors are ");
         REGB1 = TAG_Int(18);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
         once_value_16 = fra.me.REG[10];
         register_static_object(&once_value_16);
       } else fra.me.REG[10] = once_value_16;
@@ -1098,7 +1098,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (!once_value_17) {
         fra.me.REG[10] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
         once_value_17 = fra.me.REG[10];
         register_static_object(&once_value_17);
       } else fra.me.REG[10] = once_value_17;
@@ -1108,7 +1108,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (!once_value_18) {
         fra.me.REG[10] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
         once_value_18 = fra.me.REG[10];
         register_static_object(&once_value_18);
       } else fra.me.REG[10] = once_value_18;
@@ -1131,7 +1131,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB0 = TAG_Bool((REGB1)==(REGB0));
         /* syntax/mmbuilder.nit:244 */
         REGB2 = REGB0;
@@ -1409,7 +1409,7 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Error: A property ");
       REGB0 = TAG_Int(18);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -1420,7 +1420,7 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString(" is already defined in class ");
       REGB0 = TAG_Int(29);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -1432,7 +1432,7 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
     if (!once_value_3) {
       fra.me.REG[6] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_3 = fra.me.REG[6];
       register_static_object(&once_value_3);
     } else fra.me.REG[6] = once_value_3;
@@ -1542,18 +1542,18 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
   fra.me.REG[3] = NIT_NULL;
   /* syntax/mmbuilder.nit:301 */
   fra.me.REG[4] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -1567,16 +1567,16 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:302 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[6])(fra.me.REG[6]);
@@ -1591,7 +1591,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
       /* syntax/mmbuilder.nit:302 */
       if (UNTAG_Bool(REGB2)) {
@@ -1618,7 +1618,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           if (!once_value_1) {
             fra.me.REG[8] = BOX_NativeString("Error: explicit constructor needed in ");
             REGB2 = TAG_Int(38);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
             once_value_1 = fra.me.REG[8];
             register_static_object(&once_value_1);
           } else fra.me.REG[8] = once_value_1;
@@ -1630,7 +1630,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           if (!once_value_2) {
             fra.me.REG[8] = BOX_NativeString(" since both super-constructor ");
             REGB2 = TAG_Int(30);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
             once_value_2 = fra.me.REG[8];
             register_static_object(&once_value_2);
           } else fra.me.REG[8] = once_value_2;
@@ -1645,7 +1645,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           if (!once_value_3) {
             fra.me.REG[8] = BOX_NativeString(" and ");
             REGB2 = TAG_Int(5);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
             once_value_3 = fra.me.REG[8];
             register_static_object(&once_value_3);
           } else fra.me.REG[8] = once_value_3;
@@ -1656,7 +1656,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           if (!once_value_4) {
             fra.me.REG[6] = BOX_NativeString(" have paramters");
             REGB2 = TAG_Int(15);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
             once_value_4 = fra.me.REG[6];
             register_static_object(&once_value_4);
           } else fra.me.REG[6] = once_value_4;
@@ -1668,14 +1668,14 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           goto label5;
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label6;
     }
   }
@@ -1712,16 +1712,16 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
       nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 316);
     }
     REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB1)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB1)) {
         /* syntax/mmbuilder.nit:316 */
         REGB1 = REGB0;
@@ -1731,21 +1731,21 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 317);
         }
         fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[3])(fra.me.REG[3]);
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1753,38 +1753,38 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB4 = TAG_Bool(0);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
         REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label7;
         label7: while(0);
         /* syntax/mmbuilder.nit:317 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label8;
       }
     }
@@ -1792,18 +1792,18 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
   }
   /* syntax/mmbuilder.nit:320 */
   fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -1817,16 +1817,16 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:321 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
@@ -1860,7 +1860,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           REGB3 = TAG_Bool(0);
           REGB1 = REGB3;
         } else {
-          /* ../lib/standard/kernel.nit:381 */
+          /* ../lib/standard/kernel.nit:434 */
           REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
           /* syntax/mmbuilder.nit:324 */
           REGB1 = REGB2;
@@ -1880,7 +1880,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
             REGB4 = TAG_Bool(0);
             REGB3 = REGB4;
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
             /* syntax/mmbuilder.nit:324 */
             REGB3 = REGB2;
@@ -1909,14 +1909,14 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
       }
       fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[7], fra.me.REG[6]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label9;
     }
   }
@@ -2063,10 +2063,9 @@ void syntax___mmbuilder___ClassBuilderVisitor___formals__eq(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_syntax___mmbuilder___ClassBuilderVisitor___visit[] = "mmbuilder::ClassBuilderVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___ClassBuilderVisitor___visit[] = "mmbuilder::ClassBuilderVisitor::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___ClassBuilderVisitor___visit(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_syntax___mmbuilder;
@@ -2080,10 +2079,6 @@ void syntax___mmbuilder___ClassBuilderVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:358 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 358);
-  }
   CALL_syntax___mmbuilder___ANode___accept_class_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2113,10 +2108,9 @@ void syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1, val_t p
   init_table[itpos2] = 1;
   return;
 }
-static const char LOCATE_syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit[] = "mmbuilder::ClassSpecializationBuilderVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit[] = "mmbuilder::ClassSpecializationBuilderVisitor::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit(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_syntax___mmbuilder;
@@ -2130,10 +2124,6 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit(val_t p0, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:366 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 366);
-  }
   CALL_syntax___mmbuilder___ANode___accept_class_specialization_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2163,10 +2153,9 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val
   init_table[itpos3] = 1;
   return;
 }
-static const char LOCATE_syntax___mmbuilder___ClassAncestorBuilder___visit[] = "mmbuilder::ClassAncestorBuilder::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___ClassAncestorBuilder___visit[] = "mmbuilder::ClassAncestorBuilder::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___ClassAncestorBuilder___visit(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_syntax___mmbuilder;
@@ -2180,10 +2169,6 @@ void syntax___mmbuilder___ClassAncestorBuilder___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:374 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 374);
-  }
   CALL_syntax___mmbuilder___ANode___accept_class_ancestor_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2213,10 +2198,9 @@ void syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1, val_t
   init_table[itpos4] = 1;
   return;
 }
-static const char LOCATE_syntax___mmbuilder___ClassVerifierVisitor___visit[] = "mmbuilder::ClassVerifierVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___ClassVerifierVisitor___visit[] = "mmbuilder::ClassVerifierVisitor::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___ClassVerifierVisitor___visit(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_syntax___mmbuilder;
@@ -2230,10 +2214,6 @@ void syntax___mmbuilder___ClassVerifierVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:382 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 382);
-  }
   CALL_syntax___mmbuilder___ANode___accept_class_verifier(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2263,10 +2243,9 @@ void syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1, val_t
   init_table[itpos5] = 1;
   return;
 }
-static const char LOCATE_syntax___mmbuilder___PropertyBuilderVisitor___visit[] = "mmbuilder::PropertyBuilderVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___PropertyBuilderVisitor___visit[] = "mmbuilder::PropertyBuilderVisitor::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___PropertyBuilderVisitor___visit(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_syntax___mmbuilder;
@@ -2280,10 +2259,6 @@ void syntax___mmbuilder___PropertyBuilderVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:393 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 393);
-  }
   CALL_syntax___mmbuilder___ANode___accept_property_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2357,10 +2332,9 @@ void syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(val_t
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___visit[] = "mmbuilder::PropertyVerifierVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___visit[] = "mmbuilder::PropertyVerifierVisitor::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___PropertyVerifierVisitor___visit(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_syntax___mmbuilder;
@@ -2374,10 +2348,6 @@ void syntax___mmbuilder___PropertyVerifierVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:405 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 405);
-  }
   CALL_syntax___mmbuilder___ANode___accept_property_verifier(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2867,7 +2837,7 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
       if (!once_value_2) {
         fra.me.REG[0] = BOX_NativeString("Error: Top modules cannot import other modules.");
         REGB0 = TAG_Int(47);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_2 = fra.me.REG[0];
         register_static_object(&once_value_2);
       } else fra.me.REG[0] = once_value_2;
@@ -2883,7 +2853,7 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("standard");
           REGB0 = TAG_Int(8);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
           once_value_4 = fra.me.REG[0];
           register_static_object(&once_value_4);
         } else fra.me.REG[0] = once_value_4;
@@ -3002,7 +2972,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Error: Module name mismatch between ");
       REGB0 = TAG_Int(36);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -3015,7 +2985,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(" and ");
       REGB0 = TAG_Int(5);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -3029,7 +2999,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_3 = fra.me.REG[0];
       register_static_object(&once_value_3);
     } else fra.me.REG[0] = once_value_3;
@@ -3375,7 +3345,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[8] = BOX_NativeString("Error: A class ");
         REGB0 = TAG_Int(15);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_1 = fra.me.REG[8];
         register_static_object(&once_value_1);
       } else fra.me.REG[8] = once_value_1;
@@ -3387,7 +3357,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[8] = BOX_NativeString(" is already defined at line ");
         REGB0 = TAG_Int(28);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_2 = fra.me.REG[8];
         register_static_object(&once_value_2);
       } else fra.me.REG[8] = once_value_2;
@@ -3405,7 +3375,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[8] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_3 = fra.me.REG[8];
         register_static_object(&once_value_3);
       } else fra.me.REG[8] = once_value_3;
@@ -3552,7 +3522,7 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
       if (!once_value_1) {
         fra.me.REG[4] = BOX_NativeString("Redef error: No class ");
         REGB0 = TAG_Int(22);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_1 = fra.me.REG[4];
         register_static_object(&once_value_1);
       } else fra.me.REG[4] = once_value_1;
@@ -3564,7 +3534,7 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString(" is imported. Remove the redef keyword to define a new class.");
         REGB0 = TAG_Int(61);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -3654,7 +3624,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Redef error: ");
       REGB0 = TAG_Int(13);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -3666,7 +3636,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(" is an imported class. Add the redef keyword to refine it.");
       REGB0 = TAG_Int(58);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -3689,7 +3659,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/mmbuilder.nit:608 */
     REGB2 = REGB1;
@@ -3702,7 +3672,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("Redef error: Formal parameter arity missmatch; got ");
       REGB2 = TAG_Int(51);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -3719,7 +3689,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(", expected ");
       REGB2 = TAG_Int(11);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -3732,7 +3702,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_6 = fra.me.REG[4];
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
@@ -3800,7 +3770,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("Redef error: cannot change kind of class ");
       REGB2 = TAG_Int(41);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
       once_value_7 = fra.me.REG[3];
       register_static_object(&once_value_7);
     } else fra.me.REG[3] = once_value_7;
@@ -3812,7 +3782,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (!once_value_8) {
       fra.me.REG[3] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
       once_value_8 = fra.me.REG[3];
       register_static_object(&once_value_8);
     } else fra.me.REG[3] = once_value_8;
@@ -3882,18 +3852,18 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
   }
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -3907,16 +3877,16 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:625 */
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
@@ -3932,7 +3902,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           if (!once_value_1) {
             fra.me.REG[8] = BOX_NativeString("Special error: Interface ");
             REGB1 = TAG_Int(25);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
             once_value_1 = fra.me.REG[8];
             register_static_object(&once_value_1);
           } else fra.me.REG[8] = once_value_1;
@@ -3944,7 +3914,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           if (!once_value_2) {
             fra.me.REG[8] = BOX_NativeString(" try to specialise enum class ");
             REGB1 = TAG_Int(30);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
             once_value_2 = fra.me.REG[8];
             register_static_object(&once_value_2);
           } else fra.me.REG[8] = once_value_2;
@@ -3956,7 +3926,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           if (!once_value_3) {
             fra.me.REG[8] = BOX_NativeString(".");
             REGB1 = TAG_Int(1);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
             once_value_3 = fra.me.REG[8];
             register_static_object(&once_value_3);
           } else fra.me.REG[8] = once_value_3;
@@ -3975,7 +3945,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_4) {
               fra.me.REG[8] = BOX_NativeString("Special error: Interface ");
               REGB1 = TAG_Int(25);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_4 = fra.me.REG[8];
               register_static_object(&once_value_4);
             } else fra.me.REG[8] = once_value_4;
@@ -3987,7 +3957,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_5) {
               fra.me.REG[8] = BOX_NativeString(" try to specialise class ");
               REGB1 = TAG_Int(25);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_5 = fra.me.REG[8];
               register_static_object(&once_value_5);
             } else fra.me.REG[8] = once_value_5;
@@ -3999,7 +3969,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_6) {
               fra.me.REG[8] = BOX_NativeString(".");
               REGB1 = TAG_Int(1);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_6 = fra.me.REG[8];
               register_static_object(&once_value_6);
             } else fra.me.REG[8] = once_value_6;
@@ -4030,7 +4000,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_7) {
               fra.me.REG[8] = BOX_NativeString("Special error: Enum class ");
               REGB1 = TAG_Int(26);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_7 = fra.me.REG[8];
               register_static_object(&once_value_7);
             } else fra.me.REG[8] = once_value_7;
@@ -4042,7 +4012,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_8) {
               fra.me.REG[8] = BOX_NativeString(" try to specialise class ");
               REGB1 = TAG_Int(25);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_8 = fra.me.REG[8];
               register_static_object(&once_value_8);
             } else fra.me.REG[8] = once_value_8;
@@ -4054,7 +4024,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_9) {
               fra.me.REG[8] = BOX_NativeString(".");
               REGB1 = TAG_Int(1);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_9 = fra.me.REG[8];
               register_static_object(&once_value_9);
             } else fra.me.REG[8] = once_value_9;
@@ -4073,7 +4043,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_10) {
               fra.me.REG[7] = BOX_NativeString("Special error: Class ");
               REGB1 = TAG_Int(21);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_10 = fra.me.REG[7];
               register_static_object(&once_value_10);
             } else fra.me.REG[7] = once_value_10;
@@ -4085,7 +4055,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_11) {
               fra.me.REG[7] = BOX_NativeString(" try to specialise enum class ");
               REGB1 = TAG_Int(30);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+              fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
               once_value_11 = fra.me.REG[7];
               register_static_object(&once_value_11);
             } else fra.me.REG[7] = once_value_11;
@@ -4097,7 +4067,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             if (!once_value_12) {
               fra.me.REG[5] = BOX_NativeString(".");
               REGB1 = TAG_Int(1);
-              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+              fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
               once_value_12 = fra.me.REG[5];
               register_static_object(&once_value_12);
             } else fra.me.REG[5] = once_value_12;
@@ -4108,14 +4078,14 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label13;
     }
   }
@@ -4524,7 +4494,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       if (!once_value_1) {
         fra.me.REG[0] = BOX_NativeString("Redef error: No class ");
         REGB0 = TAG_Int(22);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_1 = fra.me.REG[0];
         register_static_object(&once_value_1);
       } else fra.me.REG[0] = once_value_1;
@@ -4536,7 +4506,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       if (!once_value_2) {
         fra.me.REG[0] = BOX_NativeString(" is imported. Remove the redef keyword to define a new class.");
         REGB0 = TAG_Int(61);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_2 = fra.me.REG[0];
         register_static_object(&once_value_2);
       } else fra.me.REG[0] = once_value_2;
@@ -4561,18 +4531,18 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     }
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -4586,16 +4556,16 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
         /* syntax/mmbuilder.nit:709 */
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
@@ -4611,7 +4581,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             if (!once_value_3) {
               fra.me.REG[8] = BOX_NativeString("Special error: Interface ");
               REGB1 = TAG_Int(25);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_3 = fra.me.REG[8];
               register_static_object(&once_value_3);
             } else fra.me.REG[8] = once_value_3;
@@ -4623,7 +4593,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             if (!once_value_4) {
               fra.me.REG[8] = BOX_NativeString(" try to specialise enum class ");
               REGB1 = TAG_Int(30);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_4 = fra.me.REG[8];
               register_static_object(&once_value_4);
             } else fra.me.REG[8] = once_value_4;
@@ -4635,7 +4605,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             if (!once_value_5) {
               fra.me.REG[8] = BOX_NativeString(".");
               REGB1 = TAG_Int(1);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
               once_value_5 = fra.me.REG[8];
               register_static_object(&once_value_5);
             } else fra.me.REG[8] = once_value_5;
@@ -4654,7 +4624,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               if (!once_value_6) {
                fra.me.REG[8] = BOX_NativeString("Special error: Interface ");
                REGB1 = TAG_Int(25);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_6 = fra.me.REG[8];
                register_static_object(&once_value_6);
               } else fra.me.REG[8] = once_value_6;
@@ -4666,7 +4636,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               if (!once_value_7) {
                fra.me.REG[8] = BOX_NativeString(" try to specialise class ");
                REGB1 = TAG_Int(25);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_7 = fra.me.REG[8];
                register_static_object(&once_value_7);
               } else fra.me.REG[8] = once_value_7;
@@ -4678,7 +4648,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               if (!once_value_8) {
                fra.me.REG[8] = BOX_NativeString(".");
                REGB1 = TAG_Int(1);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_8 = fra.me.REG[8];
                register_static_object(&once_value_8);
               } else fra.me.REG[8] = once_value_8;
@@ -4709,7 +4679,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               if (!once_value_9) {
                fra.me.REG[8] = BOX_NativeString("Special error: Enum class ");
                REGB1 = TAG_Int(26);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_9 = fra.me.REG[8];
                register_static_object(&once_value_9);
               } else fra.me.REG[8] = once_value_9;
@@ -4721,7 +4691,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               if (!once_value_10) {
                fra.me.REG[8] = BOX_NativeString(" try to specialise class ");
                REGB1 = TAG_Int(25);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_10 = fra.me.REG[8];
                register_static_object(&once_value_10);
               } else fra.me.REG[8] = once_value_10;
@@ -4733,7 +4703,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               if (!once_value_11) {
                fra.me.REG[8] = BOX_NativeString(".");
                REGB1 = TAG_Int(1);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_11 = fra.me.REG[8];
                register_static_object(&once_value_11);
               } else fra.me.REG[8] = once_value_11;
@@ -4763,7 +4733,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_12) {
                fra.me.REG[8] = BOX_NativeString("Special error: Extern class ");
                REGB1 = TAG_Int(28);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_12 = fra.me.REG[8];
                register_static_object(&once_value_12);
                } else fra.me.REG[8] = once_value_12;
@@ -4775,7 +4745,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_13) {
                fra.me.REG[8] = BOX_NativeString(" try to specialise class ");
                REGB1 = TAG_Int(25);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_13 = fra.me.REG[8];
                register_static_object(&once_value_13);
                } else fra.me.REG[8] = once_value_13;
@@ -4787,7 +4757,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_14) {
                fra.me.REG[8] = BOX_NativeString(".");
                REGB1 = TAG_Int(1);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_14 = fra.me.REG[8];
                register_static_object(&once_value_14);
                } else fra.me.REG[8] = once_value_14;
@@ -4806,7 +4776,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_15) {
                fra.me.REG[8] = BOX_NativeString("Special error: Class ");
                REGB1 = TAG_Int(21);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_15 = fra.me.REG[8];
                register_static_object(&once_value_15);
                } else fra.me.REG[8] = once_value_15;
@@ -4818,7 +4788,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_16) {
                fra.me.REG[8] = BOX_NativeString(" try to specialise enum class ");
                REGB1 = TAG_Int(30);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_16 = fra.me.REG[8];
                register_static_object(&once_value_16);
                } else fra.me.REG[8] = once_value_16;
@@ -4830,7 +4800,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_17) {
                fra.me.REG[8] = BOX_NativeString(".");
                REGB1 = TAG_Int(1);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB1);
                once_value_17 = fra.me.REG[8];
                register_static_object(&once_value_17);
                } else fra.me.REG[8] = once_value_17;
@@ -4848,7 +4818,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_18) {
                fra.me.REG[7] = BOX_NativeString("Special error: Class ");
                REGB1 = TAG_Int(21);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_18 = fra.me.REG[7];
                register_static_object(&once_value_18);
                } else fra.me.REG[7] = once_value_18;
@@ -4860,7 +4830,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_19) {
                fra.me.REG[7] = BOX_NativeString(" try to specialise extern class ");
                REGB1 = TAG_Int(32);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB1);
                once_value_19 = fra.me.REG[7];
                register_static_object(&once_value_19);
                } else fra.me.REG[7] = once_value_19;
@@ -4872,7 +4842,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                if (!once_value_20) {
                fra.me.REG[5] = BOX_NativeString(".");
                REGB1 = TAG_Int(1);
-               fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+               fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
                once_value_20 = fra.me.REG[5];
                register_static_object(&once_value_20);
                } else fra.me.REG[5] = once_value_20;
@@ -4885,14 +4855,14 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             }
           }
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label21;
       }
     }
@@ -4924,7 +4894,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_23) {
       fra.me.REG[4] = BOX_NativeString("Redef error: ");
       REGB0 = TAG_Int(13);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_23 = fra.me.REG[4];
       register_static_object(&once_value_23);
     } else fra.me.REG[4] = once_value_23;
@@ -4936,7 +4906,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_24) {
       fra.me.REG[4] = BOX_NativeString(" is an imported class. Add the redef keyword to refine it.");
       REGB0 = TAG_Int(58);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_24 = fra.me.REG[4];
       register_static_object(&once_value_24);
     } else fra.me.REG[4] = once_value_24;
@@ -4959,7 +4929,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/mmbuilder.nit:744 */
     REGB2 = REGB1;
@@ -4972,7 +4942,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_25) {
       fra.me.REG[4] = BOX_NativeString("Redef error: Formal parameter arity mismatch; got ");
       REGB2 = TAG_Int(50);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_25 = fra.me.REG[4];
       register_static_object(&once_value_25);
     } else fra.me.REG[4] = once_value_25;
@@ -4989,7 +4959,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_26) {
       fra.me.REG[4] = BOX_NativeString(", expected ");
       REGB2 = TAG_Int(11);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_26 = fra.me.REG[4];
       register_static_object(&once_value_26);
     } else fra.me.REG[4] = once_value_26;
@@ -5002,7 +4972,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_27) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
       once_value_27 = fra.me.REG[4];
       register_static_object(&once_value_27);
     } else fra.me.REG[4] = once_value_27;
@@ -5083,7 +5053,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_28) {
       fra.me.REG[0] = BOX_NativeString("Redef error: cannot change kind of class ");
       REGB2 = TAG_Int(41);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
       once_value_28 = fra.me.REG[0];
       register_static_object(&once_value_28);
     } else fra.me.REG[0] = once_value_28;
@@ -5095,7 +5065,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     if (!once_value_29) {
       fra.me.REG[0] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
       once_value_29 = fra.me.REG[0];
       register_static_object(&once_value_29);
     } else fra.me.REG[0] = once_value_29;
@@ -5151,7 +5121,7 @@ val_t syntax___mmbuilder___AMainClassdef___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Sys");
       REGB0 = TAG_Int(3);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -5187,7 +5157,7 @@ val_t syntax___mmbuilder___ATopClassdef___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Object");
       REGB0 = TAG_Int(6);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -5238,7 +5208,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_builder(val_t p0, val_t p1){
   /* syntax/mmbuilder.nit:787 */
   REGB0 = CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* syntax/mmbuilder.nit:787 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
@@ -5443,7 +5413,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         if (!once_value_2) {
           fra.me.REG[4] = BOX_NativeString("Redef error: Cannot change formal parameter type of class ");
           REGB0 = TAG_Int(58);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_2 = fra.me.REG[4];
           register_static_object(&once_value_2);
         } else fra.me.REG[4] = once_value_2;
@@ -5454,7 +5424,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         if (!once_value_3) {
           fra.me.REG[1] = BOX_NativeString("; got ");
           REGB0 = TAG_Int(6);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_3 = fra.me.REG[1];
           register_static_object(&once_value_3);
         } else fra.me.REG[1] = once_value_3;
@@ -5471,7 +5441,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         if (!once_value_4) {
           fra.me.REG[1] = BOX_NativeString(", expected ");
           REGB0 = TAG_Int(11);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_4 = fra.me.REG[1];
           register_static_object(&once_value_4);
         } else fra.me.REG[1] = once_value_4;
@@ -5482,7 +5452,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -5746,7 +5716,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
   /* syntax/mmbuilder.nit:870 */
   if (UNTAG_Bool(REGB3)) {
@@ -5764,7 +5734,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Error: No property ");
       REGB0 = TAG_Int(19);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -5776,7 +5746,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -5787,7 +5757,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     if (!once_value_3) {
       fra.me.REG[6] = BOX_NativeString(" is inherited. Remove the redef keyword to define a new property.");
       REGB0 = TAG_Int(65);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_3 = fra.me.REG[6];
       register_static_object(&once_value_3);
     } else fra.me.REG[6] = once_value_3;
@@ -5808,7 +5778,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       if (!once_value_4) {
         fra.me.REG[6] = BOX_NativeString("Error: Attempt to define attribute ");
         REGB0 = TAG_Int(35);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_4 = fra.me.REG[6];
         register_static_object(&once_value_4);
       } else fra.me.REG[6] = once_value_4;
@@ -5819,7 +5789,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       if (!once_value_5) {
         fra.me.REG[6] = BOX_NativeString(" in the interface ");
         REGB0 = TAG_Int(18);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_5 = fra.me.REG[6];
         register_static_object(&once_value_5);
       } else fra.me.REG[6] = once_value_5;
@@ -5831,7 +5801,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       if (!once_value_6) {
         fra.me.REG[6] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
@@ -5849,7 +5819,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_7) {
           fra.me.REG[6] = BOX_NativeString("Error: Attempt to define attribute ");
           REGB0 = TAG_Int(35);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_7 = fra.me.REG[6];
           register_static_object(&once_value_7);
         } else fra.me.REG[6] = once_value_7;
@@ -5860,7 +5830,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_8) {
           fra.me.REG[6] = BOX_NativeString(" in the enum class ");
           REGB0 = TAG_Int(19);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_8 = fra.me.REG[6];
           register_static_object(&once_value_8);
         } else fra.me.REG[6] = once_value_8;
@@ -5872,7 +5842,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_9) {
           fra.me.REG[6] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_9 = fra.me.REG[6];
           register_static_object(&once_value_9);
         } else fra.me.REG[6] = once_value_9;
@@ -5890,7 +5860,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           if (!once_value_10) {
             fra.me.REG[6] = BOX_NativeString("Error: Attempt to define attribute ");
             REGB0 = TAG_Int(35);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_10 = fra.me.REG[6];
             register_static_object(&once_value_10);
           } else fra.me.REG[6] = once_value_10;
@@ -5901,7 +5871,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           if (!once_value_11) {
             fra.me.REG[6] = BOX_NativeString(" in the extern class ");
             REGB0 = TAG_Int(21);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_11 = fra.me.REG[6];
             register_static_object(&once_value_11);
           } else fra.me.REG[6] = once_value_11;
@@ -5913,7 +5883,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           if (!once_value_12) {
             fra.me.REG[6] = BOX_NativeString(".");
             REGB0 = TAG_Int(1);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_12 = fra.me.REG[6];
             register_static_object(&once_value_12);
           } else fra.me.REG[6] = once_value_12;
@@ -5937,7 +5907,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_13) {
           fra.me.REG[6] = BOX_NativeString("Error: Attempt to define a constructor ");
           REGB0 = TAG_Int(39);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_13 = fra.me.REG[6];
           register_static_object(&once_value_13);
         } else fra.me.REG[6] = once_value_13;
@@ -5948,7 +5918,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_14) {
           fra.me.REG[6] = BOX_NativeString(" in the class ");
           REGB0 = TAG_Int(14);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_14 = fra.me.REG[6];
           register_static_object(&once_value_14);
         } else fra.me.REG[6] = once_value_14;
@@ -5960,7 +5930,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_15) {
           fra.me.REG[6] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
           once_value_15 = fra.me.REG[6];
           register_static_object(&once_value_15);
         } else fra.me.REG[6] = once_value_15;
@@ -5978,7 +5948,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           if (!once_value_16) {
             fra.me.REG[5] = BOX_NativeString("Error: Attempt to define a constructor ");
             REGB0 = TAG_Int(39);
-            fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+            fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
             once_value_16 = fra.me.REG[5];
             register_static_object(&once_value_16);
           } else fra.me.REG[5] = once_value_16;
@@ -5989,7 +5959,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           if (!once_value_17) {
             fra.me.REG[5] = BOX_NativeString(" in the enum ");
             REGB0 = TAG_Int(13);
-            fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+            fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
             once_value_17 = fra.me.REG[5];
             register_static_object(&once_value_17);
           } else fra.me.REG[5] = once_value_17;
@@ -6001,7 +5971,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           if (!once_value_18) {
             fra.me.REG[5] = BOX_NativeString(".");
             REGB0 = TAG_Int(1);
-            fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+            fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
             once_value_18 = fra.me.REG[5];
             register_static_object(&once_value_18);
           } else fra.me.REG[5] = once_value_18;
@@ -6075,7 +6045,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         if (!once_value_19) {
           fra.me.REG[0] = BOX_NativeString("Error: Untyped parameter.");
           REGB0 = TAG_Int(25);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
           once_value_19 = fra.me.REG[0];
           register_static_object(&once_value_19);
         } else fra.me.REG[0] = once_value_19;
@@ -6091,18 +6061,18 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         /* syntax/mmbuilder.nit:906 */
         fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB0 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -6116,16 +6086,16 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB1)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
             /* syntax/mmbuilder.nit:907 */
             fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
@@ -6137,14 +6107,14 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
             fra.me.REG[0] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
             fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB0 = REGB1;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label20;
           }
         }
@@ -6188,18 +6158,18 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
   fra.me.REG[3] = p3;
   /* syntax/mmbuilder.nit:915 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -6213,16 +6183,16 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:917 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
@@ -6262,7 +6232,7 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
           /* syntax/mmbuilder.nit:920 */
           REGB3 = REGB2;
@@ -6275,18 +6245,18 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
         /* syntax/mmbuilder.nit:923 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[5])(fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB3 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB3 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -6300,16 +6270,16 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB2)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB3)];
             /* syntax/mmbuilder.nit:924 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
@@ -6322,7 +6292,7 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
             REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
             if (UNTAG_Bool(REGB4)) {
             } else {
-              /* ../lib/standard/kernel.nit:230 */
+              /* ../lib/standard/kernel.nit:237 */
               REGB1 = TAG_Bool((REGB2)==(REGB1));
               /* syntax/mmbuilder.nit:926 */
               REGB4 = REGB1;
@@ -6335,14 +6305,14 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
             /* syntax/mmbuilder.nit:929 */
             fra.me.REG[8] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[8])(fra.me.REG[8]);
             CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB3 = REGB4;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label2;
           }
         }
@@ -6352,14 +6322,14 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
         /* syntax/mmbuilder.nit:933 */
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -6480,7 +6450,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("Redef error: ");
       REGB0 = TAG_Int(13);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
@@ -6492,7 +6462,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -6503,7 +6473,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString(" is an inherited property. To redefine it, add the redef keyword.");
       REGB0 = TAG_Int(65);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -6529,7 +6499,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_5) {
       fra.me.REG[5] = BOX_NativeString("Redef error: A method ");
       REGB0 = TAG_Int(22);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_5 = fra.me.REG[5];
       register_static_object(&once_value_5);
     } else fra.me.REG[5] = once_value_5;
@@ -6541,7 +6511,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_6) {
       fra.me.REG[5] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_6 = fra.me.REG[5];
       register_static_object(&once_value_6);
     } else fra.me.REG[5] = once_value_6;
@@ -6552,7 +6522,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_7) {
       fra.me.REG[5] = BOX_NativeString(" cannot redefine a constructor.");
       REGB0 = TAG_Int(31);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_7 = fra.me.REG[5];
       register_static_object(&once_value_7);
     } else fra.me.REG[5] = once_value_7;
@@ -6576,7 +6546,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       if (!once_value_8) {
         fra.me.REG[5] = BOX_NativeString("Redef error: A constructor ");
         REGB2 = TAG_Int(27);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
         once_value_8 = fra.me.REG[5];
         register_static_object(&once_value_8);
       } else fra.me.REG[5] = once_value_8;
@@ -6588,7 +6558,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       if (!once_value_9) {
         fra.me.REG[5] = BOX_NativeString("::");
         REGB2 = TAG_Int(2);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
         once_value_9 = fra.me.REG[5];
         register_static_object(&once_value_9);
       } else fra.me.REG[5] = once_value_9;
@@ -6599,7 +6569,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       if (!once_value_10) {
         fra.me.REG[5] = BOX_NativeString(" cannot redefine a method.");
         REGB2 = TAG_Int(26);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
         once_value_10 = fra.me.REG[5];
         register_static_object(&once_value_10);
       } else fra.me.REG[5] = once_value_10;
@@ -6614,18 +6584,18 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
   /* syntax/mmbuilder.nit:956 */
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB2 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB2 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -6639,16 +6609,16 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
       /* syntax/mmbuilder.nit:957 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
@@ -6714,7 +6684,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         REGB4 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
         if (UNTAG_Bool(REGB4)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB3 = TAG_Bool((REGB0)==(REGB3));
           /* syntax/mmbuilder.nit:964 */
           REGB4 = REGB3;
@@ -6727,7 +6697,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_12) {
             fra.me.REG[10] = BOX_NativeString("Redef error: ");
             REGB4 = TAG_Int(13);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB4);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB4);
             once_value_12 = fra.me.REG[10];
             register_static_object(&once_value_12);
           } else fra.me.REG[10] = once_value_12;
@@ -6739,7 +6709,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_13) {
             fra.me.REG[10] = BOX_NativeString("::");
             REGB4 = TAG_Int(2);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB4);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB4);
             once_value_13 = fra.me.REG[10];
             register_static_object(&once_value_13);
           } else fra.me.REG[10] = once_value_13;
@@ -6750,7 +6720,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_14) {
             fra.me.REG[10] = BOX_NativeString(" redefines ");
             REGB4 = TAG_Int(11);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB4);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB4);
             once_value_14 = fra.me.REG[10];
             register_static_object(&once_value_14);
           } else fra.me.REG[10] = once_value_14;
@@ -6762,7 +6732,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_15) {
             fra.me.REG[10] = BOX_NativeString("::");
             REGB4 = TAG_Int(2);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB4);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB4);
             once_value_15 = fra.me.REG[10];
             register_static_object(&once_value_15);
           } else fra.me.REG[10] = once_value_15;
@@ -6773,7 +6743,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_16) {
             fra.me.REG[10] = BOX_NativeString(" with ");
             REGB4 = TAG_Int(6);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB4);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB4);
             once_value_16 = fra.me.REG[10];
             register_static_object(&once_value_16);
           } else fra.me.REG[10] = once_value_16;
@@ -6789,7 +6759,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_17) {
             fra.me.REG[10] = BOX_NativeString(" parameter(s).");
             REGB4 = TAG_Int(14);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB4);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB4);
             once_value_17 = fra.me.REG[10];
             register_static_object(&once_value_17);
           } else fra.me.REG[10] = once_value_17;
@@ -6827,7 +6797,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         REGB0 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
         if (UNTAG_Bool(REGB0)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB3 = TAG_Bool((REGB4)==(REGB3));
           /* syntax/mmbuilder.nit:968 */
           REGB0 = REGB3;
@@ -6840,7 +6810,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_18) {
             fra.me.REG[10] = BOX_NativeString("Redef error: ");
             REGB0 = TAG_Int(13);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB0);
             once_value_18 = fra.me.REG[10];
             register_static_object(&once_value_18);
           } else fra.me.REG[10] = once_value_18;
@@ -6852,7 +6822,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_19) {
             fra.me.REG[10] = BOX_NativeString("::");
             REGB0 = TAG_Int(2);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB0);
             once_value_19 = fra.me.REG[10];
             register_static_object(&once_value_19);
           } else fra.me.REG[10] = once_value_19;
@@ -6863,7 +6833,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_20) {
             fra.me.REG[10] = BOX_NativeString(" redefines ");
             REGB0 = TAG_Int(11);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB0);
             once_value_20 = fra.me.REG[10];
             register_static_object(&once_value_20);
           } else fra.me.REG[10] = once_value_20;
@@ -6875,7 +6845,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_21) {
             fra.me.REG[10] = BOX_NativeString("::");
             REGB0 = TAG_Int(2);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB0);
             once_value_21 = fra.me.REG[10];
             register_static_object(&once_value_21);
           } else fra.me.REG[10] = once_value_21;
@@ -6886,7 +6856,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_22) {
             fra.me.REG[10] = BOX_NativeString(" with ");
             REGB0 = TAG_Int(6);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB0);
             once_value_22 = fra.me.REG[10];
             register_static_object(&once_value_22);
           } else fra.me.REG[10] = once_value_22;
@@ -6902,7 +6872,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_23) {
             fra.me.REG[10] = BOX_NativeString(" closure(s).");
             REGB0 = TAG_Int(12);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+            fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB0);
             once_value_23 = fra.me.REG[10];
             register_static_object(&once_value_23);
           } else fra.me.REG[10] = once_value_23;
@@ -6916,18 +6886,18 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         /* syntax/mmbuilder.nit:972 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[8])(fra.me.REG[8]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB0 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
@@ -6941,16 +6911,16 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB3)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
             /* syntax/mmbuilder.nit:973 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
@@ -6971,7 +6941,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
             if (UNTAG_Bool(REGB5)) {
             } else {
-              /* ../lib/standard/kernel.nit:230 */
+              /* ../lib/standard/kernel.nit:237 */
               REGB4 = TAG_Bool((REGB3)==(REGB4));
               /* syntax/mmbuilder.nit:975 */
               REGB5 = REGB4;
@@ -6991,21 +6961,21 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             }
             fra.me.REG[12] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[7])(fra.me.REG[7]);
             REGB5 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB4 = TAG_Int(0);
             REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB3)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB4)) {
               REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
               REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
@@ -7013,26 +6983,26 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB3 = TAG_Bool(0);
               REGB4 = REGB3;
             }
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[12] = ATTR_standard___collection___array___Array____items(fra.me.REG[12]);
             REGB4 = TAG_Bool(fra.me.REG[12]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[12] = ((Nit_NativeArray)fra.me.REG[12])->val[UNTAG_Int(REGB5)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label24;
             label24: while(0);
             /* syntax/mmbuilder.nit:980 */
@@ -7043,14 +7013,14 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 980);
             }
             CALL_metamodel___static_type___MMParam___name__eq(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB5 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB0 = REGB5;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label25;
           }
         }
@@ -7077,7 +7047,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB5,REGB4));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB4 = TAG_Bool((REGB5)==(REGB4));
         /* syntax/mmbuilder.nit:995 */
         REGB3 = REGB4;
@@ -7090,7 +7060,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_26) {
           fra.me.REG[8] = BOX_NativeString("Redef error: ");
           REGB3 = TAG_Int(13);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_26 = fra.me.REG[8];
           register_static_object(&once_value_26);
         } else fra.me.REG[8] = once_value_26;
@@ -7102,7 +7072,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_27) {
           fra.me.REG[8] = BOX_NativeString("::");
           REGB3 = TAG_Int(2);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_27 = fra.me.REG[8];
           register_static_object(&once_value_27);
         } else fra.me.REG[8] = once_value_27;
@@ -7113,7 +7083,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_28) {
           fra.me.REG[8] = BOX_NativeString(" redefines ");
           REGB3 = TAG_Int(11);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_28 = fra.me.REG[8];
           register_static_object(&once_value_28);
         } else fra.me.REG[8] = once_value_28;
@@ -7125,7 +7095,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_29) {
           fra.me.REG[8] = BOX_NativeString("::");
           REGB3 = TAG_Int(2);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_29 = fra.me.REG[8];
           register_static_object(&once_value_29);
         } else fra.me.REG[8] = once_value_29;
@@ -7136,7 +7106,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_30) {
           fra.me.REG[8] = BOX_NativeString(" with ");
           REGB3 = TAG_Int(6);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_30 = fra.me.REG[8];
           register_static_object(&once_value_30);
         } else fra.me.REG[8] = once_value_30;
@@ -7152,7 +7122,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_31) {
           fra.me.REG[8] = BOX_NativeString(" parameter(s).");
           REGB3 = TAG_Int(14);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
           once_value_31 = fra.me.REG[8];
           register_static_object(&once_value_31);
         } else fra.me.REG[8] = once_value_31;
@@ -7173,7 +7143,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB4));
         /* syntax/mmbuilder.nit:997 */
         if (UNTAG_Bool(REGB4)) {
@@ -7187,16 +7157,16 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1000);
             }
             REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             while(1) {
               REGB5 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB5)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-              /* ../lib/standard/kernel.nit:355 */
+              /* ../lib/standard/kernel.nit:404 */
               if (UNTAG_Bool(REGB5)) {
                /* syntax/mmbuilder.nit:1000 */
                REGB5 = REGB4;
@@ -7232,7 +7202,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_32) {
                fra.me.REG[11] = BOX_NativeString("Redef error: Expected ");
                REGB6 = TAG_Int(22);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB6);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB6);
                once_value_32 = fra.me.REG[11];
                register_static_object(&once_value_32);
                } else fra.me.REG[11] = once_value_32;
@@ -7248,7 +7218,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_33) {
                fra.me.REG[11] = BOX_NativeString(", as in ");
                REGB5 = TAG_Int(8);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB5);
                once_value_33 = fra.me.REG[11];
                register_static_object(&once_value_33);
                } else fra.me.REG[11] = once_value_33;
@@ -7260,7 +7230,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_34) {
                fra.me.REG[11] = BOX_NativeString("::");
                REGB5 = TAG_Int(2);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB5);
                once_value_34 = fra.me.REG[11];
                register_static_object(&once_value_34);
                } else fra.me.REG[11] = once_value_34;
@@ -7271,7 +7241,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_35) {
                fra.me.REG[11] = BOX_NativeString(".");
                REGB5 = TAG_Int(1);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB5);
                once_value_35 = fra.me.REG[11];
                register_static_object(&once_value_35);
                } else fra.me.REG[11] = once_value_35;
@@ -7280,14 +7250,14 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8], fra.me.REG[10]);
                }
-               /* ../lib/standard/kernel.nit:357 */
+               /* ../lib/standard/kernel.nit:406 */
                REGB5 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
-               /* ../lib/standard/kernel.nit:357 */
+               /* ../lib/standard/kernel.nit:406 */
                REGB4 = REGB5;
               } else {
-               /* ../lib/standard/kernel.nit:355 */
+               /* ../lib/standard/kernel.nit:404 */
                goto label36;
               }
             }
@@ -7324,7 +7294,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_37) {
                fra.me.REG[11] = BOX_NativeString("Redef error: Expected ");
                REGB4 = TAG_Int(22);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB4);
                once_value_37 = fra.me.REG[11];
                register_static_object(&once_value_37);
                } else fra.me.REG[11] = once_value_37;
@@ -7341,7 +7311,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_38) {
                fra.me.REG[11] = BOX_NativeString(", as in the parameter of ");
                REGB4 = TAG_Int(25);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB4);
                once_value_38 = fra.me.REG[11];
                register_static_object(&once_value_38);
                } else fra.me.REG[11] = once_value_38;
@@ -7353,7 +7323,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_39) {
                fra.me.REG[11] = BOX_NativeString("::");
                REGB4 = TAG_Int(2);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB4);
                once_value_39 = fra.me.REG[11];
                register_static_object(&once_value_39);
                } else fra.me.REG[11] = once_value_39;
@@ -7364,7 +7334,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_40) {
                fra.me.REG[11] = BOX_NativeString(".");
                REGB4 = TAG_Int(1);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB4);
                once_value_40 = fra.me.REG[11];
                register_static_object(&once_value_40);
                } else fra.me.REG[11] = once_value_40;
@@ -7430,7 +7400,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_41) {
           fra.me.REG[12] = BOX_NativeString("Redef error: The procedure ");
           REGB4 = TAG_Int(27);
-          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
           once_value_41 = fra.me.REG[12];
           register_static_object(&once_value_41);
         } else fra.me.REG[12] = once_value_41;
@@ -7442,7 +7412,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_42) {
           fra.me.REG[12] = BOX_NativeString("::");
           REGB4 = TAG_Int(2);
-          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
           once_value_42 = fra.me.REG[12];
           register_static_object(&once_value_42);
         } else fra.me.REG[12] = once_value_42;
@@ -7453,7 +7423,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_43) {
           fra.me.REG[12] = BOX_NativeString(" redefines the function ");
           REGB4 = TAG_Int(24);
-          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
           once_value_43 = fra.me.REG[12];
           register_static_object(&once_value_43);
         } else fra.me.REG[12] = once_value_43;
@@ -7465,7 +7435,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_44) {
           fra.me.REG[12] = BOX_NativeString("::");
           REGB4 = TAG_Int(2);
-          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
           once_value_44 = fra.me.REG[12];
           register_static_object(&once_value_44);
         } else fra.me.REG[12] = once_value_44;
@@ -7476,7 +7446,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         if (!once_value_45) {
           fra.me.REG[12] = BOX_NativeString(".");
           REGB4 = TAG_Int(1);
-          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
           once_value_45 = fra.me.REG[12];
           register_static_object(&once_value_45);
         } else fra.me.REG[12] = once_value_45;
@@ -7523,7 +7493,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_46) {
             fra.me.REG[12] = BOX_NativeString("Redef error: The function ");
             REGB4 = TAG_Int(26);
-            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
             once_value_46 = fra.me.REG[12];
             register_static_object(&once_value_46);
           } else fra.me.REG[12] = once_value_46;
@@ -7535,7 +7505,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_47) {
             fra.me.REG[12] = BOX_NativeString("::");
             REGB4 = TAG_Int(2);
-            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
             once_value_47 = fra.me.REG[12];
             register_static_object(&once_value_47);
           } else fra.me.REG[12] = once_value_47;
@@ -7546,7 +7516,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_48) {
             fra.me.REG[12] = BOX_NativeString(" redefines the procedure ");
             REGB4 = TAG_Int(25);
-            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
             once_value_48 = fra.me.REG[12];
             register_static_object(&once_value_48);
           } else fra.me.REG[12] = once_value_48;
@@ -7558,7 +7528,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_49) {
             fra.me.REG[12] = BOX_NativeString("::");
             REGB4 = TAG_Int(2);
-            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
             once_value_49 = fra.me.REG[12];
             register_static_object(&once_value_49);
           } else fra.me.REG[12] = once_value_49;
@@ -7569,7 +7539,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (!once_value_50) {
             fra.me.REG[12] = BOX_NativeString(".");
             REGB4 = TAG_Int(1);
-            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB4);
             once_value_50 = fra.me.REG[12];
             register_static_object(&once_value_50);
           } else fra.me.REG[12] = once_value_50;
@@ -7658,7 +7628,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             if (!once_value_51) {
               fra.me.REG[13] = BOX_NativeString("Redef error: Expected ");
               REGB4 = TAG_Int(22);
-              fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
+              fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB4);
               once_value_51 = fra.me.REG[13];
               register_static_object(&once_value_51);
             } else fra.me.REG[13] = once_value_51;
@@ -7669,7 +7639,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             if (!once_value_52) {
               fra.me.REG[13] = BOX_NativeString(", as in ");
               REGB4 = TAG_Int(8);
-              fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
+              fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB4);
               once_value_52 = fra.me.REG[13];
               register_static_object(&once_value_52);
             } else fra.me.REG[13] = once_value_52;
@@ -7681,7 +7651,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             if (!once_value_53) {
               fra.me.REG[13] = BOX_NativeString("::");
               REGB4 = TAG_Int(2);
-              fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
+              fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB4);
               once_value_53 = fra.me.REG[13];
               register_static_object(&once_value_53);
             } else fra.me.REG[13] = once_value_53;
@@ -7692,7 +7662,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             if (!once_value_54) {
               fra.me.REG[13] = BOX_NativeString(".");
               REGB4 = TAG_Int(1);
-              fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
+              fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB4);
               once_value_54 = fra.me.REG[13];
               register_static_object(&once_value_54);
             } else fra.me.REG[13] = once_value_54;
@@ -7714,7 +7684,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
               if (UNTAG_Bool(REGB3)) {
               } else {
-               /* ../lib/standard/kernel.nit:230 */
+               /* ../lib/standard/kernel.nit:237 */
                REGB4 = TAG_Bool((REGB0)==(REGB4));
                /* syntax/mmbuilder.nit:1032 */
                REGB3 = REGB4;
@@ -7730,7 +7700,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               if (!once_value_55) {
                fra.me.REG[12] = BOX_NativeString("Redef error: Incompatible redefinition of ");
                REGB3 = TAG_Int(42);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB3);
                once_value_55 = fra.me.REG[12];
                register_static_object(&once_value_55);
               } else fra.me.REG[12] = once_value_55;
@@ -7742,7 +7712,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               if (!once_value_56) {
                fra.me.REG[12] = BOX_NativeString("::");
                REGB3 = TAG_Int(2);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB3);
                once_value_56 = fra.me.REG[12];
                register_static_object(&once_value_56);
               } else fra.me.REG[12] = once_value_56;
@@ -7753,7 +7723,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               if (!once_value_57) {
                fra.me.REG[12] = BOX_NativeString(" with ");
                REGB3 = TAG_Int(6);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB3);
                once_value_57 = fra.me.REG[12];
                register_static_object(&once_value_57);
               } else fra.me.REG[12] = once_value_57;
@@ -7765,7 +7735,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               if (!once_value_58) {
                fra.me.REG[12] = BOX_NativeString("::");
                REGB3 = TAG_Int(2);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB3);
                once_value_58 = fra.me.REG[12];
                register_static_object(&once_value_58);
               } else fra.me.REG[12] = once_value_58;
@@ -7776,7 +7746,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               if (!once_value_59) {
                fra.me.REG[12] = BOX_NativeString("");
                REGB3 = TAG_Int(0);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               fra.me.REG[12] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[12])(fra.me.REG[12], REGB3);
                once_value_59 = fra.me.REG[12];
                register_static_object(&once_value_59);
               } else fra.me.REG[12] = once_value_59;
@@ -7848,7 +7818,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_60) {
                fra.me.REG[7] = BOX_NativeString("Redef error: Expected ");
                REGB3 = TAG_Int(22);
-               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB3);
+               fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB3);
                once_value_60 = fra.me.REG[7];
                register_static_object(&once_value_60);
                } else fra.me.REG[7] = once_value_60;
@@ -7859,7 +7829,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_61) {
                fra.me.REG[8] = BOX_NativeString(", as in ");
                REGB3 = TAG_Int(8);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
                once_value_61 = fra.me.REG[8];
                register_static_object(&once_value_61);
                } else fra.me.REG[8] = once_value_61;
@@ -7871,7 +7841,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_62) {
                fra.me.REG[8] = BOX_NativeString("::");
                REGB3 = TAG_Int(2);
-               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
+               fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB3);
                once_value_62 = fra.me.REG[8];
                register_static_object(&once_value_62);
                } else fra.me.REG[8] = once_value_62;
@@ -7882,7 +7852,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                if (!once_value_63) {
                fra.me.REG[9] = BOX_NativeString(".");
                REGB3 = TAG_Int(1);
-               fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB3);
+               fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB3);
                once_value_63 = fra.me.REG[9];
                register_static_object(&once_value_63);
                } else fra.me.REG[9] = once_value_63;
@@ -7895,14 +7865,14 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           }
         }
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = REGB3;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label64;
     }
   }
@@ -7913,7 +7883,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* syntax/mmbuilder.nit:1040 */
     REGB3 = REGB2;
@@ -7924,7 +7894,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB3)==(REGB1));
       /* syntax/mmbuilder.nit:1040 */
       REGB2 = REGB1;
@@ -7941,7 +7911,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_65) {
       fra.me.REG[6] = BOX_NativeString("Redef error: ");
       REGB2 = TAG_Int(13);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
       once_value_65 = fra.me.REG[6];
       register_static_object(&once_value_65);
     } else fra.me.REG[6] = once_value_65;
@@ -7953,7 +7923,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_66) {
       fra.me.REG[6] = BOX_NativeString("::");
       REGB2 = TAG_Int(2);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
       once_value_66 = fra.me.REG[6];
       register_static_object(&once_value_66);
     } else fra.me.REG[6] = once_value_66;
@@ -7964,7 +7934,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     if (!once_value_67) {
       fra.me.REG[2] = BOX_NativeString(" redefinition cannot change visibility.");
       REGB2 = TAG_Int(39);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
       once_value_67 = fra.me.REG[2];
       register_static_object(&once_value_67);
     } else fra.me.REG[2] = once_value_67;
@@ -8103,7 +8073,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString("@");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_1 = fra.me.REG[0];
       register_static_object(&once_value_1);
     } else fra.me.REG[0] = once_value_1;
@@ -8268,7 +8238,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("=");
         REGB0 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -8287,7 +8257,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       if (!once_value_3) {
         fra.me.REG[0] = BOX_NativeString("=");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_3 = fra.me.REG[0];
         register_static_object(&once_value_3);
       } else fra.me.REG[0] = once_value_3;
@@ -8432,7 +8402,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Not yet implemented: Attribute definition ");
       REGB0 = TAG_Int(42);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -8445,7 +8415,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -8457,7 +8427,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString(" requires an explicit type.");
       REGB0 = TAG_Int(27);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_4 = fra.me.REG[5];
       register_static_object(&once_value_4);
     } else fra.me.REG[5] = once_value_4;
@@ -8707,7 +8677,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       if (!once_value_6) {
         fra.me.REG[6] = BOX_NativeString("value");
         REGB1 = TAG_Int(5);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
@@ -8972,7 +8942,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("init");
           REGB0 = TAG_Int(4);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_2 = fra.me.REG[1];
           register_static_object(&once_value_2);
         } else fra.me.REG[1] = once_value_2;
@@ -8988,7 +8958,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         if (!once_value_4) {
           fra.me.REG[4] = BOX_NativeString("main");
           REGB0 = TAG_Int(4);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_4 = fra.me.REG[4];
           register_static_object(&once_value_4);
         } else fra.me.REG[4] = once_value_4;
@@ -9025,7 +8995,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       if (!once_value_6) {
         fra.me.REG[0] = BOX_NativeString("-");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
       } else fra.me.REG[0] = once_value_6;
@@ -9075,7 +9045,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
         if (UNTAG_Bool(REGB2)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
           /* syntax/mmbuilder.nit:1158 */
           REGB2 = REGB1;
@@ -9090,7 +9060,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
           if (!once_value_8) {
             fra.me.REG[0] = BOX_NativeString("unary -");
             REGB2 = TAG_Int(7);
-            fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+            fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB2);
             once_value_8 = fra.me.REG[0];
             register_static_object(&once_value_8);
           } else fra.me.REG[0] = once_value_8;
@@ -9211,7 +9181,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   } else {
     /* syntax/mmbuilder.nit:1182 */
@@ -9393,7 +9363,7 @@ void syntax___mmbuilder___AExternPropdef___accept_property_verifier(val_t p0, va
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
     /* syntax/mmbuilder.nit:1213 */
     REGB2 = TAG_Int(2);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
     /* syntax/mmbuilder.nit:1213 */
     fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
@@ -9587,7 +9557,7 @@ val_t syntax___mmbuilder___MethidAccumulator___name(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-static const char LOCATE_syntax___mmbuilder___MethidAccumulator___visit[] = "mmbuilder::MethidAccumulator::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___mmbuilder___MethidAccumulator___visit[] = "mmbuilder::MethidAccumulator::(parser_nodes::Visitor::visit)";
 void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -9606,7 +9576,7 @@ void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/mmbuilder.nit:1257 */
-  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
   if (UNTAG_Bool(REGB0)) {
     /* syntax/mmbuilder.nit:1258 */
     REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
@@ -9615,19 +9585,11 @@ void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1258);
     }
     fra.me.REG[2] = ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1258);
-    }
     fra.me.REG[3] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   } else {
     /* syntax/mmbuilder.nit:1260 */
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1260);
-    }
-    CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_nodes___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -9670,9 +9632,9 @@ void syntax___mmbuilder___AMethid___accept_property_builder(val_t p0, val_t p1){
   /* syntax/mmbuilder.nit:1268 */
   fra.me.REG[2] = fra.me.REG[0];
   /* syntax/mmbuilder.nit:1270 */
-  fra.me.REG[3] = NEW_MethidAccumulator_parser___parser_prod___Visitor___init();
+  fra.me.REG[3] = NEW_MethidAccumulator_parser___parser_nodes___Visitor___init();
   /* syntax/mmbuilder.nit:1271 */
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   /* syntax/mmbuilder.nit:1272 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___MethidAccumulator___name(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
@@ -9773,7 +9735,7 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("Syntax error: untyped parameter.");
           REGB0 = TAG_Int(32);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_2 = fra.me.REG[1];
           register_static_object(&once_value_2);
         } else fra.me.REG[1] = once_value_2;
@@ -9813,18 +9775,18 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         /* syntax/mmbuilder.nit:1290 */
         fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[4])(fra.me.REG[4]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB0 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -9838,16 +9800,16 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB1)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
             /* syntax/mmbuilder.nit:1291 */
             fra.me.REG[7] = CALL_syntax___mmbuilder___AParam___stype(fra.me.REG[6])(fra.me.REG[6]);
@@ -9860,14 +9822,14 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
             fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[7], fra.me.REG[6]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB0 = REGB1;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label3;
           }
         }
@@ -9935,7 +9897,7 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
         /* syntax/mmbuilder.nit:1302 */
         if (UNTAG_Bool(REGB1)) {
@@ -9953,18 +9915,18 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         /* syntax/mmbuilder.nit:1305 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[5])(fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB1 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -9978,16 +9940,16 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB0)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
             /* syntax/mmbuilder.nit:1306 */
             fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
@@ -10000,14 +9962,14 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
             fra.me.REG[0] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
             fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB0 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = REGB0;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label4;
           }
         }
@@ -10049,7 +10011,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* syntax/mmbuilder.nit:1314 */
   if (UNTAG_Bool(REGB1)) {
@@ -10323,18 +10285,18 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
     /* syntax/mmbuilder.nit:1344 */
     fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[1])(fra.me.REG[1]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -10348,16 +10310,16 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
         /* syntax/mmbuilder.nit:1345 */
         CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
@@ -10368,13 +10330,13 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
           fra.me.REG[6] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
           REGB1 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[6])(fra.me.REG[6]);
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:239 */
+          /* ../lib/standard/kernel.nit:246 */
           REGB2 = TAG_Int(-UNTAG_Int(REGB2));
           /* syntax/mmbuilder.nit:1347 */
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ../lib/standard/kernel.nit:230 */
+            /* ../lib/standard/kernel.nit:237 */
             REGB2 = TAG_Bool((REGB1)==(REGB2));
             /* syntax/mmbuilder.nit:1347 */
             REGB3 = REGB2;
@@ -10389,7 +10351,7 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
             if (!once_value_2) {
               fra.me.REG[6] = BOX_NativeString("Error: A vararg parameter is already defined.");
               REGB3 = TAG_Int(45);
-              fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+              fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
               once_value_2 = fra.me.REG[6];
               register_static_object(&once_value_2);
             } else fra.me.REG[6] = once_value_2;
@@ -10403,14 +10365,14 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
         /* syntax/mmbuilder.nit:1354 */
         fra.me.REG[5] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB3;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label3;
       }
     }
@@ -10628,7 +10590,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Syntax Error: A break block cannot have a return value.");
       REGB0 = TAG_Int(55);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -10645,7 +10607,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("break");
       REGB0 = TAG_Int(5);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_4 = fra.me.REG[5];
       register_static_object(&once_value_4);
     } else fra.me.REG[5] = once_value_4;
@@ -10700,18 +10662,18 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   fra.me.REG[1] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[0], fra.me.REG[1], REGB1, REGB0);
   /* syntax/mmbuilder.nit:1392 */
   fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -10725,16 +10687,16 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
       /* syntax/mmbuilder.nit:1393 */
       fra.me.REG[8] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[7])(fra.me.REG[7]);
@@ -10753,7 +10715,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         if (!once_value_5) {
           fra.me.REG[10] = BOX_NativeString("Error: A closure '!");
           REGB1 = TAG_Int(19);
-          fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+          fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
           once_value_5 = fra.me.REG[10];
           register_static_object(&once_value_5);
         } else fra.me.REG[10] = once_value_5;
@@ -10764,7 +10726,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         if (!once_value_6) {
           fra.me.REG[10] = BOX_NativeString("' already defined at ");
           REGB1 = TAG_Int(21);
-          fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+          fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
           once_value_6 = fra.me.REG[10];
           register_static_object(&once_value_6);
         } else fra.me.REG[10] = once_value_6;
@@ -10779,7 +10741,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         if (!once_value_7) {
           fra.me.REG[10] = BOX_NativeString(".");
           REGB1 = TAG_Int(1);
-          fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+          fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB1);
           once_value_7 = fra.me.REG[10];
           register_static_object(&once_value_7);
         } else fra.me.REG[10] = once_value_7;
@@ -10790,14 +10752,14 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         /* syntax/mmbuilder.nit:1395 */
         goto label1;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label8;
     }
   }
@@ -10863,7 +10825,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* syntax/mmbuilder.nit:1409 */
   if (UNTAG_Bool(REGB1)) {
@@ -10902,7 +10864,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:236 */
+  /* ../lib/standard/kernel.nit:243 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
   /* syntax/mmbuilder.nit:1413 */
   if (UNTAG_Bool(REGB0)) {
@@ -10912,7 +10874,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Access error: Class ");
       REGB0 = TAG_Int(20);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -10923,7 +10885,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString(" is private and cannot be used in the signature of the non-private property ");
       REGB0 = TAG_Int(76);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -10934,7 +10896,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
index 7b406df..7cacd8e 100644 (file)
@@ -523,7 +523,7 @@ val_t syntax___mmbuilder___MethidAccumulator___name(val_t p0);
 typedef val_t (*syntax___mmbuilder___MethidAccumulator___name_t)(val_t p0);
 void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1);
 typedef void (*syntax___mmbuilder___MethidAccumulator___visit_t)(val_t p0, val_t p1);
-val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init();
+val_t NEW_MethidAccumulator_parser___parser_nodes___Visitor___init();
 val_t syntax___mmbuilder___AMethid___name(val_t p0);
 typedef val_t (*syntax___mmbuilder___AMethid___name_t)(val_t p0);
 void syntax___mmbuilder___AMethid___accept_property_builder(val_t p0, val_t p1);
index cb3cdd9..bf4fc9b 100644 (file)
@@ -36,7 +36,7 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* syntax/scope.nit:43 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* syntax/scope.nit:44 */
   while(1) {
@@ -46,7 +46,7 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* syntax/scope.nit:44 */
     if (UNTAG_Bool(REGB0)) {
@@ -57,23 +57,23 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 45);
       }
       fra.me.REG[2] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
         REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -81,26 +81,26 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Bool(0);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
       /* syntax/scope.nit:46 */
@@ -124,7 +124,7 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
       }
       /* syntax/scope.nit:48 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* syntax/scope.nit:48 */
       REGB1 = REGB0;
@@ -197,7 +197,7 @@ void syntax___scope___ScopeContext___add_variable(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Error: '");
       REGB0 = TAG_Int(8);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -208,7 +208,7 @@ void syntax___scope___ScopeContext___add_variable(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("' already defined at ");
       REGB0 = TAG_Int(21);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -235,7 +235,7 @@ void syntax___scope___ScopeContext___add_variable(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[6] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_3 = fra.me.REG[6];
       register_static_object(&once_value_3);
     } else fra.me.REG[6] = once_value_3;
@@ -372,7 +372,7 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     /* syntax/scope.nit:79 */
     REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:240 */
+    /* ../lib/standard/kernel.nit:247 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
     /* syntax/scope.nit:80 */
     while(1) {
@@ -382,7 +382,7 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
       /* syntax/scope.nit:80 */
       if (UNTAG_Bool(REGB0)) {
@@ -393,23 +393,23 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
           nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 81);
         }
         fra.me.REG[4] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         REGB0 = REGB1;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB2 = TAG_Int(0);
         REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB3)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
           REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -417,26 +417,26 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB3 = TAG_Bool(0);
           REGB2 = REGB3;
         }
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
         REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label1;
         label1: while(0);
         /* syntax/scope.nit:82 */
@@ -467,7 +467,7 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
           if (!once_value_2) {
             fra.me.REG[7] = BOX_NativeString("Syntax error: label ");
             REGB0 = TAG_Int(20);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
             once_value_2 = fra.me.REG[7];
             register_static_object(&once_value_2);
           } else fra.me.REG[7] = once_value_2;
@@ -478,7 +478,7 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
           if (!once_value_3) {
             fra.me.REG[7] = BOX_NativeString(" already defined at ");
             REGB0 = TAG_Int(20);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
             once_value_3 = fra.me.REG[7];
             register_static_object(&once_value_3);
           } else fra.me.REG[7] = once_value_3;
@@ -499,7 +499,7 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
           if (!once_value_4) {
             fra.me.REG[7] = BOX_NativeString(".");
             REGB0 = TAG_Int(1);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+            fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
             once_value_4 = fra.me.REG[7];
             register_static_object(&once_value_4);
           } else fra.me.REG[7] = once_value_4;
@@ -512,7 +512,7 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
         }
         /* syntax/scope.nit:86 */
         REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
         /* syntax/scope.nit:86 */
         REGB1 = REGB0;
@@ -570,7 +570,7 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* syntax/scope.nit:96 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* syntax/scope.nit:97 */
   while(1) {
@@ -580,7 +580,7 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* syntax/scope.nit:97 */
     if (UNTAG_Bool(REGB0)) {
@@ -591,23 +591,23 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
         nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 98);
       }
       fra.me.REG[1] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
         REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -615,26 +615,26 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Bool(0);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
       REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
       /* syntax/scope.nit:99 */
@@ -651,7 +651,7 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
       }
       /* syntax/scope.nit:100 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* syntax/scope.nit:100 */
       REGB1 = REGB0;
@@ -709,7 +709,7 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* syntax/scope.nit:109 */
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* syntax/scope.nit:110 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ALabel___n_id(fra.me.REG[1])(fra.me.REG[1]);
@@ -722,7 +722,7 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:236 */
+    /* ../lib/standard/kernel.nit:243 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* syntax/scope.nit:111 */
     if (UNTAG_Bool(REGB0)) {
@@ -733,23 +733,23 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 112);
       }
       fra.me.REG[3] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB2 = TAG_Int(0);
       REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -757,26 +757,26 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB3 = TAG_Bool(0);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
       /* syntax/scope.nit:113 */
@@ -804,7 +804,7 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
       }
       /* syntax/scope.nit:114 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:240 */
+      /* ../lib/standard/kernel.nit:247 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* syntax/scope.nit:114 */
       REGB1 = REGB0;
@@ -821,7 +821,7 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
   if (!once_value_4) {
     fra.me.REG[5] = BOX_NativeString("Syntax error: invalid label ");
     REGB1 = TAG_Int(28);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_4 = fra.me.REG[5];
     register_static_object(&once_value_4);
   } else fra.me.REG[5] = once_value_4;
@@ -832,7 +832,7 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString(".");
     REGB1 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -1496,7 +1496,7 @@ val_t syntax___scope___AEscapeExpr___compute_escapable_block(val_t p0, val_t p1)
       if (!once_value_1) {
         fra.me.REG[4] = BOX_NativeString("Syntax Error: '");
         REGB0 = TAG_Int(15);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_1 = fra.me.REG[4];
         register_static_object(&once_value_1);
       } else fra.me.REG[4] = once_value_1;
@@ -1507,7 +1507,7 @@ val_t syntax___scope___AEscapeExpr___compute_escapable_block(val_t p0, val_t p1)
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString("' statment outside block.");
         REGB0 = TAG_Int(25);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -1544,7 +1544,7 @@ val_t syntax___scope___AContinueExpr___kwname(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("continue");
     REGB0 = TAG_Int(8);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -1573,7 +1573,7 @@ val_t syntax___scope___ABreakExpr___kwname(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("break");
     REGB0 = TAG_Int(5);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
index 594c905..6fee6de 100644 (file)
@@ -301,7 +301,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/syntax_base.nit:71 */
     REGB2 = REGB1;
@@ -316,7 +316,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* syntax/syntax_base.nit:73 */
       REGB3 = REGB1;
@@ -328,7 +328,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Visibility error: Class ");
         REGB3 = TAG_Int(24);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -339,7 +339,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" comes from the hidden module ");
         REGB3 = TAG_Int(30);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB3);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -350,7 +350,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString(".");
         REGB3 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB3);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -371,7 +371,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
       /* syntax/syntax_base.nit:76 */
       if (UNTAG_Bool(REGB1)) {
@@ -381,7 +381,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
         if (!once_value_5) {
           fra.me.REG[4] = BOX_NativeString("Visibility error: Class ");
           REGB1 = TAG_Int(24);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
           once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
         } else fra.me.REG[4] = once_value_5;
@@ -392,7 +392,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
         if (!once_value_6) {
           fra.me.REG[0] = BOX_NativeString(" is private.");
           REGB1 = TAG_Int(12);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
+          fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB1);
           once_value_6 = fra.me.REG[0];
           register_static_object(&once_value_6);
         } else fra.me.REG[0] = once_value_6;
@@ -581,7 +581,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* syntax/syntax_base.nit:110 */
     REGB3 = REGB2;
@@ -596,7 +596,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB4)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
       /* syntax/syntax_base.nit:112 */
       REGB4 = REGB2;
@@ -608,7 +608,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Visibility error: Property ");
         REGB4 = TAG_Int(27);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB4);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB4);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -619,7 +619,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" comes from the hidden module ");
         REGB4 = TAG_Int(30);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB4);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB4);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -630,7 +630,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString(".");
         REGB4 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB4);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB4);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -651,7 +651,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB2));
       /* syntax/syntax_base.nit:116 */
       if (UNTAG_Bool(REGB2)) {
@@ -661,7 +661,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         if (!once_value_5) {
           fra.me.REG[4] = BOX_NativeString("Visibility error: Property ");
           REGB2 = TAG_Int(27);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
         } else fra.me.REG[4] = once_value_5;
@@ -672,7 +672,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         if (!once_value_6) {
           fra.me.REG[4] = BOX_NativeString(" is private.");
           REGB2 = TAG_Int(12);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_6 = fra.me.REG[4];
           register_static_object(&once_value_6);
         } else fra.me.REG[4] = once_value_6;
@@ -693,7 +693,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB4));
         /* syntax/syntax_base.nit:119 */
         if (UNTAG_Bool(REGB4)) {
@@ -709,7 +709,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
           if (!once_value_7) {
             fra.me.REG[4] = BOX_NativeString("Visibility error: Property ");
             REGB0 = TAG_Int(27);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
             once_value_7 = fra.me.REG[4];
             register_static_object(&once_value_7);
           } else fra.me.REG[4] = once_value_7;
@@ -720,7 +720,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
           if (!once_value_8) {
             fra.me.REG[0] = BOX_NativeString(" is protected and can only acceded by self.");
             REGB0 = TAG_Int(43);
-            fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+            fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
             once_value_8 = fra.me.REG[0];
             register_static_object(&once_value_8);
           } else fra.me.REG[0] = once_value_8;
@@ -1465,7 +1465,7 @@ void syntax___syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2,
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("init");
       REGB0 = TAG_Int(4);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -1655,7 +1655,7 @@ val_t syntax___syntax_base___VarVariable___kind(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("variable");
       REGB0 = TAG_Int(8);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -1715,7 +1715,7 @@ val_t syntax___syntax_base___ParamVariable___kind(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("parameter");
       REGB0 = TAG_Int(9);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -1775,7 +1775,7 @@ val_t syntax___syntax_base___AutoVariable___kind(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("automatic variable");
       REGB0 = TAG_Int(18);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -1835,7 +1835,7 @@ val_t syntax___syntax_base___ClosureVariable___kind(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("closure");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -1955,7 +1955,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name(val_t p0, val_t
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("Missing necessary class: \"");
       REGB0 = TAG_Int(26);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
@@ -1966,7 +1966,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("\"");
       REGB0 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -2042,7 +2042,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(va
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Missing necessary class: \"");
       REGB0 = TAG_Int(26);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -2053,7 +2053,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(va
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("\"");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -2099,7 +2099,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_object(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
       REGB0 = TAG_Int(6);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2137,7 +2137,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_bool(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Bool");
       REGB0 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2175,7 +2175,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_int(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Int");
       REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2213,7 +2213,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_float(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Float");
       REGB0 = TAG_Int(5);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2251,7 +2251,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_char(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Char");
       REGB0 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2289,7 +2289,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_string(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("String");
       REGB0 = TAG_Int(6);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2327,7 +2327,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_nativestring(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("NativeString");
       REGB0 = TAG_Int(12);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2368,7 +2368,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_array(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("Array");
       REGB0 = TAG_Int(5);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2409,7 +2409,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_discrete(val_t p0){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Discrete");
       REGB0 = TAG_Int(8);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -2450,7 +2450,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___type_range(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("Range");
       REGB0 = TAG_Int(5);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -2526,13 +2526,13 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, v
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* syntax/syntax_base.nit:383 */
-    fra.me.REG[3] = CALL_parser___parser_prod___Visitor___current_node(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[3] = CALL_parser___parser_nodes___Visitor___current_node(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("Fatal Error: ");
       REGB0 = TAG_Int(13);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
@@ -2543,7 +2543,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, v
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString(" must have a property named ");
       REGB0 = TAG_Int(28);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -2554,7 +2554,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, v
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -2956,7 +2956,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1
   if (!once_value_2) {
     fra.me.REG[5] = BOX_NativeString("Type error: expected ");
     REGB1 = TAG_Int(21);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
     once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
   } else fra.me.REG[5] = once_value_2;
@@ -2967,7 +2967,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(", got ");
     REGB1 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
@@ -2978,7 +2978,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -3028,7 +3028,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* syntax/syntax_base.nit:439 */
       REGB2 = REGB1;
@@ -3040,7 +3040,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
         once_value_1 = fra.me.REG[3];
         register_static_object(&once_value_1);
       } else fra.me.REG[3] = once_value_1;
@@ -3052,7 +3052,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[3] = BOX_NativeString(" not typed but not error");
         REGB2 = TAG_Int(24);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB2);
         once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
       } else fra.me.REG[3] = once_value_2;
@@ -3074,7 +3074,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[2] = BOX_NativeString("Type error: expected expression.");
         REGB1 = TAG_Int(32);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
         once_value_4 = fra.me.REG[2];
         register_static_object(&once_value_4);
       } else fra.me.REG[2] = once_value_4;
@@ -3261,7 +3261,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ../lib/standard/kernel.nit:198 */
+        /* ../lib/standard/kernel.nit:199 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* syntax/syntax_base.nit:476 */
         REGB2 = REGB1;
@@ -3370,7 +3370,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_5) {
           fra.me.REG[2] = BOX_NativeString("Type error: no most general type. Got ");
           REGB0 = TAG_Int(38);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_5 = fra.me.REG[2];
           register_static_object(&once_value_5);
         } else fra.me.REG[2] = once_value_5;
@@ -3382,7 +3382,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_6) {
           fra.me.REG[2] = BOX_NativeString(" and ");
           REGB0 = TAG_Int(5);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_6 = fra.me.REG[2];
           register_static_object(&once_value_6);
         } else fra.me.REG[2] = once_value_6;
@@ -3393,7 +3393,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_7) {
           fra.me.REG[2] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_7 = fra.me.REG[2];
           register_static_object(&once_value_7);
         } else fra.me.REG[2] = once_value_7;
@@ -3408,7 +3408,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_8) {
           fra.me.REG[2] = BOX_NativeString("Type error: no most general type. Got ");
           REGB0 = TAG_Int(38);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_8 = fra.me.REG[2];
           register_static_object(&once_value_8);
         } else fra.me.REG[2] = once_value_8;
@@ -3420,7 +3420,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_9) {
           fra.me.REG[2] = BOX_NativeString(" and ");
           REGB0 = TAG_Int(5);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_9 = fra.me.REG[2];
           register_static_object(&once_value_9);
         } else fra.me.REG[2] = once_value_9;
@@ -3431,7 +3431,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_10) {
           fra.me.REG[2] = BOX_NativeString(" at ");
           REGB0 = TAG_Int(4);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_10 = fra.me.REG[2];
           register_static_object(&once_value_10);
         } else fra.me.REG[2] = once_value_10;
@@ -3448,7 +3448,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0
         if (!once_value_11) {
           fra.me.REG[3] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
           once_value_11 = fra.me.REG[3];
           register_static_object(&once_value_11);
         } else fra.me.REG[3] = once_value_11;
@@ -3488,7 +3488,7 @@ void syntax___syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1, val_t p2
   fra.me.REG[2] = p2;
   /* syntax/syntax_base.nit:500 */
   fra.me.REG[3] = fra.me.REG[0];
-  CALL_parser___parser_prod___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_nodes___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   /* syntax/syntax_base.nit:502 */
   ATTR_syntax___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[3]) = fra.me.REG[1];
   /* syntax/syntax_base.nit:503 */
@@ -3513,7 +3513,7 @@ void syntax___syntax_base___ANode___accept_abs_syntax_visitor(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/syntax_base.nit:510 */
-  CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  CALL_parser___parser_nodes___ANode___visit_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -3909,7 +3909,7 @@ val_t syntax___syntax_base___AType___get_local_class(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Type error: ");
       REGB0 = TAG_Int(12);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -3920,7 +3920,7 @@ val_t syntax___syntax_base___AType___get_local_class(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString(" is a formal type");
       REGB0 = TAG_Int(17);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -3946,7 +3946,7 @@ val_t syntax___syntax_base___AType___get_local_class(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[7] = BOX_NativeString("Type error: class ");
       REGB0 = TAG_Int(18);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_4 = fra.me.REG[7];
       register_static_object(&once_value_4);
     } else fra.me.REG[7] = once_value_4;
@@ -3957,7 +3957,7 @@ val_t syntax___syntax_base___AType___get_local_class(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[7] = BOX_NativeString(" not found in module ");
       REGB0 = TAG_Int(21);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_5 = fra.me.REG[7];
       register_static_object(&once_value_5);
     } else fra.me.REG[7] = once_value_5;
@@ -3968,7 +3968,7 @@ val_t syntax___syntax_base___AType___get_local_class(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
@@ -4068,7 +4068,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* syntax/syntax_base.nit:637 */
     if (UNTAG_Bool(REGB1)) {
@@ -4078,7 +4078,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[6] = BOX_NativeString("Type error: formal type ");
         REGB1 = TAG_Int(24);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_2 = fra.me.REG[6];
         register_static_object(&once_value_2);
       } else fra.me.REG[6] = once_value_2;
@@ -4089,7 +4089,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[6] = BOX_NativeString(" cannot have formal parameters.");
         REGB1 = TAG_Int(31);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_3 = fra.me.REG[6];
         register_static_object(&once_value_3);
       } else fra.me.REG[6] = once_value_3;
@@ -4145,7 +4145,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
     /* syntax/syntax_base.nit:648 */
     if (UNTAG_Bool(REGB0)) {
@@ -4155,7 +4155,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[7] = BOX_NativeString("Type error: formal type ");
         REGB0 = TAG_Int(24);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_4 = fra.me.REG[7];
         register_static_object(&once_value_4);
       } else fra.me.REG[7] = once_value_4;
@@ -4166,7 +4166,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_5) {
         fra.me.REG[7] = BOX_NativeString(" cannot have formal parameters.");
         REGB0 = TAG_Int(31);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_5 = fra.me.REG[7];
         register_static_object(&once_value_5);
       } else fra.me.REG[7] = once_value_5;
@@ -4205,7 +4205,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_6) {
         fra.me.REG[6] = BOX_NativeString("Type error: circular definition in formal type ");
         REGB0 = TAG_Int(47);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
@@ -4216,7 +4216,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_7) {
         fra.me.REG[3] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_7 = fra.me.REG[3];
         register_static_object(&once_value_7);
       } else fra.me.REG[3] = once_value_7;
@@ -4288,7 +4288,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB1)==(REGB0));
     /* syntax/syntax_base.nit:666 */
     REGB2 = REGB1;
@@ -4300,7 +4300,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* syntax/syntax_base.nit:667 */
       REGB1 = REGB2;
@@ -4312,7 +4312,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_8) {
         fra.me.REG[6] = BOX_NativeString("Type error: '");
         REGB1 = TAG_Int(13);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_8 = fra.me.REG[6];
         register_static_object(&once_value_8);
       } else fra.me.REG[6] = once_value_8;
@@ -4323,7 +4323,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       if (!once_value_9) {
         fra.me.REG[6] = BOX_NativeString("' is a generic class.");
         REGB1 = TAG_Int(21);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_9 = fra.me.REG[6];
         register_static_object(&once_value_9);
       } else fra.me.REG[6] = once_value_9;
@@ -4342,7 +4342,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB2 = TAG_Bool((REGB1)==(REGB2));
         /* syntax/syntax_base.nit:669 */
         REGB3 = REGB2;
@@ -4354,7 +4354,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         if (!once_value_10) {
           fra.me.REG[6] = BOX_NativeString("Type error: '");
           REGB3 = TAG_Int(13);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_10 = fra.me.REG[6];
           register_static_object(&once_value_10);
         } else fra.me.REG[6] = once_value_10;
@@ -4365,7 +4365,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         if (!once_value_11) {
           fra.me.REG[6] = BOX_NativeString("' is not a generic class.");
           REGB3 = TAG_Int(25);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_11 = fra.me.REG[6];
           register_static_object(&once_value_11);
         } else fra.me.REG[6] = once_value_11;
@@ -4380,7 +4380,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         if (!once_value_12) {
           fra.me.REG[6] = BOX_NativeString("Type error: '");
           REGB3 = TAG_Int(13);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_12 = fra.me.REG[6];
           register_static_object(&once_value_12);
         } else fra.me.REG[6] = once_value_12;
@@ -4391,7 +4391,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         if (!once_value_13) {
           fra.me.REG[6] = BOX_NativeString("' has ");
           REGB3 = TAG_Int(6);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_13 = fra.me.REG[6];
           register_static_object(&once_value_13);
         } else fra.me.REG[6] = once_value_13;
@@ -4407,7 +4407,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         if (!once_value_14) {
           fra.me.REG[6] = BOX_NativeString(" parameters (");
           REGB3 = TAG_Int(13);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_14 = fra.me.REG[6];
           register_static_object(&once_value_14);
         } else fra.me.REG[6] = once_value_14;
@@ -4418,7 +4418,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         if (!once_value_15) {
           fra.me.REG[6] = BOX_NativeString(" are provided).");
           REGB3 = TAG_Int(15);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
           once_value_15 = fra.me.REG[6];
           register_static_object(&once_value_15);
         } else fra.me.REG[6] = once_value_15;
@@ -4439,7 +4439,7 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
   /* syntax/syntax_base.nit:677 */
   if (UNTAG_Bool(REGB3)) {
@@ -4660,22 +4660,22 @@ void syntax___syntax_base___AType___check_conform(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* syntax/syntax_base.nit:713 */
   if (UNTAG_Bool(REGB1)) {
     /* syntax/syntax_base.nit:714 */
     REGB1 = TAG_Int(0);
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       if (UNTAG_Bool(REGB2)) {
         /* syntax/syntax_base.nit:714 */
         REGB2 = REGB1;
@@ -4699,14 +4699,14 @@ void syntax___syntax_base___AType___check_conform(val_t p0, val_t p1){
         fra.me.REG[6] = fra.me.REG[7];
         /* syntax/syntax_base.nit:721 */
         CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ../lib/standard/kernel.nit:357 */
+        /* ../lib/standard/kernel.nit:406 */
         REGB1 = REGB2;
       } else {
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         goto label2;
       }
     }
index 2c7e584..cbf8e35 100644 (file)
@@ -19,15 +19,13 @@ void syntax___typing___MMSrcModule___do_typing(val_t p0, val_t p1){
   fra.me.REG[1] = NEW_TypingVisitor_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
   /* syntax/typing.nit:30 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
-static const char LOCATE_syntax___typing___TypingVisitor___visit[] = "typing::TypingVisitor::(parser_prod::Visitor::visit)";
+static const char LOCATE_syntax___typing___TypingVisitor___visit[] = "typing::TypingVisitor::(parser_nodes::Visitor::visit)";
 void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___typing;
@@ -41,26 +39,7 @@ void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* syntax/typing.nit:43 */
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 43);
-    }
-    CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  }
+  CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -229,7 +208,7 @@ void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
   fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   /* syntax/typing.nit:71 */
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* syntax/typing.nit:72 */
   fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
@@ -727,7 +706,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/typing.nit:141 */
     REGB2 = REGB1;
@@ -752,24 +731,24 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
     /* syntax/typing.nit:143 */
     if (UNTAG_Bool(REGB1)) {
       /* syntax/typing.nit:144 */
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB1 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB1 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
@@ -783,16 +762,16 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
           /* syntax/typing.nit:146 */
           REGB2 = TAG_Int(5);
@@ -800,7 +779,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           if (!once_value_6) {
             fra.me.REG[11] = BOX_NativeString("");
             REGB2 = TAG_Int(0);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
+            fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB2);
             once_value_6 = fra.me.REG[11];
             register_static_object(&once_value_6);
           } else fra.me.REG[11] = once_value_6;
@@ -811,7 +790,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           if (!once_value_7) {
             fra.me.REG[11] = BOX_NativeString("");
             REGB2 = TAG_Int(0);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
+            fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB2);
             once_value_7 = fra.me.REG[11];
             register_static_object(&once_value_7);
           } else fra.me.REG[11] = once_value_7;
@@ -828,7 +807,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           if (!once_value_8) {
             fra.me.REG[4] = BOX_NativeString("");
             REGB2 = TAG_Int(0);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
             once_value_8 = fra.me.REG[4];
             register_static_object(&once_value_8);
           } else fra.me.REG[4] = once_value_8;
@@ -836,14 +815,14 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = REGB2;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label9;
         }
       }
@@ -854,7 +833,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       if (!once_value_10) {
         fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
         REGB1 = TAG_Int(51);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_10 = fra.me.REG[6];
         register_static_object(&once_value_10);
       } else fra.me.REG[6] = once_value_10;
@@ -865,7 +844,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       if (!once_value_11) {
         fra.me.REG[6] = BOX_NativeString(": ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_11 = fra.me.REG[6];
         register_static_object(&once_value_11);
       } else fra.me.REG[6] = once_value_11;
@@ -874,7 +853,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       if (!once_value_12) {
         fra.me.REG[6] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_12 = fra.me.REG[6];
         register_static_object(&once_value_12);
       } else fra.me.REG[6] = once_value_12;
@@ -884,7 +863,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       if (!once_value_13) {
         fra.me.REG[6] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_13 = fra.me.REG[6];
         register_static_object(&once_value_13);
       } else fra.me.REG[6] = once_value_13;
@@ -910,24 +889,24 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
       /* syntax/typing.nit:150 */
       if (UNTAG_Bool(REGB2)) {
         /* syntax/typing.nit:151 */
         fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB2 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB2 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -941,16 +920,16 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB1)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
             /* syntax/typing.nit:153 */
             REGB1 = TAG_Int(5);
@@ -958,7 +937,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
             if (!once_value_14) {
               fra.me.REG[4] = BOX_NativeString("");
               REGB1 = TAG_Int(0);
-              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+              fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
               once_value_14 = fra.me.REG[4];
               register_static_object(&once_value_14);
             } else fra.me.REG[4] = once_value_14;
@@ -969,7 +948,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
             if (!once_value_15) {
               fra.me.REG[4] = BOX_NativeString("");
               REGB1 = TAG_Int(0);
-              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+              fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
               once_value_15 = fra.me.REG[4];
               register_static_object(&once_value_15);
             } else fra.me.REG[4] = once_value_15;
@@ -986,7 +965,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
             if (!once_value_16) {
               fra.me.REG[3] = BOX_NativeString("");
               REGB1 = TAG_Int(0);
-              fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+              fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
               once_value_16 = fra.me.REG[3];
               register_static_object(&once_value_16);
             } else fra.me.REG[3] = once_value_16;
@@ -994,14 +973,14 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
             fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB2 = REGB1;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label17;
           }
         }
@@ -1012,7 +991,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         if (!once_value_18) {
           fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
           REGB2 = TAG_Int(55);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_18 = fra.me.REG[6];
           register_static_object(&once_value_18);
         } else fra.me.REG[6] = once_value_18;
@@ -1023,7 +1002,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         if (!once_value_19) {
           fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
           REGB2 = TAG_Int(27);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_19 = fra.me.REG[6];
           register_static_object(&once_value_19);
         } else fra.me.REG[6] = once_value_19;
@@ -1032,7 +1011,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         if (!once_value_20) {
           fra.me.REG[6] = BOX_NativeString(", ");
           REGB2 = TAG_Int(2);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_20 = fra.me.REG[6];
           register_static_object(&once_value_20);
         } else fra.me.REG[6] = once_value_20;
@@ -1042,7 +1021,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         if (!once_value_21) {
           fra.me.REG[6] = BOX_NativeString(".");
           REGB2 = TAG_Int(1);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_21 = fra.me.REG[6];
           register_static_object(&once_value_21);
         } else fra.me.REG[6] = once_value_21;
@@ -1060,7 +1039,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         if (!once_value_22) {
           fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
           REGB2 = TAG_Int(55);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
           once_value_22 = fra.me.REG[6];
           register_static_object(&once_value_22);
         } else fra.me.REG[6] = once_value_22;
@@ -1071,7 +1050,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         if (!once_value_23) {
           fra.me.REG[2] = BOX_NativeString(".");
           REGB2 = TAG_Int(1);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
           once_value_23 = fra.me.REG[2];
           register_static_object(&once_value_23);
         } else fra.me.REG[2] = once_value_23;
@@ -1148,7 +1127,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* syntax/typing.nit:129 */
         REGB2 = REGB1;
@@ -1159,7 +1138,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
         REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
         if (UNTAG_Bool(REGB1)) {
         } else {
-          /* ../lib/standard/kernel.nit:230 */
+          /* ../lib/standard/kernel.nit:237 */
           REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
           /* syntax/typing.nit:129 */
           REGB1 = REGB3;
@@ -1192,7 +1171,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB2 = TAG_Bool((REGB0)==(REGB2));
         /* syntax/typing.nit:134 */
         REGB1 = REGB2;
@@ -1203,7 +1182,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           if (!once_value_4) {
             fra.me.REG[3] = BOX_NativeString("init");
             REGB1 = TAG_Int(4);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
             once_value_4 = fra.me.REG[3];
             register_static_object(&once_value_4);
           } else fra.me.REG[3] = once_value_4;
@@ -1304,7 +1283,7 @@ void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("self");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
     once_value_1 = fra.me.REG[4];
     register_static_object(&once_value_1);
   } else fra.me.REG[4] = once_value_1;
@@ -1530,7 +1509,7 @@ void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
       REGB0 = TAG_Int(78);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_1 = fra.me.REG[1];
       register_static_object(&once_value_1);
     } else fra.me.REG[1] = once_value_1;
@@ -1648,29 +1627,29 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* syntax/typing.nit:248 */
     if (UNTAG_Bool(REGB2)) {
       /* syntax/typing.nit:249 */
       fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB4)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1678,26 +1657,26 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Bool(0);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
       REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label1;
       label1: while(0);
       /* syntax/typing.nit:249 */
@@ -1733,7 +1712,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       /* syntax/typing.nit:253 */
       if (UNTAG_Bool(REGB3)) {
@@ -1741,23 +1720,23 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
         fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
         fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         REGB3 = REGB2;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB4 = TAG_Int(0);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB5)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB4)) {
           REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
           REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1765,26 +1744,26 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB5 = TAG_Bool(0);
           REGB4 = REGB5;
         }
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
         REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label2;
         label2: while(0);
         /* syntax/typing.nit:255 */
@@ -1814,7 +1793,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
         if (UNTAG_Bool(REGB3)) {
           /* syntax/typing.nit:256 */
           REGB3 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
           /* syntax/typing.nit:256 */
           REGB2 = REGB3;
@@ -1861,7 +1840,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
             }
             if (UNTAG_Bool(REGB3)) {
               REGB3 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:238 */
+              /* ../lib/standard/kernel.nit:245 */
               REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
               /* syntax/typing.nit:258 */
               REGB2 = REGB3;
@@ -1876,7 +1855,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
             /* syntax/typing.nit:260 */
             REGB3 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
             /* syntax/typing.nit:260 */
             REGB0 = REGB3;
@@ -1885,29 +1864,29 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
             /* syntax/typing.nit:261 */
             if (UNTAG_Bool(REGB3)) {
               /* syntax/typing.nit:262 */
               fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-              /* ../lib/standard/collection/array.nit:278 */
+              /* ../lib/standard/collection/array.nit:279 */
               REGB3 = REGB0;
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB4 = TAG_Int(0);
               REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB5)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:236 */
+              /* ../lib/standard/kernel.nit:243 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               if (UNTAG_Bool(REGB4)) {
                REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
                REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -1915,26 +1894,26 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
               } else {
-               /* ../lib/standard/collection/array.nit:280 */
+               /* ../lib/standard/collection/array.nit:281 */
                REGB5 = TAG_Bool(0);
                REGB4 = REGB5;
               }
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
               }
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
               REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
               }
-              /* ../lib/standard/collection/array.nit:724 */
+              /* ../lib/standard/collection/array.nit:725 */
               fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-              /* ../lib/standard/collection/array.nit:281 */
+              /* ../lib/standard/collection/array.nit:282 */
               goto label3;
               label3: while(0);
               /* syntax/typing.nit:262 */
@@ -1981,7 +1960,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
             }
             /* syntax/typing.nit:273 */
             REGB3 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
             /* syntax/typing.nit:273 */
             REGB2 = REGB3;
@@ -2090,7 +2069,7 @@ void syntax___typing___ASignature___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
       REGB0 = TAG_Int(33);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -2250,7 +2229,7 @@ void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:198 */
+      /* ../lib/standard/kernel.nit:199 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* syntax/typing.nit:335 */
       REGB2 = REGB1;
@@ -2279,7 +2258,7 @@ void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
         if (!once_value_1) {
           fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
           REGB2 = TAG_Int(77);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB2);
           once_value_1 = fra.me.REG[1];
           register_static_object(&once_value_1);
         } else fra.me.REG[1] = once_value_1;
@@ -2314,7 +2293,7 @@ void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
           if (!once_value_2) {
             fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
             REGB2 = TAG_Int(80);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
             once_value_2 = fra.me.REG[8];
             register_static_object(&once_value_2);
           } else fra.me.REG[8] = once_value_2;
@@ -2343,18 +2322,18 @@ void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB2)) {
       nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 343);
     }
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB2 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB2 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
@@ -2368,27 +2347,27 @@ void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
         /* syntax/typing.nit:344 */
         CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB2 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label3;
       }
     }
@@ -2579,7 +2558,7 @@ val_t syntax___typing___AExpr___stype(val_t p0){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -2591,7 +2570,7 @@ val_t syntax___typing___AExpr___stype(val_t p0){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(": not is_typed");
       REGB0 = TAG_Int(14);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -2611,7 +2590,7 @@ val_t syntax___typing___AExpr___stype(val_t p0){
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -2623,7 +2602,7 @@ val_t syntax___typing___AExpr___stype(val_t p0){
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString(": is_statement");
       REGB0 = TAG_Int(14);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
@@ -2806,7 +2785,7 @@ void syntax___typing___AParExpr___warn_parentheses(val_t p0, val_t p1){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
     REGB0 = TAG_Int(33);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -2841,7 +2820,7 @@ void syntax___typing___AParExprs___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
       REGB0 = TAG_Int(33);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_1 = fra.me.REG[2];
       register_static_object(&once_value_1);
     } else fra.me.REG[2] = once_value_1;
@@ -3090,7 +3069,7 @@ void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       /* syntax/typing.nit:463 */
-      CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+      CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     } else {
       /* syntax/typing.nit:464 */
       fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
@@ -3105,7 +3084,7 @@ void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
           REGB0 = TAG_Int(29);
-          fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+          fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
           once_value_2 = fra.me.REG[1];
           register_static_object(&once_value_2);
         } else fra.me.REG[1] = once_value_2;
@@ -3156,7 +3135,7 @@ void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
       REGB0 = TAG_Int(82);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -3203,7 +3182,7 @@ void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
       REGB0 = TAG_Int(42);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -3246,7 +3225,7 @@ void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
         REGB0 = TAG_Int(40);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -3375,7 +3354,7 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
       REGB0 = TAG_Int(39);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -3428,7 +3407,7 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
       REGB0 = TAG_Int(52);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -3471,7 +3450,7 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
         REGB0 = TAG_Int(53);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
@@ -3641,7 +3620,7 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("Error: break with a value required in this block.");
       REGB0 = TAG_Int(49);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -3684,7 +3663,7 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("Error: break without value required in this block.");
         REGB0 = TAG_Int(50);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
@@ -3966,7 +3945,7 @@ void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
   fra.me.REG[1] = p1;
   /* syntax/typing.nit:622 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   /* syntax/typing.nit:623 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
@@ -4053,7 +4032,7 @@ void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
   fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/typing.nit:662 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* syntax/typing.nit:663 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
@@ -4066,7 +4045,7 @@ void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
       REGB0 = TAG_Int(47);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -4290,7 +4269,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
   ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
   /* syntax/typing.nit:738 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* syntax/typing.nit:739 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
@@ -4309,7 +4288,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
       REGB0 = TAG_Int(43);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -4326,7 +4305,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[5] = BOX_NativeString("iterate");
       REGB0 = TAG_Int(7);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_5 = fra.me.REG[5];
       register_static_object(&once_value_5);
     } else fra.me.REG[5] = once_value_5;
@@ -4348,7 +4327,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
       REGB0 = TAG_Int(60);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
@@ -4359,7 +4338,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[7] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_7 = fra.me.REG[7];
       register_static_object(&once_value_7);
     } else fra.me.REG[7] = once_value_7;
@@ -4395,7 +4374,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/typing.nit:758 */
     REGB2 = REGB1;
@@ -4406,7 +4385,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
       REGB2 = TAG_Int(63);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_8 = fra.me.REG[5];
       register_static_object(&once_value_8);
     } else fra.me.REG[5] = once_value_8;
@@ -4429,7 +4408,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* syntax/typing.nit:761 */
       REGB0 = REGB1;
@@ -4440,7 +4419,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_9) {
         fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
         REGB0 = TAG_Int(62);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_9 = fra.me.REG[5];
         register_static_object(&once_value_9);
       } else fra.me.REG[5] = once_value_9;
@@ -4479,7 +4458,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_10) {
       fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
       REGB0 = TAG_Int(73);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_10 = fra.me.REG[5];
       register_static_object(&once_value_10);
     } else fra.me.REG[5] = once_value_10;
@@ -4500,7 +4479,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/typing.nit:770 */
     REGB2 = REGB1;
@@ -4513,7 +4492,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* syntax/typing.nit:771 */
       REGB0 = REGB1;
@@ -4525,7 +4504,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_11) {
         fra.me.REG[4] = BOX_NativeString("Error: Expected ");
         REGB0 = TAG_Int(16);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_11 = fra.me.REG[4];
         register_static_object(&once_value_11);
       } else fra.me.REG[4] = once_value_11;
@@ -4537,7 +4516,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_12) {
         fra.me.REG[4] = BOX_NativeString(" variable ");
         REGB0 = TAG_Int(10);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_12 = fra.me.REG[4];
         register_static_object(&once_value_12);
       } else fra.me.REG[4] = once_value_12;
@@ -4548,7 +4527,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_13) {
         fra.me.REG[4] = BOX_NativeString(", found ");
         REGB0 = TAG_Int(8);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_13 = fra.me.REG[4];
         register_static_object(&once_value_13);
       } else fra.me.REG[4] = once_value_13;
@@ -4567,7 +4546,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_14) {
         fra.me.REG[4] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_14 = fra.me.REG[4];
         register_static_object(&once_value_14);
       } else fra.me.REG[4] = once_value_14;
@@ -4582,7 +4561,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_15) {
         fra.me.REG[4] = BOX_NativeString("Error: Expected ");
         REGB0 = TAG_Int(16);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_15 = fra.me.REG[4];
         register_static_object(&once_value_15);
       } else fra.me.REG[4] = once_value_15;
@@ -4594,7 +4573,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_16) {
         fra.me.REG[4] = BOX_NativeString(" variables ");
         REGB0 = TAG_Int(11);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_16 = fra.me.REG[4];
         register_static_object(&once_value_16);
       } else fra.me.REG[4] = once_value_16;
@@ -4605,7 +4584,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_17) {
         fra.me.REG[4] = BOX_NativeString(", found ");
         REGB0 = TAG_Int(8);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_17 = fra.me.REG[4];
         register_static_object(&once_value_17);
       } else fra.me.REG[4] = once_value_17;
@@ -4624,7 +4603,7 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       if (!once_value_18) {
         fra.me.REG[4] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_18 = fra.me.REG[4];
         register_static_object(&once_value_18);
       } else fra.me.REG[4] = once_value_18;
@@ -4645,37 +4624,37 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB2)) {
       /* syntax/typing.nit:780 */
       REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:278 */
+      /* ../lib/standard/collection/array.nit:279 */
       fra.me.REG[5] = fra.me.REG[2];
       REGB3 = REGB2;
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       REGB4 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:236 */
+      /* ../lib/standard/kernel.nit:243 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:280 */
+      /* ../lib/standard/collection/array.nit:281 */
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
         REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -4683,26 +4662,26 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB5 = TAG_Bool(0);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
       }
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
       REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:281 */
+      /* ../lib/standard/collection/array.nit:282 */
       goto label19;
       label19: while(0);
       /* syntax/typing.nit:781 */
@@ -4712,14 +4691,14 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
         nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 781);
       }
       CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label20;
     }
   }
@@ -4777,7 +4756,7 @@ void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
   fra.me.REG[1] = p1;
   /* syntax/typing.nit:790 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   /* syntax/typing.nit:791 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
@@ -4808,7 +4787,7 @@ void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
     CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     /* syntax/typing.nit:798 */
     fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     /* syntax/typing.nit:799 */
     CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
@@ -5048,7 +5027,7 @@ val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1,
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("Error: Method '");
       REGB0 = TAG_Int(15);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
@@ -5059,7 +5038,7 @@ val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1,
     if (!once_value_3) {
       fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
       REGB0 = TAG_Int(17);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_3 = fra.me.REG[6];
       register_static_object(&once_value_3);
     } else fra.me.REG[6] = once_value_3;
@@ -5087,7 +5066,7 @@ val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1,
     if (!once_value_4) {
       fra.me.REG[7] = BOX_NativeString("Error: Method '");
       REGB0 = TAG_Int(15);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_4 = fra.me.REG[7];
       register_static_object(&once_value_4);
     } else fra.me.REG[7] = once_value_4;
@@ -5098,7 +5077,7 @@ val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1,
     if (!once_value_5) {
       fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
       REGB0 = TAG_Int(20);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_5 = fra.me.REG[7];
       register_static_object(&once_value_5);
     } else fra.me.REG[7] = once_value_5;
@@ -5109,7 +5088,7 @@ val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1,
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
@@ -5318,7 +5297,7 @@ val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("+");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -5354,7 +5333,7 @@ val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("-");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -5514,7 +5493,7 @@ void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
   fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/typing.nit:929 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* syntax/typing.nit:930 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
@@ -5626,13 +5605,13 @@ void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
   ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
   /* syntax/typing.nit:975 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/typing.nit:978 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/typing.nit:981 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/typing.nit:982 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
@@ -5701,13 +5680,13 @@ void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/typing.nit:1004 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/typing.nit:1007 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/typing.nit:1010 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* syntax/typing.nit:1011 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
@@ -5816,7 +5795,7 @@ void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
   fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
   /* syntax/typing.nit:1046 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* syntax/typing.nit:1047 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
@@ -5832,7 +5811,7 @@ void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("Warning: left operand of a 'or else' is not a nullable type.");
       REGB0 = TAG_Int(60);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
@@ -5868,7 +5847,7 @@ void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
   }
   /* syntax/typing.nit:1064 */
   fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+  CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   /* syntax/typing.nit:1065 */
   fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
@@ -6246,7 +6225,7 @@ void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Type error: ");
         REGB0 = TAG_Int(12);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -6257,7 +6236,7 @@ void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" incompatible with ");
         REGB0 = TAG_Int(19);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -6268,7 +6247,7 @@ void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
@@ -6408,20 +6387,20 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
       fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      /* ../lib/standard/collection/array.nit:266 */
+      /* ../lib/standard/collection/array.nit:267 */
       fra.me.REG[4] = fra.me.REG[5];
-      /* ../lib/standard/collection/array.nit:269 */
-      REGB0 = TAG_Int(0);
       /* ../lib/standard/collection/array.nit:270 */
+      REGB0 = TAG_Int(0);
+      /* ../lib/standard/collection/array.nit:271 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:271 */
-      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       /* ../lib/standard/collection/array.nit:272 */
+      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+      /* ../lib/standard/collection/array.nit:273 */
       while(1) {
         /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
@@ -6435,16 +6414,16 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         if (UNTAG_Bool(REGB1)) {
-          /* ../lib/standard/collection/array.nit:273 */
+          /* ../lib/standard/collection/array.nit:274 */
           REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
           /* syntax/typing.nit:1178 */
           fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
@@ -6457,7 +6436,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
             if (!once_value_1) {
               fra.me.REG[9] = BOX_NativeString("Error: ");
               REGB1 = TAG_Int(7);
-              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
               once_value_1 = fra.me.REG[9];
               register_static_object(&once_value_1);
             } else fra.me.REG[9] = once_value_1;
@@ -6469,7 +6448,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
             if (!once_value_2) {
               fra.me.REG[9] = BOX_NativeString("::");
               REGB1 = TAG_Int(2);
-              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
               once_value_2 = fra.me.REG[9];
               register_static_object(&once_value_2);
             } else fra.me.REG[9] = once_value_2;
@@ -6480,7 +6459,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
             if (!once_value_3) {
               fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
               REGB1 = TAG_Int(22);
-              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
               once_value_3 = fra.me.REG[9];
               register_static_object(&once_value_3);
             } else fra.me.REG[9] = once_value_3;
@@ -6495,14 +6474,14 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
             fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
           }
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB1 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:238 */
+          /* ../lib/standard/kernel.nit:245 */
           REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:274 */
+          /* ../lib/standard/collection/array.nit:275 */
           REGB0 = REGB1;
         } else {
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           goto label4;
         }
       }
@@ -6516,7 +6495,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
           REGB0 = TAG_Int(27);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
         } else fra.me.REG[4] = once_value_5;
@@ -6529,7 +6508,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
         if (!once_value_6) {
           fra.me.REG[4] = BOX_NativeString(" in superclasses.");
           REGB0 = TAG_Int(17);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_6 = fra.me.REG[4];
           register_static_object(&once_value_6);
         } else fra.me.REG[4] = once_value_6;
@@ -6554,7 +6533,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
         /* syntax/typing.nit:1187 */
         if (UNTAG_Bool(REGB1)) {
@@ -6564,7 +6543,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
           if (!once_value_8) {
             fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
             REGB1 = TAG_Int(37);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
             once_value_8 = fra.me.REG[4];
             register_static_object(&once_value_8);
           } else fra.me.REG[4] = once_value_8;
@@ -6577,7 +6556,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
           if (!once_value_9) {
             fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
             REGB1 = TAG_Int(18);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
             once_value_9 = fra.me.REG[4];
             register_static_object(&once_value_9);
           } else fra.me.REG[4] = once_value_9;
@@ -6586,7 +6565,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
           if (!once_value_10) {
             fra.me.REG[4] = BOX_NativeString(", ");
             REGB1 = TAG_Int(2);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
             once_value_10 = fra.me.REG[4];
             register_static_object(&once_value_10);
           } else fra.me.REG[4] = once_value_10;
@@ -6596,7 +6575,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
           if (!once_value_11) {
             fra.me.REG[4] = BOX_NativeString(".");
             REGB1 = TAG_Int(1);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
             once_value_11 = fra.me.REG[4];
             register_static_object(&once_value_11);
           } else fra.me.REG[4] = once_value_11;
@@ -6630,7 +6609,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
       /* syntax/typing.nit:1195 */
       if (UNTAG_Bool(REGB0)) {
@@ -6656,7 +6635,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_12) {
         fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
         REGB0 = TAG_Int(35);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_12 = fra.me.REG[5];
         register_static_object(&once_value_12);
       } else fra.me.REG[5] = once_value_12;
@@ -6668,7 +6647,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_13) {
         fra.me.REG[5] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_13 = fra.me.REG[5];
         register_static_object(&once_value_13);
       } else fra.me.REG[5] = once_value_13;
@@ -6713,18 +6692,18 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
     /* syntax/typing.nit:1206 */
     fra.me.REG[4] = NIT_NULL;
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
@@ -6738,16 +6717,16 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
         /* syntax/typing.nit:1208 */
         REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
@@ -6808,30 +6787,30 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
           /* syntax/typing.nit:1212 */
           fra.me.REG[4] = fra.me.REG[8];
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label14;
       }
     }
     label14: while(0);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB0 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB0 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
@@ -6845,16 +6824,16 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
         /* syntax/typing.nit:1216 */
         REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
@@ -6863,14 +6842,14 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
           nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1216);
         }
         CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = REGB1;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label15;
       }
     }
@@ -7005,7 +6984,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
       if (!once_value_1) {
         fra.me.REG[7] = BOX_NativeString("Error: class ");
         REGB0 = TAG_Int(13);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_1 = fra.me.REG[7];
         register_static_object(&once_value_1);
       } else fra.me.REG[7] = once_value_1;
@@ -7020,7 +6999,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[3] = BOX_NativeString(", not found.");
         REGB0 = TAG_Int(12);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
       } else fra.me.REG[3] = once_value_2;
@@ -7049,7 +7028,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
       if (!once_value_4) {
         fra.me.REG[7] = BOX_NativeString("Error: property ");
         REGB0 = TAG_Int(16);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_4 = fra.me.REG[7];
         register_static_object(&once_value_4);
       } else fra.me.REG[7] = once_value_4;
@@ -7060,7 +7039,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
       if (!once_value_5) {
         fra.me.REG[7] = BOX_NativeString(" is not a method.");
         REGB0 = TAG_Int(17);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
         once_value_5 = fra.me.REG[7];
         register_static_object(&once_value_5);
       } else fra.me.REG[7] = once_value_5;
@@ -7078,7 +7057,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString("Error: property ");
       REGB0 = TAG_Int(16);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
@@ -7089,7 +7068,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[4] = BOX_NativeString(" not found in target class.");
       REGB0 = TAG_Int(27);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_7 = fra.me.REG[4];
       register_static_object(&once_value_7);
     } else fra.me.REG[4] = once_value_7;
@@ -7203,7 +7182,7 @@ void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
       REGB0 = TAG_Int(35);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -7215,7 +7194,7 @@ void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -7320,7 +7299,7 @@ val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("init");
     REGB0 = TAG_Int(4);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
@@ -7397,7 +7376,7 @@ void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
       REGB0 = TAG_Int(44);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -7673,7 +7652,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
       REGB0 = TAG_Int(18);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -7684,7 +7663,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
       REGB0 = TAG_Int(19);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -7707,7 +7686,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
       REGB0 = TAG_Int(17);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_4 = fra.me.REG[6];
       register_static_object(&once_value_4);
     } else fra.me.REG[6] = once_value_4;
@@ -7718,7 +7697,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
       REGB0 = TAG_Int(19);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_5 = fra.me.REG[6];
       register_static_object(&once_value_5);
     } else fra.me.REG[6] = once_value_5;
@@ -7729,7 +7708,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_6) {
       fra.me.REG[6] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
       once_value_6 = fra.me.REG[6];
       register_static_object(&once_value_6);
     } else fra.me.REG[6] = once_value_6;
@@ -7754,7 +7733,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:235 */
+  /* ../lib/standard/kernel.nit:242 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* syntax/typing.nit:1367 */
   if (UNTAG_Bool(REGB1)) {
@@ -7764,7 +7743,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_7) {
       fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
       REGB1 = TAG_Int(17);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
       once_value_7 = fra.me.REG[5];
       register_static_object(&once_value_7);
     } else fra.me.REG[5] = once_value_7;
@@ -7775,7 +7754,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[3] = BOX_NativeString(" from ");
       REGB1 = TAG_Int(6);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_8 = fra.me.REG[3];
       register_static_object(&once_value_8);
     } else fra.me.REG[3] = once_value_8;
@@ -7789,7 +7768,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[3] = BOX_NativeString(" is invisible in ");
       REGB1 = TAG_Int(17);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_9 = fra.me.REG[3];
       register_static_object(&once_value_9);
     } else fra.me.REG[3] = once_value_9;
@@ -7801,7 +7780,7 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
     if (!once_value_10) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_10 = fra.me.REG[3];
       register_static_object(&once_value_10);
     } else fra.me.REG[3] = once_value_10;
@@ -8046,7 +8025,7 @@ void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
       REGB0 = TAG_Int(37);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -8185,7 +8164,7 @@ val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -8197,7 +8176,7 @@ val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
     REGB0 = TAG_Int(25);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
@@ -8289,7 +8268,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* syntax/typing.nit:1456 */
   if (UNTAG_Bool(REGB3)) {
@@ -8298,7 +8277,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB4)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB5 = TAG_Bool((REGB1)==(REGB2));
       /* syntax/typing.nit:1456 */
       REGB4 = REGB5;
@@ -8306,13 +8285,13 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
     REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
     if (UNTAG_Bool(REGB4)) {
       REGB4 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:239 */
+      /* ../lib/standard/kernel.nit:246 */
       REGB4 = TAG_Int(-UNTAG_Int(REGB4));
       /* syntax/typing.nit:1456 */
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB4 = TAG_Bool((REGB0)==(REGB4));
         /* syntax/typing.nit:1456 */
         REGB5 = REGB4;
@@ -8330,7 +8309,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
       REGB3 = TAG_Int(37);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
+      fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
@@ -8341,7 +8320,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB3 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB3);
       once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
     } else fra.me.REG[3] = once_value_2;
@@ -8352,7 +8331,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("'.");
       REGB3 = TAG_Int(2);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB3);
       once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
     } else fra.me.REG[3] = once_value_3;
@@ -8368,18 +8347,18 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
   REGB5 = TAG_Int(0);
   /* syntax/typing.nit:1461 */
   REGB4 = TAG_Int(0);
-  /* ../lib/standard/kernel.nit:350 */
+  /* ../lib/standard/kernel.nit:399 */
   REGB6 = REGB1;
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB7)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB7)) {
       /* syntax/typing.nit:1461 */
       REGB7 = REGB4;
@@ -8389,7 +8368,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
       REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
       if (UNTAG_Bool(REGB8)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB7 = TAG_Bool((REGB7)==(REGB0));
         /* syntax/typing.nit:1464 */
         REGB8 = REGB7;
@@ -8397,42 +8376,42 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
       if (UNTAG_Bool(REGB8)) {
         /* syntax/typing.nit:1465 */
         REGB8 = TAG_Int(0);
-        /* ../lib/standard/kernel.nit:240 */
+        /* ../lib/standard/kernel.nit:247 */
         REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
-        /* ../lib/standard/kernel.nit:344 */
+        /* ../lib/standard/kernel.nit:393 */
         while(1) {
           REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB9)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:234 */
+          /* ../lib/standard/kernel.nit:241 */
           REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
-          /* ../lib/standard/kernel.nit:344 */
+          /* ../lib/standard/kernel.nit:393 */
           if (UNTAG_Bool(REGB9)) {
             /* syntax/typing.nit:1466 */
             REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB9)) {
               nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1466);
             }
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[0] = fra.me.REG[4];
             REGB9 = REGB5;
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB10 = TAG_Int(0);
             REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB11)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB10)) {
               REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
               if (UNTAG_Bool(REGB10)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
               REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
@@ -8440,44 +8419,44 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB11 = TAG_Bool(0);
               REGB10 = REGB11;
             }
             if (UNTAG_Bool(REGB10)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
             REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
             if (UNTAG_Bool(REGB10)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label5;
             label5: while(0);
             /* syntax/typing.nit:1467 */
             CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
             /* syntax/typing.nit:1468 */
             REGB9 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
             /* syntax/typing.nit:1468 */
             REGB5 = REGB9;
-            /* ../lib/standard/kernel.nit:346 */
+            /* ../lib/standard/kernel.nit:395 */
             REGB9 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
-            /* ../lib/standard/kernel.nit:346 */
+            /* ../lib/standard/kernel.nit:395 */
             REGB8 = REGB9;
           } else {
-            /* ../lib/standard/kernel.nit:344 */
+            /* ../lib/standard/kernel.nit:393 */
             goto label6;
           }
         }
@@ -8488,24 +8467,24 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
         if (UNTAG_Bool(REGB8)) {
           nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1471);
         }
-        /* ../lib/standard/collection/array.nit:278 */
+        /* ../lib/standard/collection/array.nit:279 */
         fra.me.REG[3] = fra.me.REG[4];
         REGB8 = REGB5;
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         REGB7 = TAG_Int(0);
         REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB9)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:236 */
+        /* ../lib/standard/kernel.nit:243 */
         REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
-        /* ../lib/standard/collection/array.nit:280 */
+        /* ../lib/standard/collection/array.nit:281 */
         if (UNTAG_Bool(REGB7)) {
           REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
           if (UNTAG_Bool(REGB7)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
           }
           REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
           REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
@@ -8513,26 +8492,26 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
         } else {
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB9 = TAG_Bool(0);
           REGB7 = REGB9;
         }
         if (UNTAG_Bool(REGB7)) {
         } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
         }
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
         REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB7)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
-        /* ../lib/standard/collection/array.nit:281 */
+        /* ../lib/standard/collection/array.nit:282 */
         goto label7;
         label7: while(0);
         /* syntax/typing.nit:1471 */
@@ -8541,19 +8520,19 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
         CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
         /* syntax/typing.nit:1473 */
         REGB8 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
         /* syntax/typing.nit:1473 */
         REGB5 = REGB8;
       }
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB8 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB4 = REGB8;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label8;
     }
   }
@@ -8631,20 +8610,20 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
   fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
   /* syntax/typing.nit:1484 */
   REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:266 */
+  /* ../lib/standard/collection/array.nit:267 */
   fra.me.REG[7] = fra.me.REG[6];
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB1 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
@@ -8658,35 +8637,35 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
       /* syntax/typing.nit:1486 */
       REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
         /* syntax/typing.nit:1486 */
         REGB0 = REGB2;
       }
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label1;
     }
   }
@@ -8736,7 +8715,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
   /* syntax/typing.nit:1490 */
   if (UNTAG_Bool(REGB3)) {
@@ -8745,7 +8724,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB3 = TAG_Bool((REGB1)==(REGB3));
       /* syntax/typing.nit:1491 */
       REGB2 = REGB3;
@@ -8757,7 +8736,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
     } else {
       /* syntax/typing.nit:1491 */
@@ -8771,7 +8750,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       if (!once_value_2) {
         fra.me.REG[7] = BOX_NativeString("Error: ");
         REGB2 = TAG_Int(7);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_2 = fra.me.REG[7];
         register_static_object(&once_value_2);
       } else fra.me.REG[7] = once_value_2;
@@ -8782,7 +8761,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       if (!once_value_3) {
         fra.me.REG[7] = BOX_NativeString(" requires ");
         REGB2 = TAG_Int(10);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_3 = fra.me.REG[7];
         register_static_object(&once_value_3);
       } else fra.me.REG[7] = once_value_3;
@@ -8801,7 +8780,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       if (!once_value_4) {
         fra.me.REG[7] = BOX_NativeString(" blocks.");
         REGB2 = TAG_Int(8);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
         once_value_4 = fra.me.REG[7];
         register_static_object(&once_value_4);
       } else fra.me.REG[7] = once_value_4;
@@ -8822,7 +8801,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:237 */
+      /* ../lib/standard/kernel.nit:244 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
       /* syntax/typing.nit:1493 */
       if (UNTAG_Bool(REGB2)) {
@@ -8833,7 +8812,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:235 */
+        /* ../lib/standard/kernel.nit:242 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
         /* syntax/typing.nit:1493 */
         REGB2 = REGB0;
@@ -8845,7 +8824,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         if (!once_value_5) {
           fra.me.REG[7] = BOX_NativeString("Error: ");
           REGB2 = TAG_Int(7);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_5 = fra.me.REG[7];
           register_static_object(&once_value_5);
         } else fra.me.REG[7] = once_value_5;
@@ -8856,7 +8835,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         if (!once_value_6) {
           fra.me.REG[7] = BOX_NativeString(" requires ");
           REGB2 = TAG_Int(10);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_6 = fra.me.REG[7];
           register_static_object(&once_value_6);
         } else fra.me.REG[7] = once_value_6;
@@ -8875,7 +8854,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         if (!once_value_7) {
           fra.me.REG[7] = BOX_NativeString(" blocks, ");
           REGB2 = TAG_Int(9);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_7 = fra.me.REG[7];
           register_static_object(&once_value_7);
         } else fra.me.REG[7] = once_value_7;
@@ -8898,7 +8877,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         if (!once_value_8) {
           fra.me.REG[7] = BOX_NativeString(" found.");
           REGB2 = TAG_Int(7);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+          fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
           once_value_8 = fra.me.REG[7];
           register_static_object(&once_value_8);
         } else fra.me.REG[7] = once_value_8;
@@ -8934,35 +8913,35 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:237 */
+        /* ../lib/standard/kernel.nit:244 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
         /* syntax/typing.nit:1501 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:240 */
+          /* ../lib/standard/kernel.nit:247 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
           /* syntax/typing.nit:1501 */
           REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
             nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1501);
           }
-          /* ../lib/standard/collection/array.nit:278 */
+          /* ../lib/standard/collection/array.nit:279 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           REGB0 = TAG_Int(0);
           REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:236 */
+          /* ../lib/standard/kernel.nit:243 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-          /* ../lib/standard/collection/array.nit:280 */
+          /* ../lib/standard/collection/array.nit:281 */
           if (UNTAG_Bool(REGB0)) {
             REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
             }
             REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
             REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -8970,26 +8949,26 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:235 */
+            /* ../lib/standard/kernel.nit:242 */
             REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
           } else {
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB3 = TAG_Bool(0);
             REGB0 = REGB3;
           }
           if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
           }
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
           REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
           }
-          /* ../lib/standard/collection/array.nit:724 */
+          /* ../lib/standard/collection/array.nit:725 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
-          /* ../lib/standard/collection/array.nit:281 */
+          /* ../lib/standard/collection/array.nit:282 */
           goto label9;
           label9: while(0);
           /* syntax/typing.nit:1501 */
@@ -9003,18 +8982,18 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         }
         /* syntax/typing.nit:1504 */
         REGB2 = TAG_Int(0);
-        /* ../lib/standard/kernel.nit:350 */
+        /* ../lib/standard/kernel.nit:399 */
         REGB0 = REGB1;
-        /* ../lib/standard/kernel.nit:355 */
+        /* ../lib/standard/kernel.nit:404 */
         while(1) {
           REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
           if (UNTAG_Bool(REGB3)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-          /* ../lib/standard/kernel.nit:355 */
+          /* ../lib/standard/kernel.nit:404 */
           if (UNTAG_Bool(REGB3)) {
             /* syntax/typing.nit:1504 */
             REGB3 = REGB2;
@@ -9023,23 +9002,23 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
             if (UNTAG_Bool(REGB4)) {
               nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1505);
             }
-            /* ../lib/standard/collection/array.nit:278 */
+            /* ../lib/standard/collection/array.nit:279 */
             fra.me.REG[9] = fra.me.REG[4];
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             REGB4 = TAG_Int(0);
             REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
             if (UNTAG_Bool(REGB5)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:236 */
+            /* ../lib/standard/kernel.nit:243 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:280 */
+            /* ../lib/standard/collection/array.nit:281 */
             if (UNTAG_Bool(REGB4)) {
               REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
               }
               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
               REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -9047,26 +9026,26 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ../lib/standard/kernel.nit:235 */
+              /* ../lib/standard/kernel.nit:242 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
             } else {
-              /* ../lib/standard/collection/array.nit:280 */
+              /* ../lib/standard/collection/array.nit:281 */
               REGB5 = TAG_Bool(0);
               REGB4 = REGB5;
             }
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
             }
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
             REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
-            /* ../lib/standard/collection/array.nit:281 */
+            /* ../lib/standard/collection/array.nit:282 */
             goto label10;
             label10: while(0);
             /* syntax/typing.nit:1506 */
@@ -9112,7 +9091,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
               REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
               if (UNTAG_Bool(REGB5)) {
               } else {
-               /* ../lib/standard/kernel.nit:230 */
+               /* ../lib/standard/kernel.nit:237 */
                REGB4 = TAG_Bool((REGB3)==(REGB4));
                /* syntax/typing.nit:1513 */
                REGB5 = REGB4;
@@ -9125,7 +9104,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_11) {
                fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
                REGB5 = TAG_Int(26);
-               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
+               fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
                once_value_11 = fra.me.REG[13];
                register_static_object(&once_value_11);
                } else fra.me.REG[13] = once_value_11;
@@ -9136,7 +9115,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_12) {
                fra.me.REG[13] = BOX_NativeString("' in ");
                REGB5 = TAG_Int(5);
-               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
+               fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
                once_value_12 = fra.me.REG[13];
                register_static_object(&once_value_12);
                } else fra.me.REG[13] = once_value_12;
@@ -9147,7 +9126,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_13) {
                fra.me.REG[13] = BOX_NativeString("; only closure is !");
                REGB5 = TAG_Int(19);
-               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
+               fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
                once_value_13 = fra.me.REG[13];
                register_static_object(&once_value_13);
                } else fra.me.REG[13] = once_value_13;
@@ -9164,7 +9143,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_14) {
                fra.me.REG[13] = BOX_NativeString(".");
                REGB5 = TAG_Int(1);
-               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
+               fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
                once_value_14 = fra.me.REG[13];
                register_static_object(&once_value_14);
                } else fra.me.REG[13] = once_value_14;
@@ -9175,20 +9154,20 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
               } else {
                /* syntax/typing.nit:1516 */
                fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-               /* ../lib/standard/collection/array.nit:266 */
+               /* ../lib/standard/collection/array.nit:267 */
                fra.me.REG[11] = fra.me.REG[6];
-               /* ../lib/standard/collection/array.nit:269 */
-               REGB5 = TAG_Int(0);
                /* ../lib/standard/collection/array.nit:270 */
+               REGB5 = TAG_Int(0);
+               /* ../lib/standard/collection/array.nit:271 */
                REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
                } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
-               /* ../lib/standard/collection/array.nit:271 */
-               fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
                /* ../lib/standard/collection/array.nit:272 */
+               fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
+               /* ../lib/standard/collection/array.nit:273 */
                while(1) {
                /* ../lib/standard/collection/array.nit:24 */
                REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
@@ -9202,16 +9181,16 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               /* ../lib/standard/kernel.nit:235 */
+               /* ../lib/standard/kernel.nit:242 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
-               /* ../lib/standard/collection/array.nit:272 */
-               if (UNTAG_Bool(REGB4)) {
                /* ../lib/standard/collection/array.nit:273 */
+               if (UNTAG_Bool(REGB4)) {
+               /* ../lib/standard/collection/array.nit:274 */
                REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
                }
-               /* ../lib/standard/collection/array.nit:724 */
+               /* ../lib/standard/collection/array.nit:725 */
                fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
                /* syntax/typing.nit:1518 */
                REGB4 = TAG_Int(3);
@@ -9219,7 +9198,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_15) {
                fra.me.REG[16] = BOX_NativeString("!");
                REGB4 = TAG_Int(1);
-               fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
+               fra.me.REG[16] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[16])(fra.me.REG[16], REGB4);
                once_value_15 = fra.me.REG[16];
                register_static_object(&once_value_15);
                } else fra.me.REG[16] = once_value_15;
@@ -9231,7 +9210,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_16) {
                fra.me.REG[14] = BOX_NativeString("");
                REGB4 = TAG_Int(0);
-               fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
+               fra.me.REG[14] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[14])(fra.me.REG[14], REGB4);
                once_value_16 = fra.me.REG[14];
                register_static_object(&once_value_16);
                } else fra.me.REG[14] = once_value_16;
@@ -9239,14 +9218,14 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
                fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
-               /* ../lib/standard/collection/array.nit:274 */
+               /* ../lib/standard/collection/array.nit:275 */
                REGB4 = TAG_Int(1);
-               /* ../lib/standard/kernel.nit:238 */
+               /* ../lib/standard/kernel.nit:245 */
                REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
-               /* ../lib/standard/collection/array.nit:274 */
+               /* ../lib/standard/collection/array.nit:275 */
                REGB5 = REGB4;
                } else {
-               /* ../lib/standard/collection/array.nit:272 */
+               /* ../lib/standard/collection/array.nit:273 */
                goto label17;
                }
                }
@@ -9258,7 +9237,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_18) {
                fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
                REGB5 = TAG_Int(26);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB5);
                once_value_18 = fra.me.REG[11];
                register_static_object(&once_value_18);
                } else fra.me.REG[11] = once_value_18;
@@ -9269,7 +9248,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_19) {
                fra.me.REG[10] = BOX_NativeString("' in ");
                REGB5 = TAG_Int(5);
-               fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
+               fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
                once_value_19 = fra.me.REG[10];
                register_static_object(&once_value_19);
                } else fra.me.REG[10] = once_value_19;
@@ -9280,7 +9259,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_20) {
                fra.me.REG[10] = BOX_NativeString("; only closures are ");
                REGB5 = TAG_Int(20);
-               fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
+               fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
                once_value_20 = fra.me.REG[10];
                register_static_object(&once_value_20);
                } else fra.me.REG[10] = once_value_20;
@@ -9289,7 +9268,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_21) {
                fra.me.REG[10] = BOX_NativeString(",");
                REGB5 = TAG_Int(1);
-               fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
+               fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
                once_value_21 = fra.me.REG[10];
                register_static_object(&once_value_21);
                } else fra.me.REG[10] = once_value_21;
@@ -9299,7 +9278,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                if (!once_value_22) {
                fra.me.REG[10] = BOX_NativeString(".");
                REGB5 = TAG_Int(1);
-               fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
+               fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
                once_value_22 = fra.me.REG[10];
                register_static_object(&once_value_22);
                } else fra.me.REG[10] = once_value_22;
@@ -9309,14 +9288,14 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
               }
             }
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB5 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-            /* ../lib/standard/kernel.nit:357 */
+            /* ../lib/standard/kernel.nit:406 */
             REGB2 = REGB5;
           } else {
-            /* ../lib/standard/kernel.nit:355 */
+            /* ../lib/standard/kernel.nit:404 */
             goto label23;
           }
         }
@@ -9348,7 +9327,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
       /* syntax/typing.nit:1529 */
       REGB0 = REGB2;
@@ -9361,7 +9340,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       if (!once_value_24) {
         fra.me.REG[6] = BOX_NativeString("Error: ");
         REGB0 = TAG_Int(7);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_24 = fra.me.REG[6];
         register_static_object(&once_value_24);
       } else fra.me.REG[6] = once_value_24;
@@ -9372,7 +9351,7 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       if (!once_value_25) {
         fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
         REGB0 = TAG_Int(25);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_25 = fra.me.REG[3];
         register_static_object(&once_value_25);
       } else fra.me.REG[3] = once_value_25;
@@ -9554,7 +9533,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_2) {
         fra.me.REG[4] = BOX_NativeString("==");
         REGB1 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
         once_value_2 = fra.me.REG[4];
         register_static_object(&once_value_2);
       } else fra.me.REG[4] = once_value_2;
@@ -9577,7 +9556,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
         if (!once_value_4) {
           fra.me.REG[4] = BOX_NativeString("!=");
           REGB2 = TAG_Int(2);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
           once_value_4 = fra.me.REG[4];
           register_static_object(&once_value_4);
         } else fra.me.REG[4] = once_value_4;
@@ -9607,7 +9586,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_5) {
         fra.me.REG[5] = BOX_NativeString("Error: Method '");
         REGB1 = TAG_Int(15);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_5 = fra.me.REG[5];
         register_static_object(&once_value_5);
       } else fra.me.REG[5] = once_value_5;
@@ -9618,7 +9597,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_6) {
         fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
         REGB1 = TAG_Int(17);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_6 = fra.me.REG[5];
         register_static_object(&once_value_6);
       } else fra.me.REG[5] = once_value_6;
@@ -9671,7 +9650,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:237 */
+    /* ../lib/standard/kernel.nit:244 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
     /* syntax/typing.nit:1567 */
     if (UNTAG_Bool(REGB2)) {
@@ -9681,7 +9660,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_8) {
         fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
         REGB2 = TAG_Int(29);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
+        fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
         once_value_8 = fra.me.REG[9];
         register_static_object(&once_value_8);
       } else fra.me.REG[9] = once_value_8;
@@ -9692,7 +9671,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_9) {
         fra.me.REG[9] = BOX_NativeString("' for ");
         REGB2 = TAG_Int(6);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
+        fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
         once_value_9 = fra.me.REG[9];
         register_static_object(&once_value_9);
       } else fra.me.REG[9] = once_value_9;
@@ -9701,7 +9680,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_10) {
         fra.me.REG[9] = BOX_NativeString(", ");
         REGB2 = TAG_Int(2);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
+        fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
         once_value_10 = fra.me.REG[9];
         register_static_object(&once_value_10);
       } else fra.me.REG[9] = once_value_10;
@@ -9711,7 +9690,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_11) {
         fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
         REGB2 = TAG_Int(27);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
+        fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
         once_value_11 = fra.me.REG[9];
         register_static_object(&once_value_11);
       } else fra.me.REG[9] = once_value_11;
@@ -9735,7 +9714,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ../lib/standard/kernel.nit:230 */
+        /* ../lib/standard/kernel.nit:237 */
         REGB1 = TAG_Bool((REGB2)==(REGB1));
         /* syntax/typing.nit:1570 */
         REGB3 = REGB1;
@@ -9782,7 +9761,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_12) {
         fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
         REGB0 = TAG_Int(27);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_12 = fra.me.REG[5];
         register_static_object(&once_value_12);
       } else fra.me.REG[5] = once_value_12;
@@ -9793,7 +9772,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_13) {
         fra.me.REG[5] = BOX_NativeString("' unknown in ");
         REGB0 = TAG_Int(13);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_13 = fra.me.REG[5];
         register_static_object(&once_value_13);
       } else fra.me.REG[5] = once_value_13;
@@ -9804,7 +9783,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_14) {
         fra.me.REG[5] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_14 = fra.me.REG[5];
         register_static_object(&once_value_14);
       } else fra.me.REG[5] = once_value_14;
@@ -9819,7 +9798,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_15) {
         fra.me.REG[5] = BOX_NativeString("Error: Method '");
         REGB0 = TAG_Int(15);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
         once_value_15 = fra.me.REG[5];
         register_static_object(&once_value_15);
       } else fra.me.REG[5] = once_value_15;
@@ -9830,7 +9809,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_16) {
         fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
         REGB0 = TAG_Int(20);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_16 = fra.me.REG[3];
         register_static_object(&once_value_16);
       } else fra.me.REG[3] = once_value_16;
@@ -9841,7 +9820,7 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       if (!once_value_17) {
         fra.me.REG[2] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_17 = fra.me.REG[2];
         register_static_object(&once_value_17);
       } else fra.me.REG[2] = once_value_17;
@@ -9986,7 +9965,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
   /* syntax/typing.nit:1608 */
   fra.me.REG[3] = fra.me.REG[0];
   /* syntax/typing.nit:1610 */
-  fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
   if (UNTAG_Bool(REGB0)) {
@@ -10021,7 +10000,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
       REGB0 = TAG_Int(30);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -10032,7 +10011,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
       REGB0 = TAG_Int(29);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -10099,7 +10078,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
       if (!once_value_3) {
         fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
         REGB0 = TAG_Int(28);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_3 = fra.me.REG[8];
         register_static_object(&once_value_3);
       } else fra.me.REG[8] = once_value_3;
@@ -10110,7 +10089,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
       if (!once_value_4) {
         fra.me.REG[8] = BOX_NativeString(" must be one in ");
         REGB0 = TAG_Int(16);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_4 = fra.me.REG[8];
         register_static_object(&once_value_4);
       } else fra.me.REG[8] = once_value_4;
@@ -10119,7 +10098,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
       if (!once_value_5) {
         fra.me.REG[8] = BOX_NativeString(", ");
         REGB0 = TAG_Int(2);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_5 = fra.me.REG[8];
         register_static_object(&once_value_5);
       } else fra.me.REG[8] = once_value_5;
@@ -10129,7 +10108,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
       if (!once_value_6) {
         fra.me.REG[8] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+        fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
         once_value_6 = fra.me.REG[8];
         register_static_object(&once_value_6);
       } else fra.me.REG[8] = once_value_6;
@@ -10152,7 +10131,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
         if (!once_value_7) {
           fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
           REGB0 = TAG_Int(54);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_7 = fra.me.REG[8];
           register_static_object(&once_value_7);
         } else fra.me.REG[8] = once_value_7;
@@ -10163,7 +10142,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString(" is allowed.");
           REGB0 = TAG_Int(12);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
           once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
         } else fra.me.REG[8] = once_value_8;
@@ -10172,18 +10151,18 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
         fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
       } else {
-        /* ../lib/standard/collection/array.nit:269 */
-        REGB0 = TAG_Int(0);
         /* ../lib/standard/collection/array.nit:270 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:271 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:271 */
-        fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
         /* ../lib/standard/collection/array.nit:272 */
+        fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:273 */
         while(1) {
           /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
@@ -10197,16 +10176,16 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:235 */
+          /* ../lib/standard/kernel.nit:242 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:272 */
+          /* ../lib/standard/collection/array.nit:273 */
           if (UNTAG_Bool(REGB1)) {
-            /* ../lib/standard/collection/array.nit:273 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
             }
-            /* ../lib/standard/collection/array.nit:724 */
+            /* ../lib/standard/collection/array.nit:725 */
             fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
             /* syntax/typing.nit:1628 */
             REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
@@ -10233,14 +10212,14 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
                goto label9;
               }
             }
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB1 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:238 */
+            /* ../lib/standard/kernel.nit:245 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:274 */
+            /* ../lib/standard/collection/array.nit:275 */
             REGB0 = REGB1;
           } else {
-            /* ../lib/standard/collection/array.nit:272 */
+            /* ../lib/standard/collection/array.nit:273 */
             goto label10;
           }
         }
@@ -10325,7 +10304,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
       REGB0 = TAG_Int(41);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -10337,7 +10316,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
@@ -10357,7 +10336,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("Type error: cannot instantiate the nullable type ");
       REGB0 = TAG_Int(49);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
     } else fra.me.REG[4] = once_value_4;
@@ -10368,7 +10347,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_5 = fra.me.REG[4];
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
@@ -10397,7 +10376,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_7) {
         fra.me.REG[3] = BOX_NativeString("init");
         REGB0 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_7 = fra.me.REG[3];
         register_static_object(&once_value_7);
       } else fra.me.REG[3] = once_value_7;
@@ -10451,7 +10430,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_8) {
       fra.me.REG[3] = BOX_NativeString("Error: ");
       REGB1 = TAG_Int(7);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_8 = fra.me.REG[3];
       register_static_object(&once_value_8);
     } else fra.me.REG[3] = once_value_8;
@@ -10463,7 +10442,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_9) {
       fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
       REGB1 = TAG_Int(22);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_9 = fra.me.REG[3];
       register_static_object(&once_value_9);
     } else fra.me.REG[3] = once_value_9;
@@ -10487,7 +10466,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_10) {
       fra.me.REG[4] = BOX_NativeString("Error: ");
       REGB1 = TAG_Int(7);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_10 = fra.me.REG[4];
       register_static_object(&once_value_10);
     } else fra.me.REG[4] = once_value_10;
@@ -10499,7 +10478,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_11) {
       fra.me.REG[4] = BOX_NativeString(" is not a constructor in ");
       REGB1 = TAG_Int(25);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_11 = fra.me.REG[4];
       register_static_object(&once_value_11);
     } else fra.me.REG[4] = once_value_11;
@@ -10511,7 +10490,7 @@ void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_12) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_12 = fra.me.REG[4];
       register_static_object(&once_value_12);
     } else fra.me.REG[4] = once_value_12;
@@ -10673,7 +10652,7 @@ void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
         REGB1 = TAG_Int(33);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
@@ -10684,7 +10663,7 @@ void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" in a method.");
         REGB1 = TAG_Int(13);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
@@ -10704,7 +10683,7 @@ void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("Error: constructor ");
           REGB1 = TAG_Int(19);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
           once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
         } else fra.me.REG[5] = once_value_4;
@@ -10715,7 +10694,7 @@ void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
           REGB1 = TAG_Int(26);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -10858,7 +10837,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
       if (!once_value_2) {
         fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
         REGB1 = TAG_Int(33);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_2 = fra.me.REG[6];
         register_static_object(&once_value_2);
       } else fra.me.REG[6] = once_value_2;
@@ -10869,7 +10848,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[6] = BOX_NativeString(" in a method.");
         REGB1 = TAG_Int(13);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
         once_value_3 = fra.me.REG[6];
         register_static_object(&once_value_3);
       } else fra.me.REG[6] = once_value_3;
@@ -10889,7 +10868,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
         if (!once_value_4) {
           fra.me.REG[6] = BOX_NativeString("Error: constructor ");
           REGB1 = TAG_Int(19);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
           once_value_4 = fra.me.REG[6];
           register_static_object(&once_value_4);
         } else fra.me.REG[6] = once_value_4;
@@ -10900,7 +10879,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
         if (!once_value_5) {
           fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
           REGB1 = TAG_Int(26);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
           once_value_5 = fra.me.REG[6];
           register_static_object(&once_value_5);
         } else fra.me.REG[6] = once_value_5;
@@ -10975,7 +10954,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
   if (!once_value_6) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB2 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
     once_value_6 = fra.me.REG[6];
     register_static_object(&once_value_6);
   } else fra.me.REG[6] = once_value_6;
@@ -10987,7 +10966,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
   if (!once_value_7) {
     fra.me.REG[6] = BOX_NativeString("=");
     REGB2 = TAG_Int(1);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
     once_value_7 = fra.me.REG[6];
     register_static_object(&once_value_7);
   } else fra.me.REG[6] = once_value_7;
@@ -11016,7 +10995,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
       if (!once_value_8) {
         fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
         REGB0 = TAG_Int(33);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_8 = fra.me.REG[4];
         register_static_object(&once_value_8);
       } else fra.me.REG[4] = once_value_8;
@@ -11027,7 +11006,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
       if (!once_value_9) {
         fra.me.REG[4] = BOX_NativeString(" in a method.");
         REGB0 = TAG_Int(13);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_9 = fra.me.REG[4];
         register_static_object(&once_value_9);
       } else fra.me.REG[4] = once_value_9;
@@ -11047,7 +11026,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
         if (!once_value_10) {
           fra.me.REG[4] = BOX_NativeString("Error: constructor ");
           REGB0 = TAG_Int(19);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
           once_value_10 = fra.me.REG[4];
           register_static_object(&once_value_10);
         } else fra.me.REG[4] = once_value_10;
@@ -11058,7 +11037,7 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
         if (!once_value_11) {
           fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
           REGB0 = TAG_Int(26);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_11 = fra.me.REG[5];
           register_static_object(&once_value_11);
         } else fra.me.REG[5] = once_value_11;
@@ -11122,7 +11101,7 @@ val_t syntax___typing___AEqExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("==");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11217,7 +11196,7 @@ void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
       REGB0 = TAG_Int(59);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -11238,7 +11217,7 @@ void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
         REGB0 = TAG_Int(45);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_3 = fra.me.REG[1];
         register_static_object(&once_value_3);
       } else fra.me.REG[1] = once_value_3;
@@ -11345,7 +11324,7 @@ val_t syntax___typing___ANeExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("!=");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11440,7 +11419,7 @@ void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
       REGB0 = TAG_Int(59);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
@@ -11461,7 +11440,7 @@ void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
         REGB0 = TAG_Int(45);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_3 = fra.me.REG[1];
         register_static_object(&once_value_3);
       } else fra.me.REG[1] = once_value_3;
@@ -11568,7 +11547,7 @@ val_t syntax___typing___ALtExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("<");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11604,7 +11583,7 @@ val_t syntax___typing___ALeExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("<=");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11640,7 +11619,7 @@ val_t syntax___typing___ALlExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("<<");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11676,7 +11655,7 @@ val_t syntax___typing___AGtExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString(">");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11712,7 +11691,7 @@ val_t syntax___typing___AGeExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString(">=");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11748,7 +11727,7 @@ val_t syntax___typing___AGgExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString(">>");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11784,7 +11763,7 @@ val_t syntax___typing___APlusExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("+");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11820,7 +11799,7 @@ val_t syntax___typing___AMinusExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("-");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11856,7 +11835,7 @@ val_t syntax___typing___AStarshipExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("<=>");
       REGB0 = TAG_Int(3);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11892,7 +11871,7 @@ val_t syntax___typing___AStarExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("*");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11928,7 +11907,7 @@ val_t syntax___typing___ASlashExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("/");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -11964,7 +11943,7 @@ val_t syntax___typing___APercentExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("%");
       REGB0 = TAG_Int(1);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -12000,7 +11979,7 @@ val_t syntax___typing___AUminusExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("unary -");
       REGB0 = TAG_Int(7);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -12119,7 +12098,7 @@ void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
           if (!once_value_1) {
             fra.me.REG[6] = BOX_NativeString("Error: ");
             REGB0 = TAG_Int(7);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_1 = fra.me.REG[6];
             register_static_object(&once_value_1);
           } else fra.me.REG[6] = once_value_1;
@@ -12130,7 +12109,7 @@ void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
           if (!once_value_2) {
             fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
             REGB0 = TAG_Int(29);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
             once_value_2 = fra.me.REG[4];
             register_static_object(&once_value_2);
           } else fra.me.REG[4] = once_value_2;
@@ -12148,7 +12127,7 @@ void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
         ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
       }
       /* syntax/typing.nit:1878 */
-      CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
+      CALL_parser___parser_nodes___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
       /* syntax/typing.nit:1879 */
       CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
       /* syntax/typing.nit:1880 */
@@ -12323,7 +12302,7 @@ val_t syntax___typing___ACallAssignExpr___name(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("=");
     REGB0 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -12450,7 +12429,7 @@ val_t syntax___typing___ABraExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("[]");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -12540,7 +12519,7 @@ val_t syntax___typing___ABraAssignExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("[]=");
       REGB0 = TAG_Int(3);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -12602,7 +12581,7 @@ val_t syntax___typing___ABraReassignExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("[]");
       REGB0 = TAG_Int(2);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -12659,7 +12638,7 @@ val_t syntax___typing___AInitExpr___name(val_t p0){
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("init");
       REGB0 = TAG_Int(4);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
@@ -12988,7 +12967,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ../lib/standard/kernel.nit:230 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* syntax/typing.nit:2016 */
     REGB2 = REGB1;
@@ -13001,7 +12980,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("Error: ");
       REGB2 = TAG_Int(7);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
@@ -13013,7 +12992,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
       REGB2 = TAG_Int(36);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -13026,7 +13005,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString(" found.");
       REGB2 = TAG_Int(7);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -13057,26 +13036,22 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
   REGB2 = TAG_Int(0);
   fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
-  /* ../lib/standard/kernel.nit:355 */
+  /* ../lib/standard/kernel.nit:404 */
   while(1) {
     REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/kernel.nit:355 */
+    /* ../lib/standard/kernel.nit:404 */
     if (UNTAG_Bool(REGB0)) {
       /* syntax/typing.nit:2028 */
       REGB0 = REGB2;
       /* syntax/typing.nit:2029 */
       fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
-      REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
-      if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2029);
-      }
       fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
       fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
@@ -13094,14 +13069,14 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
       /* syntax/typing.nit:2032 */
       fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
       CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ../lib/standard/kernel.nit:357 */
+      /* ../lib/standard/kernel.nit:406 */
       REGB2 = REGB0;
     } else {
-      /* ../lib/standard/kernel.nit:355 */
+      /* ../lib/standard/kernel.nit:404 */
       goto label5;
     }
   }
@@ -13118,7 +13093,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
   REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    /* ../lib/standard/kernel.nit:198 */
+    /* ../lib/standard/kernel.nit:199 */
     REGB1 = TAG_Bool((REGB2)==(REGB1));
     /* syntax/typing.nit:2038 */
     REGB0 = REGB1;
@@ -13146,7 +13121,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
       if (!once_value_6) {
         fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
         REGB0 = TAG_Int(77);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
         once_value_6 = fra.me.REG[3];
         register_static_object(&once_value_6);
       } else fra.me.REG[3] = once_value_6;
@@ -13180,7 +13155,7 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
         if (!once_value_7) {
           fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
           REGB0 = TAG_Int(80);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
           once_value_7 = fra.me.REG[2];
           register_static_object(&once_value_7);
         } else fra.me.REG[2] = once_value_7;
@@ -13262,7 +13237,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
       REGB0 = TAG_Int(33);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -13273,7 +13248,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
@@ -13302,7 +13277,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
           REGB0 = TAG_Int(33);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
         } else fra.me.REG[5] = once_value_4;
@@ -13313,7 +13288,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString(" since it is a ");
           REGB0 = TAG_Int(15);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
@@ -13324,7 +13299,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_6 = fra.me.REG[5];
           register_static_object(&once_value_6);
         } else fra.me.REG[5] = once_value_6;
@@ -13343,7 +13318,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
         if (!once_value_7) {
           fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
           REGB0 = TAG_Int(50);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_7 = fra.me.REG[5];
           register_static_object(&once_value_7);
         } else fra.me.REG[5] = once_value_7;
@@ -13354,7 +13329,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
         if (!once_value_8) {
           fra.me.REG[5] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
           once_value_8 = fra.me.REG[5];
           register_static_object(&once_value_8);
         } else fra.me.REG[5] = once_value_8;
@@ -13396,7 +13371,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
               if (!once_value_9) {
                fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
                REGB0 = TAG_Int(26);
-               fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+               fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
                once_value_9 = fra.me.REG[3];
                register_static_object(&once_value_9);
               } else fra.me.REG[3] = once_value_9;
@@ -13407,7 +13382,7 @@ void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_
               if (!once_value_10) {
                fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
                REGB0 = TAG_Int(32);
-               fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+               fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
                once_value_10 = fra.me.REG[3];
                register_static_object(&once_value_10);
               } else fra.me.REG[3] = once_value_10;
@@ -13582,7 +13557,7 @@ void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
       REGB0 = TAG_Int(43);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -13600,7 +13575,7 @@ void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
         REGB0 = TAG_Int(45);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
         once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
@@ -13744,7 +13719,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* syntax/typing.nit:2146 */
   if (UNTAG_Bool(REGB1)) {
@@ -13752,7 +13727,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
       REGB1 = TAG_Int(34);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
@@ -13762,7 +13737,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   /* syntax/typing.nit:2149 */
   REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
   /* syntax/typing.nit:2149 */
   CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
@@ -13771,7 +13746,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   /* syntax/typing.nit:2153 */
   REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:240 */
+  /* ../lib/standard/kernel.nit:247 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* syntax/typing.nit:2153 */
   CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
@@ -13837,7 +13812,7 @@ void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Warning: Expression is a ");
       REGB0 = TAG_Int(25);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
@@ -13848,7 +13823,7 @@ void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString(", expected ");
       REGB0 = TAG_Int(11);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
       once_value_3 = fra.me.REG[2];
       register_static_object(&once_value_3);
     } else fra.me.REG[2] = once_value_3;
@@ -13859,7 +13834,7 @@ void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
       once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
     } else fra.me.REG[3] = once_value_4;
index f9c7fbe..86a28dd 100644 (file)
@@ -16,3 +16,313 @@ void Sys_nanosleep___out( val_t recv, val_t sec, val_t nanosec )
 std_nanosleep( NULL, UNTAG_Int(sec), UNTAG_Int(nanosec) );
 nitni_local_ref_clean(  );
 }
+/* out/indirect function for time::TimeT::init */
+val_t NEW_TimeT_standard___time___TimeT___init(  )
+{
+time_t orig_return;
+val_t trans_return;
+orig_return = new_TimeT___impl(  );
+trans_return = BOX_TimeT(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::TimeT::from_i */
+val_t NEW_TimeT_standard___time___TimeT___from_i( val_t i )
+{
+time_t orig_return;
+val_t trans_return;
+orig_return = new_TimeT_from_i___impl( UNTAG_Int(i) );
+trans_return = BOX_TimeT(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::TimeT::update */
+void TimeT_update___out( val_t recv )
+{
+time_t trans_recv;
+trans_recv = UNBOX_TimeT(recv);
+TimeT_update___impl( trans_recv );
+nitni_local_ref_clean(  );
+}
+/* out/indirect function for time::TimeT::ctime */
+val_t TimeT_ctime___out( val_t recv )
+{
+time_t trans_recv;
+String orig_return;
+val_t trans_return;
+trans_recv = UNBOX_TimeT(recv);
+orig_return = malloc( sizeof( struct s_String ) );
+orig_return->ref.val = NIT_NULL;
+orig_return->ref.count = 0;
+orig_return = TimeT_ctime___impl( trans_recv );
+trans_return = orig_return->ref.val;
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::TimeT::difftime */
+val_t TimeT_difftime___out( val_t recv, val_t start )
+{
+time_t trans_recv;
+time_t trans___start;
+float orig_return;
+val_t trans_return;
+trans_recv = UNBOX_TimeT(recv);
+trans___start = UNBOX_TimeT(start);
+orig_return = TimeT_difftime___impl( trans_recv, trans___start );
+trans_return = BOX_Float(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::TimeT::to_i */
+val_t TimeT_to_i___out( val_t recv )
+{
+time_t trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_TimeT(recv);
+orig_return = TimeT_to_i___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::gmtime */
+val_t NEW_Tm_standard___time___Tm___gmtime(  )
+{
+struct tm * orig_return;
+val_t trans_return;
+orig_return = new_Tm_gmtime___impl(  );
+trans_return = BOX_Tm(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::gmtime_from_timet */
+val_t NEW_Tm_standard___time___Tm___gmtime_from_timet( val_t t )
+{
+time_t trans___t;
+struct tm * orig_return;
+val_t trans_return;
+trans___t = UNBOX_TimeT(t);
+orig_return = new_Tm_gmtime_from_timet___impl( trans___t );
+trans_return = BOX_Tm(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::localtime */
+val_t NEW_Tm_standard___time___Tm___localtime(  )
+{
+struct tm * orig_return;
+val_t trans_return;
+orig_return = new_Tm_localtime___impl(  );
+trans_return = BOX_Tm(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::localtime_from_timet */
+val_t NEW_Tm_standard___time___Tm___localtime_from_timet( val_t t )
+{
+time_t trans___t;
+struct tm * orig_return;
+val_t trans_return;
+trans___t = UNBOX_TimeT(t);
+orig_return = new_Tm_localtime_from_timet___impl( trans___t );
+trans_return = BOX_Tm(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::to_timet */
+val_t Tm_to_timet___out( val_t recv )
+{
+struct tm * trans_recv;
+time_t orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_to_timet___impl( trans_recv );
+trans_return = BOX_TimeT(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::sec */
+val_t Tm_sec___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_sec___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::min */
+val_t Tm_min___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_min___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::hour */
+val_t Tm_hour___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_hour___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::mday */
+val_t Tm_mday___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_mday___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::mon */
+val_t Tm_mon___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_mon___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::year */
+val_t Tm_year___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_year___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::wday */
+val_t Tm_wday___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_wday___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::yday */
+val_t Tm_yday___out( val_t recv )
+{
+struct tm * trans_recv;
+bigint orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_yday___impl( trans_recv );
+trans_return = TAG_Int(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::is_dst */
+val_t Tm_is_dst___out( val_t recv )
+{
+struct tm * trans_recv;
+int orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = Tm_is_dst___impl( trans_recv );
+trans_return = TAG_Bool(orig_return);
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::asctime */
+val_t Tm_asctime___out( val_t recv )
+{
+struct tm * trans_recv;
+String orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+orig_return = malloc( sizeof( struct s_String ) );
+orig_return->ref.val = NIT_NULL;
+orig_return->ref.count = 0;
+orig_return = Tm_asctime___impl( trans_recv );
+trans_return = orig_return->ref.val;
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* out/indirect function for time::Tm::strftime */
+val_t Tm_strftime___out( val_t recv, val_t format )
+{
+struct tm * trans_recv;
+String trans___format;
+String orig_return;
+val_t trans_return;
+trans_recv = UNBOX_Tm(recv);
+trans___format = malloc( sizeof( struct s_String ) );
+trans___format->ref.val = NIT_NULL;
+trans___format->ref.count = 0;
+nitni_local_ref_add( (struct nitni_ref *)trans___format );
+trans___format->ref.val = format;
+orig_return = malloc( sizeof( struct s_String ) );
+orig_return->ref.val = NIT_NULL;
+orig_return->ref.count = 0;
+orig_return = Tm_strftime___impl( trans_recv, trans___format );
+trans_return = orig_return->ref.val;
+nitni_local_ref_clean(  );
+return trans_return;
+}
+/* friendly for string::NativeString::to_s_with_copy */
+String time_NativeString_to_s_with_copy( char * recv )
+{
+val_t trans_recv;
+val_t orig_return;
+String trans_return;
+trans_recv = BOX_NativeString(recv);
+trans_return = malloc( sizeof( struct s_String ) );
+trans_return->ref.val = NIT_NULL;
+trans_return->ref.count = 0;
+nitni_local_ref_add( (struct nitni_ref *)trans_return );
+orig_return = CALL_standard___string___NativeString___to_s_with_copy( trans_recv )( trans_recv );
+trans_return->ref.val = orig_return;
+return trans_return;
+}
+/* friendly for string::String::to_cstring */
+char * time_String_to_cstring( String recv )
+{
+val_t trans_recv;
+val_t orig_return;
+char * trans_return;
+trans_recv = recv->ref.val;
+orig_return = CALL_standard___string___String___to_cstring( trans_recv )( trans_recv );
+trans_return = UNBOX_NativeString(orig_return);
+return trans_return;
+}
+/* friendly for string::NativeString::(string::Object::to_s) */
+String time_NativeString_to_s( char * recv )
+{
+val_t trans_recv;
+val_t orig_return;
+String trans_return;
+trans_recv = BOX_NativeString(recv);
+trans_return = malloc( sizeof( struct s_String ) );
+trans_return->ref.val = NIT_NULL;
+trans_return->ref.count = 0;
+nitni_local_ref_add( (struct nitni_ref *)trans_return );
+orig_return = CALL_standard___string___Object___to_s( trans_recv )( trans_recv );
+trans_return->ref.val = orig_return;
+return trans_return;
+}
index 841cfc5..091c12c 100644 (file)
@@ -21,11 +21,102 @@ typedef struct s_Sys *Sys;
 #define Sys_incr_ref( x ) nitni_global_ref_incr( (struct nitni_ref*)(x) )
 #define Sys_decr_ref( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )
 #endif
+#ifndef STRING_TYPE
+#define STRING_TYPE
+struct s_String{
+               struct nitni_ref ref; /* real ref struct, must be first */
+};
+typedef struct s_String *String;
+#define String_incr_ref( x ) nitni_global_ref_incr( (struct nitni_ref*)(x) )
+#define String_decr_ref( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )
+#endif
 #include "time_nit.h"
+#include <standard___time._ffi.h>
 
 /* out/indirect function for time::Object::get_time */
 val_t Object_get_time___out( val_t recv );
 
 /* out/indirect function for time::Sys::nanosleep */
 void Sys_nanosleep___out( val_t recv, val_t sec, val_t nanosec );
+
+/* out/indirect function for time::TimeT::init */
+val_t NEW_TimeT_standard___time___TimeT___init(  );
+
+/* out/indirect function for time::TimeT::from_i */
+val_t NEW_TimeT_standard___time___TimeT___from_i( val_t i );
+
+/* out/indirect function for time::TimeT::update */
+void TimeT_update___out( val_t recv );
+
+/* out/indirect function for time::TimeT::ctime */
+val_t TimeT_ctime___out( val_t recv );
+
+/* out/indirect function for time::TimeT::difftime */
+val_t TimeT_difftime___out( val_t recv, val_t start );
+
+/* out/indirect function for time::TimeT::to_i */
+val_t TimeT_to_i___out( val_t recv );
+
+/* out/indirect function for time::Tm::gmtime */
+val_t NEW_Tm_standard___time___Tm___gmtime(  );
+
+/* out/indirect function for time::Tm::gmtime_from_timet */
+val_t NEW_Tm_standard___time___Tm___gmtime_from_timet( val_t t );
+
+/* out/indirect function for time::Tm::localtime */
+val_t NEW_Tm_standard___time___Tm___localtime(  );
+
+/* out/indirect function for time::Tm::localtime_from_timet */
+val_t NEW_Tm_standard___time___Tm___localtime_from_timet( val_t t );
+
+/* out/indirect function for time::Tm::to_timet */
+val_t Tm_to_timet___out( val_t recv );
+
+/* out/indirect function for time::Tm::sec */
+val_t Tm_sec___out( val_t recv );
+
+/* out/indirect function for time::Tm::min */
+val_t Tm_min___out( val_t recv );
+
+/* out/indirect function for time::Tm::hour */
+val_t Tm_hour___out( val_t recv );
+
+/* out/indirect function for time::Tm::mday */
+val_t Tm_mday___out( val_t recv );
+
+/* out/indirect function for time::Tm::mon */
+val_t Tm_mon___out( val_t recv );
+
+/* out/indirect function for time::Tm::year */
+val_t Tm_year___out( val_t recv );
+
+/* out/indirect function for time::Tm::wday */
+val_t Tm_wday___out( val_t recv );
+
+/* out/indirect function for time::Tm::yday */
+val_t Tm_yday___out( val_t recv );
+
+/* out/indirect function for time::Tm::is_dst */
+val_t Tm_is_dst___out( val_t recv );
+
+/* out/indirect function for time::Tm::asctime */
+val_t Tm_asctime___out( val_t recv );
+
+/* out/indirect function for time::Tm::strftime */
+val_t Tm_strftime___out( val_t recv, val_t format );
+/* friendly for string::NativeString::to_s_with_copy */
+String time_NativeString_to_s_with_copy( char * recv );
+#ifndef NativeString_to_s_with_copy
+#define NativeString_to_s_with_copy time_NativeString_to_s_with_copy
+#endif
+/* friendly for string::String::to_cstring */
+char * time_String_to_cstring( String recv );
+#ifndef String_to_cstring
+#define String_to_cstring time_String_to_cstring
+#endif
+/* friendly for string::NativeString::(string::Object::to_s) */
+String time_NativeString_to_s( char * recv );
+#ifndef NativeString_to_s
+#define NativeString_to_s time_NativeString_to_s
+#endif
 #endif
index e2bac90..128dba1 100644 (file)
@@ -178,7 +178,7 @@ val_t toolcontext___Message___to_s(val_t p0){
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
       once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
@@ -189,7 +189,7 @@ val_t toolcontext___Message___to_s(val_t p0){
     if (!once_value_3) {
       fra.me.REG[1] = BOX_NativeString(": ");
       REGB0 = TAG_Int(2);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
       once_value_3 = fra.me.REG[1];
       register_static_object(&once_value_3);
     } else fra.me.REG[1] = once_value_3;
@@ -200,7 +200,7 @@ val_t toolcontext___Message___to_s(val_t p0){
     if (!once_value_4) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
       once_value_4 = fra.me.REG[0];
       register_static_object(&once_value_4);
     } else fra.me.REG[0] = once_value_4;
@@ -259,7 +259,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   fra.me.REG[0] = p0;
   /* toolcontext.nit:52 */
   REGB0 = TAG_Int(27);
-  /* ../lib/standard/kernel.nit:300 */
+  /* ../lib/standard/kernel.nit:318 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
   /* toolcontext.nit:53 */
   REGB1 = TAG_Int(3);
@@ -267,7 +267,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
@@ -278,7 +278,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("[0;31m");
     REGB1 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_2 = fra.me.REG[2];
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
@@ -291,7 +291,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
   } else fra.me.REG[2] = once_value_3;
@@ -302,7 +302,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("[1;31m");
     REGB1 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
@@ -315,7 +315,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_5 = fra.me.REG[2];
     register_static_object(&once_value_5);
   } else fra.me.REG[2] = once_value_5;
@@ -326,7 +326,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_6) {
     fra.me.REG[2] = BOX_NativeString("[0;32m");
     REGB1 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_6 = fra.me.REG[2];
     register_static_object(&once_value_6);
   } else fra.me.REG[2] = once_value_6;
@@ -339,7 +339,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
   } else fra.me.REG[2] = once_value_7;
@@ -350,7 +350,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_8) {
     fra.me.REG[2] = BOX_NativeString("[0;33m");
     REGB1 = TAG_Int(6);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB1);
     once_value_8 = fra.me.REG[2];
     register_static_object(&once_value_8);
   } else fra.me.REG[2] = once_value_8;
@@ -363,7 +363,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_9) {
     fra.me.REG[3] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
     once_value_9 = fra.me.REG[3];
     register_static_object(&once_value_9);
   } else fra.me.REG[3] = once_value_9;
@@ -374,7 +374,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
   if (!once_value_10) {
     fra.me.REG[3] = BOX_NativeString("[0m");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
     once_value_10 = fra.me.REG[3];
     register_static_object(&once_value_10);
   } else fra.me.REG[3] = once_value_10;
@@ -426,7 +426,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_12) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_12 = fra.me.REG[6];
         register_static_object(&once_value_12);
       } else fra.me.REG[6] = once_value_12;
@@ -436,7 +436,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_13) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_13 = fra.me.REG[6];
         register_static_object(&once_value_13);
       } else fra.me.REG[6] = once_value_13;
@@ -447,7 +447,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_14) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_14 = fra.me.REG[6];
         register_static_object(&once_value_14);
       } else fra.me.REG[6] = once_value_14;
@@ -457,7 +457,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_15) {
         fra.me.REG[6] = BOX_NativeString(": ");
         REGB0 = TAG_Int(2);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_15 = fra.me.REG[6];
         register_static_object(&once_value_15);
       } else fra.me.REG[6] = once_value_15;
@@ -468,7 +468,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_16) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_16 = fra.me.REG[6];
         register_static_object(&once_value_16);
       } else fra.me.REG[6] = once_value_16;
@@ -484,7 +484,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_17) {
         fra.me.REG[6] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
         once_value_17 = fra.me.REG[6];
         register_static_object(&once_value_17);
       } else fra.me.REG[6] = once_value_17;
@@ -494,7 +494,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_18) {
         fra.me.REG[1] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_18 = fra.me.REG[1];
         register_static_object(&once_value_18);
       } else fra.me.REG[1] = once_value_18;
@@ -505,7 +505,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_19) {
         fra.me.REG[1] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
         once_value_19 = fra.me.REG[1];
         register_static_object(&once_value_19);
       } else fra.me.REG[1] = once_value_19;
@@ -515,7 +515,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_20) {
         fra.me.REG[2] = BOX_NativeString(": ");
         REGB0 = TAG_Int(2);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
         once_value_20 = fra.me.REG[2];
         register_static_object(&once_value_20);
       } else fra.me.REG[2] = once_value_20;
@@ -526,7 +526,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_21) {
         fra.me.REG[0] = BOX_NativeString("\n");
         REGB0 = TAG_Int(1);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_21 = fra.me.REG[0];
         register_static_object(&once_value_21);
       } else fra.me.REG[0] = once_value_21;
@@ -535,7 +535,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_22) {
         fra.me.REG[0] = BOX_NativeString("1;31");
         REGB0 = TAG_Int(4);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_22 = fra.me.REG[0];
         register_static_object(&once_value_22);
       } else fra.me.REG[0] = once_value_22;
@@ -549,7 +549,7 @@ val_t toolcontext___Message___to_color_string(val_t p0){
       if (!once_value_23) {
         fra.me.REG[0] = BOX_NativeString("");
         REGB0 = TAG_Int(0);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
         once_value_23 = fra.me.REG[0];
         register_static_object(&once_value_23);
       } else fra.me.REG[0] = once_value_23;
@@ -708,7 +708,7 @@ void toolcontext___ToolContext___check_errors(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* toolcontext.nit:87 */
   if (UNTAG_Bool(REGB1)) {
@@ -733,18 +733,18 @@ void toolcontext___ToolContext___check_errors(val_t p0){
       nit_abort("Uninitialized attribute %s", "_messages", LOCATE_toolcontext, 90);
     }
     fra.me.REG[2] = ATTR_toolcontext___ToolContext____messages(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:269 */
-    REGB1 = TAG_Int(0);
     /* ../lib/standard/collection/array.nit:270 */
+    REGB1 = TAG_Int(0);
+    /* ../lib/standard/collection/array.nit:271 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ../lib/standard/collection/array.nit:271 */
-    fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     /* ../lib/standard/collection/array.nit:272 */
+    fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    /* ../lib/standard/collection/array.nit:273 */
     while(1) {
       /* ../lib/standard/collection/array.nit:24 */
       REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
@@ -758,16 +758,16 @@ void toolcontext___ToolContext___check_errors(val_t p0){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ../lib/standard/kernel.nit:235 */
+      /* ../lib/standard/kernel.nit:242 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       if (UNTAG_Bool(REGB0)) {
-        /* ../lib/standard/collection/array.nit:273 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
         }
-        /* ../lib/standard/collection/array.nit:724 */
+        /* ../lib/standard/collection/array.nit:725 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
         /* toolcontext.nit:91 */
         fra.me.REG[4] = CALL_toolcontext___ToolContext___opt_no_color(fra.me.REG[0])(fra.me.REG[0]);
@@ -780,7 +780,7 @@ void toolcontext___ToolContext___check_errors(val_t p0){
           if (!once_value_1) {
             fra.me.REG[6] = BOX_NativeString("");
             REGB0 = TAG_Int(0);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_1 = fra.me.REG[6];
             register_static_object(&once_value_1);
           } else fra.me.REG[6] = once_value_1;
@@ -791,7 +791,7 @@ void toolcontext___ToolContext___check_errors(val_t p0){
           if (!once_value_2) {
             fra.me.REG[6] = BOX_NativeString("\n");
             REGB0 = TAG_Int(1);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_2 = fra.me.REG[6];
             register_static_object(&once_value_2);
           } else fra.me.REG[6] = once_value_2;
@@ -807,7 +807,7 @@ void toolcontext___ToolContext___check_errors(val_t p0){
           if (!once_value_3) {
             fra.me.REG[6] = BOX_NativeString("");
             REGB0 = TAG_Int(0);
-            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
             once_value_3 = fra.me.REG[6];
             register_static_object(&once_value_3);
           } else fra.me.REG[6] = once_value_3;
@@ -818,7 +818,7 @@ void toolcontext___ToolContext___check_errors(val_t p0){
           if (!once_value_4) {
             fra.me.REG[3] = BOX_NativeString("\n");
             REGB0 = TAG_Int(1);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+            fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
             once_value_4 = fra.me.REG[3];
             register_static_object(&once_value_4);
           } else fra.me.REG[3] = once_value_4;
@@ -827,14 +827,14 @@ void toolcontext___ToolContext___check_errors(val_t p0){
           fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
           CALL_standard___stream___OStream___write(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
         }
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:238 */
+        /* ../lib/standard/kernel.nit:245 */
         REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-        /* ../lib/standard/collection/array.nit:274 */
+        /* ../lib/standard/collection/array.nit:275 */
         REGB1 = REGB0;
       } else {
-        /* ../lib/standard/collection/array.nit:272 */
+        /* ../lib/standard/collection/array.nit:273 */
         goto label5;
       }
     }
@@ -856,7 +856,7 @@ void toolcontext___ToolContext___check_errors(val_t p0){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:237 */
+  /* ../lib/standard/kernel.nit:244 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
   /* toolcontext.nit:101 */
   if (UNTAG_Bool(REGB0)) {
@@ -903,7 +903,7 @@ void toolcontext___ToolContext___error(val_t p0, val_t p1, val_t p2){
   }
   REGB0 = ATTR_toolcontext___ToolContext____error_count(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* toolcontext.nit:108 */
   ATTR_toolcontext___ToolContext____error_count(fra.me.REG[0]) = REGB1;
@@ -978,7 +978,7 @@ void toolcontext___ToolContext___warning(val_t p0, val_t p1, val_t p2){
       REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     } else {
-      /* ../lib/standard/kernel.nit:230 */
+      /* ../lib/standard/kernel.nit:237 */
       REGB0 = TAG_Bool((fra.me.REG[3])==(REGB0));
       /* toolcontext.nit:122 */
       REGB1 = REGB0;
@@ -1004,7 +1004,7 @@ void toolcontext___ToolContext___warning(val_t p0, val_t p1, val_t p2){
   }
   REGB1 = ATTR_toolcontext___ToolContext____warning_count(fra.me.REG[0]);
   REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:238 */
+  /* ../lib/standard/kernel.nit:245 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
   /* toolcontext.nit:124 */
   ATTR_toolcontext___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
@@ -1048,7 +1048,7 @@ void toolcontext___ToolContext___info(val_t p0, val_t p1, val_t p2){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ../lib/standard/kernel.nit:234 */
+  /* ../lib/standard/kernel.nit:241 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
   /* toolcontext.nit:131 */
   if (UNTAG_Bool(REGB1)) {
@@ -1058,7 +1058,7 @@ void toolcontext___ToolContext___info(val_t p0, val_t p1, val_t p2){
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
       once_value_1 = fra.me.REG[3];
       register_static_object(&once_value_1);
     } else fra.me.REG[3] = once_value_1;
@@ -1068,7 +1068,7 @@ void toolcontext___ToolContext___info(val_t p0, val_t p1, val_t p2){
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
index 2e4583b..5d96c20 100644 (file)
@@ -40,18 +40,18 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
   fra.me.REG[2] = fra.me.REG[2];
   /* utils.nit:27 */
   fra.me.REG[0] = NEW_Buffer_standard___string___Buffer___init();
-  /* ../lib/standard/collection/array.nit:269 */
-  REGB0 = TAG_Int(0);
   /* ../lib/standard/collection/array.nit:270 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:271 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:271 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   /* ../lib/standard/collection/array.nit:272 */
+  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  /* ../lib/standard/collection/array.nit:273 */
   while(1) {
     /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -65,16 +65,16 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ../lib/standard/kernel.nit:235 */
+    /* ../lib/standard/kernel.nit:242 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:272 */
+    /* ../lib/standard/collection/array.nit:273 */
     if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:273 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
       }
-      /* ../lib/standard/collection/array.nit:724 */
+      /* ../lib/standard/collection/array.nit:725 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* utils.nit:29 */
       REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
@@ -99,14 +99,14 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
       /* utils.nit:36 */
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_utils___Object___cmangle_2));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:238 */
+      /* ../lib/standard/kernel.nit:245 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:274 */
+      /* ../lib/standard/collection/array.nit:275 */
       REGB0 = REGB1;
     } else {
-      /* ../lib/standard/collection/array.nit:272 */
+      /* ../lib/standard/collection/array.nit:273 */
       goto label3;
     }
   }
@@ -143,7 +143,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ../lib/standard/kernel.nit:387 */
+        /* ../lib/standard/kernel.nit:440 */
         REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
         /* utils.nit:38 */
         if (UNTAG_Bool(REGB1)) {
@@ -153,7 +153,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:385 */
+          /* ../lib/standard/kernel.nit:438 */
           REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
         } else {
           /* utils.nit:38 */
@@ -169,7 +169,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:387 */
+          /* ../lib/standard/kernel.nit:440 */
           REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
           /* utils.nit:38 */
           if (UNTAG_Bool(REGB2)) {
@@ -179,7 +179,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:385 */
+            /* ../lib/standard/kernel.nit:438 */
             REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
           } else {
             /* utils.nit:38 */
@@ -197,7 +197,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ../lib/standard/kernel.nit:387 */
+          /* ../lib/standard/kernel.nit:440 */
           REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
           /* utils.nit:38 */
           if (UNTAG_Bool(REGB2)) {
@@ -207,7 +207,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
             } else {
               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
             }
-            /* ../lib/standard/kernel.nit:385 */
+            /* ../lib/standard/kernel.nit:438 */
             REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
           } else {
             /* utils.nit:38 */
@@ -231,7 +231,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
           if (UNTAG_Bool(REGB2)) {
           } else {
-            /* ../lib/standard/kernel.nit:381 */
+            /* ../lib/standard/kernel.nit:434 */
             REGB1 = TAG_Bool((REGB0)==(REGB1));
             /* utils.nit:42 */
             REGB2 = REGB1;
@@ -314,7 +314,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("plus");
     REGB1 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -325,7 +325,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("minus");
     REGB1 = TAG_Int(5);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_2 = fra.me.REG[1];
     register_static_object(&once_value_2);
   } else fra.me.REG[1] = once_value_2;
@@ -336,7 +336,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_3) {
     fra.me.REG[1] = BOX_NativeString("star");
     REGB1 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_3 = fra.me.REG[1];
     register_static_object(&once_value_3);
   } else fra.me.REG[1] = once_value_3;
@@ -347,7 +347,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_4) {
     fra.me.REG[1] = BOX_NativeString("slash");
     REGB1 = TAG_Int(5);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_4 = fra.me.REG[1];
     register_static_object(&once_value_4);
   } else fra.me.REG[1] = once_value_4;
@@ -358,7 +358,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_5) {
     fra.me.REG[1] = BOX_NativeString("percent");
     REGB1 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_5 = fra.me.REG[1];
     register_static_object(&once_value_5);
   } else fra.me.REG[1] = once_value_5;
@@ -369,7 +369,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_6) {
     fra.me.REG[1] = BOX_NativeString("bra");
     REGB1 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_6 = fra.me.REG[1];
     register_static_object(&once_value_6);
   } else fra.me.REG[1] = once_value_6;
@@ -380,7 +380,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_7) {
     fra.me.REG[1] = BOX_NativeString("eq");
     REGB1 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_7 = fra.me.REG[1];
     register_static_object(&once_value_7);
   } else fra.me.REG[1] = once_value_7;
@@ -391,7 +391,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_8) {
     fra.me.REG[1] = BOX_NativeString("l");
     REGB1 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_8 = fra.me.REG[1];
     register_static_object(&once_value_8);
   } else fra.me.REG[1] = once_value_8;
@@ -402,7 +402,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_9) {
     fra.me.REG[1] = BOX_NativeString("g");
     REGB1 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_9 = fra.me.REG[1];
     register_static_object(&once_value_9);
   } else fra.me.REG[1] = once_value_9;
@@ -413,7 +413,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_10) {
     fra.me.REG[1] = BOX_NativeString("n");
     REGB1 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_10 = fra.me.REG[1];
     register_static_object(&once_value_10);
   } else fra.me.REG[1] = once_value_10;
@@ -424,7 +424,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_11) {
     fra.me.REG[1] = BOX_NativeString("u");
     REGB1 = TAG_Int(1);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_11 = fra.me.REG[1];
     register_static_object(&once_value_11);
   } else fra.me.REG[1] = once_value_11;
@@ -435,7 +435,7 @@ val_t utils___Object___cmangle_table(val_t p0){
   if (!once_value_12) {
     fra.me.REG[1] = BOX_NativeString("at");
     REGB1 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
+    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
     once_value_12 = fra.me.REG[1];
     register_static_object(&once_value_12);
   } else fra.me.REG[1] = once_value_12;